python演算法:借書方案

刘宏缔的架构森林發表於2024-05-16

一,for迴圈:

1,功能:重複執行同一段程式碼
語法:

for index in range(n): 
    # 迴圈體程式碼

index : 用來依次接收可迭代物件中的元素的變數名
range()函式:負責返回整數序列

流程圖:

python演算法:借書方案

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種有效借閱方法

相關文章