今天小姨找我提需求了!用Python實現加減乘除模擬出題試卷

1. 輸出100以內加法題試卷

小姨經常要給她兒子編寫練習作業,手動編寫速度慢,結果還要人工計算,容易出錯不說,效率也很低。使用計算機可以高效出題,自動計算結果,並且沒有錯誤。請編寫一個程序,隨機出20道100以內加法的計算題,然後輸出為不帶答案的加法題和帶答案的加法題兩個部分。如圖所示:


示例代碼如下:

<code>import random # 因為要隨機產生加數 所以肯定要使用到random # 注意: 一般來說我們所說的100以內的加法題是指的結果不超過100 # 這裡筆者也硬性規定 加數不能=100 最多為99 # 因為每次進入循環express1和express2都會發生變化 所以要用一個空的字符串每次去拼接不同的表達式 # 這樣最後就會把20個表達式都拼接在一起 str1 = "" str2 = "" for i in range(20): # 循環20次 每次生成一道題 num1 = random.randint(0, 99) # 隨機產生加數1 num2 = random.randint(0, 99 - num1) # 隨機產生加數2 result = num1 + num2 # 結果 # 開始拼接字符串 因為有些加數是有些是2位 有些是1位 所以我們要進行對齊處理 最多2位 不足的以空白填充 num1 = str(num1).ljust(2, " ") num2 = str(num2).ljust(2, " ") # 拼接不帶答案的表達式: 74 + 20 = express1 = num1 + " + " + num2 + " = " # 拼接帶答案的表達式: 74 + 20 = 94 express2 = num1 + " + " + num2 + " = " + str(result) if i % 2 != 0: str1 += express1 + "\n" str2 += express2 + "\n" else: str1 += express1 + "\t" str2 += express2 + "\t" with open("math.txt", "w", encoding="utf8") as file: file.write(str1) with open("key.txt", "w", encoding="utf8") as file: file.write(str2) print("\033[0;34m20道100以內加法題:") print(str1) print("20道以內加法題(帶答案): ") print(str2, end="") print("\033[0m", end="")/<code>

2. 輸出100以內減法題試卷

根據上面的加法出題程序,請編寫一個減法出題程序。隨機出20道100以內減法的計算題,計算結果不能出現負數。出題試卷分為不帶答案和帶答案兩個部分,分別輸出到屏幕和文件(math.txt和key.txt),如圖所示。




示例代碼如下:

<code>import random str1 = "" str2 = "" for i in range(20): # 循環20次 每次生成一道題 num1 = random.randint(0, 99) # 隨機產生數1 num2 = random.randint(0, 99 - num1) # 隨機產生數2 # 因為結果不能出現負數 所以要進行判斷 if num1 < num2: num1, num2 = num2, num1 result = num1 - num2 # 被減數num1始終為最大的那個數 num1 = str(num1).ljust(2, " ") num2 = str(num2).ljust(2, " ") express1 = num1 + " - " + num2 + " = " express2 = num1 + " - " + num2 + " = " + str(result).ljust(2, " ") # 這裡的結果也進行了左對齊 if i % 2 != 0: str1 += express1 + "\n" str2 += express2 + "\n" else: str1 += express1 + "\t" str2 += express2 + "\t" with open("math.txt", "w", encoding="utf8") as file: file.write(str1) with open("key.txt", "w", encoding="utf8") as file: file.write(str2) print("\033[0;34m20道100以內減法題:") print(str1) print("20道以內減法題(帶答案): ") print(str2, end="") print("\033[0m", end="")/<code>

3. 輸出100以內加減法題試卷

根據以上的加法、減法出題程序,請編寫一個`混合加減法出題程序。隨機出20道100以內混合加減法的計算題。出題試卷分為不帶答案和帶答案兩個部分,分別輸出到屏幕和文件(math.txt和key.txt)。運行效果如圖所示。



示例代碼如下:

<code>import random str1 = "" str2 = "" for i in range(20): # 循環20次 每次生成一道題 num1 = random.randint(0, 99) # 隨機產生數1 num2 = random.randint(0, 99 - num1) # 隨機產生數2 symbol = random.choice("+-") # 判斷符號是加號 還是減號 if symbol == "+": result = num1 + num2 # 是+號 做加法 else: if num1

< num2: num1, num2 = num2, num1 result = num1 - num2 # 否則做減法 num1 = str(num1).ljust(2, " ") num2 = str(num2).ljust(2, " ") express1 = num1 + " " + symbol + " " + num2 + " = " express2 = num1 + " " + symbol + " " + num2 + " = " + str(result).ljust(2, " ") if i % 2 != 0: str1 += express1 + "\n" str2 += express2 + "\n" else: str1 += express1 + "\t" str2 += express2 + "\t" with open("math.txt", "w", encoding="utf8") as file: file.write(str1) with open("key.txt", "w", encoding="utf8") as file: file.write(str2) print("\033[0;34m20道100以內加減法混合題試卷:") print(str1) print("20道100以內加減法混合題試卷(帶答案): ") print(str2, end="") print("\033[0m", end="") /<code>

4. 輸出乘數100以內的乘法題試卷

請編寫一個輸出乘數為100以內的乘法題試卷程序。出題數量由用戶輸入,出題試卷分為不帶答案和帶答案兩個部分,分別輸出到屏幕和文件(math.txt和key.txt)。運行效果如圖所示。



示例代碼如下:

<code>import random str1 = "" str2 = "" num = int(input("請輸入需要生成的題目數: 如(30): ").strip()) for i in range(num): # 循環num次 每次生成一道題 num1 = random.randint(0, 99) # 隨機產生乘數1 num2 = random.randint(0, 99 - num1) # 隨機產生乘數2 result = num1 * num2 # 結果 num1 = str(num1).ljust(2, " ") num2 = str(num2).ljust(2, " ") express1 = num1 + " * " + num2 + " = " express2 = num1 + " * " + num2 + " = " + str(result).ljust(4, " ") # 這裡的結果也進行了左對齊 if i % 2 != 0: str1 += express1 + "\n" str2 += express2 + "\n" else: str1 += express1 + "\t" str2 += express2 + "\t" with open("math.txt", "w", encoding="utf8") as file: file.write(str1) with open("key.txt", "w", encoding="utf8") as file: file.write(str2) print(f"\033[0;34m{num}道100以內乘法題試卷:") print(str1) print(f"{num}道100以內乘法題試卷(帶答案): ") print(str2, end="") print("\033[0m", end="")/<code>

5. 隨機輸出100以內除法題試卷

請編寫一個輸出被除數為100以內的除法題試卷程序。題目數量由用戶輸入,運算結果必須為整數。出題試卷分為不帶答案和帶答案兩個部分,分別輸出到屏幕和文件(math.txt和key.txt),運行效果如圖所示。




示例代碼如下:

<code>import random str1 = "" str2 = "" num = int(input("請輸入需要生成的題目數: 如(30): ").strip()) for i in range(num): # 循環num次 每次生成一道題 num1 = random.randint(1, 99) # 隨機產生被除數 num2 = random.randint(1, 99 - num1) # 隨機產生除數2 注意除數不能為0 # 因為要求最後結果必須是整數 所以要進行判斷 if num1 < num2: num1, num2 = num2, num1 # 被除數肯定要比除數大 while num1 % num2 != 0: if num1 < 99: num1 += 1 else: if num2 > 1: num2 -= 1 result = num1 // num2 # 結果 num1 = str(num1).ljust(2, " ") num2 = str(num2).ljust(2, " ") express1 = num1 + " ÷ " + num2 + " = " express2 = num1 + " ÷ " + num2 + " = " + str(result).ljust(2, " ") # 這裡的結果也進行了左對齊 if i % 2 != 0: str1 += express1 + "\n" str2 += express2 + "\n" else: str1 += express1 + "\t" str2 += express2 + "\t" with open("math.txt", "w", encoding="utf8") as file: file.write(str1) with open("key.txt", "w", encoding="utf8") as file: file.write(str2) print(f"\033[0;34m{num}道100以內除法題試卷:") print(str1) print(f"{num}道100以內除法題試卷(帶答案): ") print(str2, end="") print("\033[0m", end="")/<code>

6. 隨機輸出100以內混合乘除法題

根據以上的乘法、除法出題程序,請編寫一個混合乘除法出題程序。題目數量由用戶輸入,出題試卷分為不帶答案和帶答案兩個部分,分別輸出到屏幕和文件(math.txt和key.txt),運行效果如圖所示。



示例代碼如下:

<code>import random str1 = "" str2 = "" num = int(input("請輸入需要生成的題目數: 如(30): ").strip()) for i in range(num): # 循環num次 每次生成一道題 num1 = random.randint(1, 99) # 隨機產生數1 num2 = random.randint(1, 99 - num1) # 因為有除數所以都從1開始 symbol = random.choice("*÷") # 判斷符號是* 還是÷號 if symbol == "*": result = num1 * num2 # 是*號 做乘法 else: if num1 < num2: num1, num2 = num2, num1 while num1 % num2 != 0: if num1 < 99: num1 += 1 else: if num2 > 1: num2 -= 1 result = num1 // num2 # 否則做除法 num1 = str(num1).ljust(2, " ") num2 = str(num2).ljust(2, " ") express1 = num1 + " " + symbol + " " + num2 + " = " express2 = num1 + " " + symbol + " " + num2 + " = " + str(result).ljust(2, " ") if i % 2 != 0: str1 += express1 + "\n" str2 += express2 + "\n" else: str1 += express1 + "\t" str2 += express2 + "\t" with open("math.txt", "w", encoding="utf8") as file: file.write(str1) with open("key.txt", "w", encoding="utf8") as file: file.write(str2) print("\033[0;34m20道100以內乘除法混合題試卷:") print(str1) print("20道100以內乘除法混合題試卷(帶答案): ") print(str2, end="") print("\033[0m", end="")/<code>

7. 100以內加減法小測試

在計算機上也可以進行數學計算能力的測試,請編寫一個程序,隨時出題,隨時驗證答案。對100以內的加減法隨機出題,一題一答,每題20分,答對加5分,答錯不記分,總計5道題,共100分。答題結束給出測試分數,具體效果如下圖所示。

更多案例教程或代碼後臺私信小編01


示例代碼如下:

<code>import random print("----------100以內加減法小測試----------\n") score = 0 # 用來記錄分數 msg = "當前" for i in range(5): # num1 = random.randint(0, 99) # 隨機產生數1 num2 = random.randint(0, 99 - num1) # 隨機產生數2 symbol = random.choice("+-") # 判斷符號是加號 還是減號 if symbol == "+": result = num1 + num2 # 是+號 做加法 else: if num1 < num2: num1, num2 = num2, num1 result = num1 - num2 # 否則做減法 num1 = str(num1).ljust(2, " ") num2 = str(num2).ljust(2, " ") express1 = num1 + " " + symbol + " " + num2 + " = ?" print(f"第{i + 1}題: {express1}") answer = int(input("請輸入你的答案: ").strip()) msg = "最後" if i == 4 else msg if answer == result: score += 5 print(f"你真棒!得5分獎勵,{msg}得分:{score}\n") else: print(f"正確答案: {result} 加油! 本次沒有得分,{msg}得分: {score}\n")/<code>

到此今天的小案例全部結束,小姨再也不用擔心寶寶的學習啦,哈哈哈哈~。本次的練習總的來說還是非常簡單的,由於筆者寫了一天的代碼,並且是在半夜完成這篇博文,所以文中可能會出現一些邏輯不嚴謹或者錯誤的問題,希望讀者可以多多指教與諒解。通過這幾天的小案例,讀者希望大家能夠對Python的基礎語法能夠有進一步的掌握。最後筆者半夜編寫不易,希望大家可以多多支持。

此篇文章轉載文,著作權歸作者所有,如有侵權聯繫小編刪除

原文地址:https://blog.csdn.net/xw1680/article/details/105336034