全新的 Python,并一直在嘗試 Python 中的各種計算器代碼方法。
我找到了以下代碼:
from operator import pow, truediv, mul, add, sub
operators = {
' ': add,
'-': sub,
'*': mul,
'/': truediv
}
def calculate(s):
if s.isdigit():
return float(s)
for c in operators.keys():
left, operator, right = s.partition(c)
if operator in operators:
return operators[operator](calculate(left), calculate(right))
calc = input("Type calculation:\n")
print("Answer: " str(eval(calc)))
我只是想知道如何為這個制定一個輸入回圈。
uj5u.com熱心網友回復:
from operator import pow, truediv, mul, add, sub
operators = {
' ': add,
'-': sub,
'*': mul,
'/': truediv
}
def calculate(s):
if s.isdigit():
return float(s)
for c in operators.keys():
left, operator, right = s.partition(c)
if operator in operators:
return operators[operator](calculate(left), calculate(right))
cont = 'y'
while cont.lower() == 'y':
calc = input("Type calculation:\n")
print("Answer: " str(eval(calc)))
cont = input("Do you want to continue? (y/n)")
向代碼添加更多驗證會很好......比如確保只存在一個運算子并且在 calc 函式內的運算子兩側都有數字。
此外,您正在匯入電源但沒有符號。如果您還沒有,可以使用 '^' 嗎?它比使用 python 使用的 '**' 更容易。
uj5u.com熱心網友回復:
該腳本將不斷要求您進行計算,如下所示:
while True:
calc = input("Type calculation (C to exit):\n")
if calc.upper().strip() == "C":
break
print("Answer: " str(eval(calc)))
請注意,事實上,代碼非常脆弱,因為任何不能重新轉換為數字運算子數字模式(或“C”)的東西都需要處理。您可以在傳遞給 first 之前使用模式匹配來檢查操作是否有效eval,并根據需要管理不良情況。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/415522.html
標籤:
