python算法: 谁家孩子跑得最慢
一,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
二,谁家孩子跑得最慢题目与分析
1,题目:
张家、王家和李家各有三个孩子,
一天,三家的九个孩子在一起比赛跑步,规定:
跑第一名得9分,
跑第二名得8分,
跑第三名得7分,
…
跑第九名得1分。
比赛结果如下:
1.各家三个孩子的总分相同。
2.第一名是李家的孩子,第二名是王家的孩子。
3.所有孩子的名次没有并列的。
4.各家三个孩子的名次都没有相连的。
求最后一名是谁家的孩子?
2,分析:
1,总分9+8+7+6+5+4+3+2+1=45分,
所以各家均得分15分
2,同一家的孩子不会获得相连的名次,
李家第一,王家第二,所以第3名7分只能是张家
3,同一家的孩子不会获得相连的名次,
所以第4名6分不会是张家
4,
张: [7, 0, 0] 后两名和:8
王: [8, 0, 0] 后两名和:7
李: [9, 0, 0] 后两名和:6
因为后两名的和的范围: 6-8,
所以 3\2\1 不会出现在第二名
所以 第二名的范围: 4,5,6
第三名的范围: 1,2,3
说明:刘宏缔的架构森林—专注it技术的博客,
网址:https://imgtouch.com
本文: https://blog.imgtouch.com/index.php/2024/03/15/python-suan-fa-shui-jia-hai-zi-pao-de-zui-man/
代码: https://github.com/liuhongdi/ 或 https://gitee.com/liuhongdi
说明:作者:刘宏缔 邮箱: 371125307@qq.com
三,代码实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
# 获得第一名的是李家的孩子,获得第二名的是王家的孩子 zhang = [ 7 , 0 , 0 ] # zhang存放张家3个孩子的分数 张家孩子分数最高:7 wang = [ 8 , 0 , 0 ] # wang存放王家3个孩子的分数 王家孩子分数最高:8 li = [ 9 , 0 , 0 ] # li存放李家3个孩子的分数 李家孩子分数最高:9 for zh in range ( 4 , 6 ): # 通过循环得到9个孩子的分数 for w in range ( 4 , 7 ): for l in range ( 4 , 7 ): # 所有第二名各不相等 且 所有第三名也不相等 if zh ! = w and l ! = zh and l ! = w \ and 15 - zh - zhang[ 0 ] ! = 15 - w - wang[ 0 ] \ and 15 - zh - zhang[ 0 ] ! = 15 - l - li[ 0 ] \ and 15 - w - wang[ 0 ] ! = 15 - l - li[ 0 ]: # 将结果存入对应的数组元素 zhang[ 1 ] = zh zhang[ 2 ] = 15 - zh - 7 wang[ 1 ] = w wang[ 2 ] = 15 - w - 8 li[ 1 ] = l li[ 2 ] = 15 - l - 9 print ( "张:" , zhang) # 打印二维数组score,输出各家孩子的分数 print ( "王:" , wang) print ( "李:" , li) |
运行结果:
张: [7, 5, 3]
王: [8, 6, 1]
李: [9, 4, 2]