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 

说明:刘宏缔的架构森林—专注it技术的博客,
网址:https://imgtouch.com
本文: https://blog.imgtouch.com/index.php/2024/03/22/python-suan-fa-jie-shu-fang-an/
代码: https://github.com/liuhongdi/ 或 https://gitee.com/liuhongdi
说明:作者:刘宏缔 邮箱: 371125307@qq.com

二,借书方案的题目与解析

1,题目:

小明有5本新书,要借给A、B、C三位小朋友,
若每人每次只能借1本,则可以有多少种不同的借法?

2,解析:

思路:
本题属于数学中常见的排列组合问题,即求从5个数中取3个不同数的排列组合的总数,
第一个人取时有5种选择,
第二个人取时有4种选择(第一个人已选走了一本),
第三个人取时有3种选择(前两个人已选走了两本),
所以预计有5x4x3=60种分法

用程序处理时:
1,对于每个人所选书号,我们可以采用循环实现,
即从每个人可选书号(1、2、3、4、5)的范围内进行穷举。
第一个人的选择,可以用循环将其列出,即for a in range(1,6)。
同理,对于第二个人、第三个人可以用同样的方法。
2,因为一本书只能借给一个人,所以第二个人的选择会受到第一个人的限制,
最后一个人的选择会受到前两个人的限制,
即后面的选择都是在前面选择的前提下进行的,
所以需要采用循环的嵌套来解决问题。
3,因为要保证三个人所选书号各不相同,
所以需要用 “if a != b and a != c and c != b”进行判断

三,编写代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# A、B、C三位小朋友,5本书,每人每次只能借一本
# 用a、b、c分别表示三人所选图书的编号
count = 0  # count表示有效借阅次数
# a表示A借阅图书的编号
for a in range(1, 6):
    # b表示B借阅图书的编号
    for b in range(1, 6):
        # c表示C借阅图书的编号
        for c in range(1, 6):
            if a != b and a != c and c != b:     # 三个人借的书必须编号不同
                print(f"A:{a} B:{b} C:{c}   ", end='')
                count += 1     # 借阅方法加1
                if count % 6 == 0:    # 每6个方法打印一个换行符
                    print()  # 换行
print(f"共有{count}种有效借阅方法")

运行结果:

A:1 B:2 C:3   A:1 B:2 C:4   A:1 B:2 C:5   A:1 B:3 C:2   A:1 B:3 C:4   A:1 B:3 C:5   
A:1 B:4 C:2   A:1 B:4 C:3   A:1 B:4 C:5   A:1 B:5 C:2   A:1 B:5 C:3   A:1 B:5 C:4   
A:2 B:1 C:3   A:2 B:1 C:4   A:2 B:1 C:5   A:2 B:3 C:1   A:2 B:3 C:4   A:2 B:3 C:5   
A:2 B:4 C:1   A:2 B:4 C:3   A:2 B:4 C:5   A:2 B:5 C:1   A:2 B:5 C:3   A:2 B:5 C:4   
A:3 B:1 C:2   A:3 B:1 C:4   A:3 B:1 C:5   A:3 B:2 C:1   A:3 B:2 C:4   A:3 B:2 C:5   
A:3 B:4 C:1   A:3 B:4 C:2   A:3 B:4 C:5   A:3 B:5 C:1   A:3 B:5 C:2   A:3 B:5 C:4   
A:4 B:1 C:2   A:4 B:1 C:3   A:4 B:1 C:5   A:4 B:2 C:1   A:4 B:2 C:3   A:4 B:2 C:5   
A:4 B:3 C:1   A:4 B:3 C:2   A:4 B:3 C:5   A:4 B:5 C:1   A:4 B:5 C:2   A:4 B:5 C:3   
A:5 B:1 C:2   A:5 B:1 C:3   A:5 B:1 C:4   A:5 B:2 C:1   A:5 B:2 C:3   A:5 B:2 C:4   
A:5 B:3 C:1   A:5 B:3 C:2   A:5 B:3 C:4   A:5 B:4 C:1   A:5 B:4 C:2   A:5 B:4 C:3   
共有60种有效借阅方法
posted @ 2024-05-16 10:18  刘宏缔的架构森林  阅读(38)  评论(0编辑  收藏  举报