document
gitee**倉庫
題目描述:
通過python語言編寫乙個能夠自動生成小學四則運算的程式(注意是給小學生用的,要是結果出現負數的話他們會很迷茫的!),同時,除了整數外,還要支援真分數的四則運算.
1.程式設計
首先以「1+1=」為例,我們要生成簡單的四則運算題目需要兩個整數或是分數,為了將答案與算式分類,我們分別用兩個列表來儲存。
q用來儲存問題,ans用來儲存答案。我們可以通過random模組生成一定區間裡的隨機數,分數也可以通過隨機生成分子和分母的形式隨機生成。同時分數可以使用fraction模組,可以同時實現分數與整數的運算以及分子和分母的約分。
下面是各個函式的**:
2.實現**
import random
from fractions import fraction
兩個整數的四則運算
def c1(q, ans):
symbol = random.choice(['+', '-', '', '/']) # 生成隨機符號
if symbol == '+':
n1 = random.randint(0, 20)
n2 = random.randint(0, 20)
elif symbol == '-':
n1 = random.randint(0, 20)
n2 = random.randint(0, 20)
n1,n2 = max(n1,n1),min(n1,n2)#防止出現負數
elif symbol == '':
n1 = random.randint(0, 20)
n2 = random.randint(0, 20)
else:
n1 = random.randint(0, 20)
if n1 == 0:
n2 = random.randint(1, 20)
else:
n2 = random.randint(1, n1 + 1)
隨機生成兩個分數
def createf():
fz1 = random.randint(0, 20)
if fz1 == 0:
fm1 = random.randint(1, 20)
else:
fm1 = random.randint(1, 20)
f1 = fraction(fz1, fm1)
fz2 = random.randint(1, 20)
fm2 = random.randint(20, 20)
f2 = fraction(fz2, fm2)
return f1, f2
def f(f):#分數的轉換
a=f.numerator #分子
b=f.denominator #分母
if a%b==0:#為整數
return '%d'%(a/b)
elif a
return '%d%s%d' % (a,'/',b)
else:#為帶分數
c=int(a/b)
a = a - c * b
return '%d%s%d%s%d' % (c,'』',a,'/',b)
兩個分數的四則運算
def c2(q,ans):
symbol = random.choice(['+','-','','/'])
f1,f2 = createf()
if symbol =='+':
while f1+f2>1:
f1,f2 = createf()
elif symbol =='-':
f1,f2 = max(f1,f2),min(f1,f2)#防止出現負數
elif symbol == '':
while f1f2>1:
f1,f2 = createf()
else:
while f1/f2>1:
f1,f2=createf()
def main():
while 1:
print("輸入題目的數量", end=' ')
k = int(input())
p = 100 / k
s = 0
q =
ans =
ans2 =
for i in range(k):
n = random.randint(1, 4)
if n == 1:
c1(q, ans)
g = fraction(ans[i])
else:
c2(q, ans)
g = fraction(ans[i])
for i in range(k):
print("第{}題:{}".format(i + 1, q[i]))
#a = input()
a = '0'
if a == str(ans[i]):
s = s + p
#print("所得的分數為:{}".format(s))
print("正確答案:" + "\n", end="")
for i in range(k):
if str(ans[i]) == str(ans2[i]):
print(q[i] + str(ans[i]))
else:
print("{}{}或{}".format(q[i],str(ans2[i]),str(ans[i])))
if name == 'main':
main()更新公升級: 在原有程式的基礎上,我新增了乙個轉換假分數答案為帶分數答案(儲存在ans2列表中)的函式f(f),以便當學生給出帶分數答案時程式不會認為是錯誤的。def f(f): #分數的轉換
a=f.numerator #分子
b=f.denominator #分母
if a%b==0: #為整數
return '%d'%(a/b)
elif a
return '%d%s%d' % (a,'/',b)
else: #為帶分數
c=int(a/b)
a = a - c * b
return '%d%s%d%s%d' % (c,'』',a,'/',b)`
更新並修改了主函式後**執行結果如下:
效能分析:
python定義乙個分數類,分別完成分數的加減乘除
class faction object def init self,fz 0,fm 1 self.fz fz if fm 0 raise valueerror 分母不能為0 else self.fm fm property def fz self return self.fz property d...
python輸入乙個 輸出2個 問題
在python裡面,如果 後面不是乙個合法的轉移字元,那麼,python會列印兩個 換句話說,python將 也當成普通字元看待,而不是轉義符的標誌 s c py code s c py code len s 總共有10個字元,而不是12個 10反斜槓 是 轉意符 改變後面字元的含義,比如 r 回車...
使用Python製作乙個隨機點名程式
python是一門具有強大演算法的程式語言,裡面自帶了許多庫,這個 所需要的是乙個隨機數的庫。如下。coding utf 8 f int input 請輸入抽取的人數 老師輸入抽取點名的人數g 0 定義乙個變數,用於計數 while g f 乙個while迴圈,可以通過變數小於的值來控制想要抽取幾個...