一,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/20/python-suan-fa-ma-ke-si-de-shu-xue-ti/
代码: https://github.com/liuhongdi/ 或 https://gitee.com/liuhongdi
说明:作者:刘宏缔 邮箱: [email protected]
二,题目与分析:
1,题目:
马克思手稿中有一道趣味数学问题:有30个人,其中有男人、女人和小孩,他们在同一家饭馆吃饭,总共花了50先令。
已知每个男人吃饭需要花3先令,每个女人吃饭需要花2先令,每个小孩吃饭需要花1先令,请编程求出男人、女人和小孩各有几人?
2,分析:
思路:
设变量x、y和z分别代表男人、女人和小孩,则由题目的要求,可得到右侧的方程组。
方程①表示男人、女人和小孩加起来总共有30个人;方程②表示30个人吃饭总共花了50先令。
根据上述方程式可以得到:
2x+y=20,
则: y = 20 – 2x
可以得到x取值范围是[0,10]
可以得到y取值范围是[0,20]
然后可以遍历x的值,从而得到y,z的值,再根据方程式判断是否匹配
三,编写代码:
1, for循环一: 两遍循环
1 2 3 4 5 6 7 |
# 变量x、y和z分别代表男人、女人和小孩
for x in range ( 0 , 10 + 1 ): # x 取值范围:0到10
for y in range ( 0 , 20 + 1 ): # y 取值范围: 0 到 20
z = 30 - x - y # 根据方程①,当x、y一定时,可确定z值
# 检验,是否匹配方程②,如匹配则得到一组解
if 3 * x + 2 * y + z = = 50 :
print (f "男:{x} 女:{y} 孩:{z}" )
|
运行结果:
男:0 女:20 孩:10
男:1 女:18 孩:11
男:2 女:16 孩:12
男:3 女:14 孩:13
男:4 女:12 孩:14
男:5 女:10 孩:15
男:6 女:8 孩:16
男:7 女:6 孩:17
男:8 女:4 孩:18
男:9 女:2 孩:19
男:10 女:0 孩:20
2,for循环二:优化后一遍循环
1 2 3 4 5 6 7 |
# 变量x、y和z分别代表男人、女人和小孩
for x in range ( 0 , 10 + 1 ): # x 取值范围:0到10
y = 20 - 2 * x # 当x一定时,可确定y值
z = 30 - x - y # 根据方程①,当x、y一定时,可确定z值
# 检验,是否匹配方程②,如匹配则得到一组解
if 3 * x + 2 * y + z = = 50 :
print (f "男:{x} 女:{y} 孩:{z}" )
|
运行结果:
男:0 女:20 孩:10
男:1 女:18 孩:11
男:2 女:16 孩:12
男:3 女:14 孩:13
男:4 女:12 孩:14
男:5 女:10 孩:15
男:6 女:8 孩:16
男:7 女:6 孩:17
男:8 女:4 孩:18
男:9 女:2 孩:19
男:10 女:0 孩:20
标签:10,20,小孩,python,30,range,算法,数学题,com
From: https://www.cnblogs.com/architectforest/p/18193393