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]
posted @ 2024-05-15 10:29  刘宏缔的架构森林  阅读(42)  评论(0编辑  收藏  举报