一,for循环:
1,功能:重复执行同一段代码
语法:
for index in range(n):
# 循环体代码
index : 用来依次接收可迭代对象中的元素的变量名
range()函数:负责返回整数序列
流程图:
2,应用
range可以同时指定start 和stop,用for遍历并打印
1 2 3 4 |
# 指定 start和stop
# print的参数 end=" " 用来使打印不换行
for num in range ( 3 , 9 ):
print (num, end = " " )
|
运行结果:
3 4 5 6 7 8
说明:刘宏缔的架构森林—专注it技术的博客,
网址:https://imgtouch.com
本文: https://blog.imgtouch.com/index.php/2024/03/13/python-suan-fa-bai-qian-mai-bai-ji/
代码: https://github.com/liuhongdi/ 或 https://gitee.com/liuhongdi
说明:作者:刘宏缔 邮箱: [email protected]
二,百钱买百鸡题目与分析
1,题目:
用一百块钱去买一百只鸡,
公鸡5块钱1只,
母鸡3块钱1只,
小 鸡1块钱3只。
请问一百块能买到公鸡,母鸡,小鸡各多少只?
2,分析:
思路:
100块钱买一种鸡最多能买多 少只?
买公鸡最多只能买20只,
母鸡能买33只,
小鸡能买300只,但鸡的数量限定在100只
公鸡数量+母鸡数量+小鸡数量 =100只。
在确定一种鸡的数量下去求另外两种鸡的数量组合。
这种穷举方式非常适合用循环 来解决
三,代码实现:
1,两层循环:
1 2 3 4 5 6 |
# 百钱买百鸡问题
for x in range ( 21 ): # 公鸡最多可以买20只
for y in range ( 34 ): # 母鸡最多可以买33只
z = 100 - x - y # 小鸡的数量等于100-x-y
if z % 3 = = 0 and ( 5 * x + 3 * y + z / / 3 = = 100 ):
print (f '公:{x},母:{y},小:{z}' )
|
运行结果:
公:0,母:25,小:75
公:4,母:18,小:78
公:8,母:11,小:81
公:12,母:4,小:84
2,一层循环
两次循环的性能仍然可以优化,因为有这个方程存在:
x+y+z = 100
5*x+3*y+z/3 = 100
所以我们可以通过解方程得到y与x之间的关系,
这样就可以减少一层循环
1 2 3 4 5 6 |
for x in range ( 0 , 21 ):
y = ( 200 - 14 * x) / 8 # 根据解方程得到y值
if y > 0 and y = = int (y): # 如果y为正数且为整数
z = 100 - x - y # 得到小鸡数量
if z > 0 :
print (f '公:{x},母:{int(y)},小:{int(z)}' )
|
运行结果:
公:0,母:25,小:75
公:4,母:18,小:78
公:8,母:11,小:81
公:12,母:4,小:84
标签:python,百钱,小鸡,买百鸡,range,print,100,com
From: https://www.cnblogs.com/architectforest/p/18193295