一,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/23/python-suan-fa-ping-fen-7-kuang-yu/
代码: https://github.com/liuhongdi/ 或 https://gitee.com/liuhongdi
说明:作者:刘宏缔 邮箱: [email protected]
二,平分7筐鱼的题目与解析
1,题目:
甲、乙、丙三位渔夫出海打鱼,他们随船带了21只箩筐。当晚返航时,他们发现有7筐装满了鱼,还有7筐装了半筐鱼,另外7筐是空的,由于他们没有秤,只好通过目测认为7个满筐鱼的重量是相等的,7个半筐鱼的重量是相等的。
在不将鱼倒出来的前提下,怎样将鱼和筐平分为三份?
2,解析:
思路:
每个人应分得7个箩筐,其中有3.5筐鱼。解决该问题可以采用一个3×3的数组,用来表示三个人分到的东西。
其中每个人对应数组的一行,数组的第0列放分到的鱼的整筐数,数组的第1列放分到的半筐数,数组的第2列放分到的空筐数。
需要满足的条件:对于每个人:
共分到7个筐,
筐中的鱼是3.5筐
对于组合后的分法:
每种分法的组合:
分到的整筐的鱼一共7个筐
分到的半筐的鱼一共7个筐
我们先得到每个人的分法,再组合起来
三,编写代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
x = [] # 保存符合条件的分法
for i in range ( 1 , 4 ): # 满筐的鱼不能超过3筐
for j in range ( 1 , 6 ): # 半筐的鱼不能超过5,其他两人至少各需半筐
k = 7 - i - j # 一共分到7个筐,k表示空筐
if k < 0 : # 空筐不能是负数
break
else :
if (i * 10 + j * 5 ) = = 35 : # 鱼加起来是否3筐半?
x.append([i, j, k])
z = [] # 保存符合条件的分法的组合
for k1 in x:
for k2 in x:
for k3 in x: # 组合的满筐一共7个, 且 组合的半筐一共7个
if k1[ 0 ] + k2[ 0 ] + k3[ 0 ] = = 7 and k1[ 1 ] + k2[ 1 ] + k3[ 1 ] = = 7 :
kone = [k1, k2, k3]
kone.sort() # 因为分鱼时顺序不固定,排序是为了过滤重复方法
if kone not in z:
z.append(kone) # 保存到z列表中
print (z) # 打印列表
|
运行结果:
[[[1, 5, 1], [3, 1, 3], [3, 1, 3]], [[2, 3, 2], [2, 3, 2], [3, 1, 3]]]
标签:分法,python,半筐,算法,kone,range,https,com,平分
From: https://www.cnblogs.com/architectforest/p/18195459