def main():
num1 = input("Write a number: ")
op = input("* or / or or -: ")
num2 = input("Write another number: ")
result = None
if op == " ":
result = float(num1) float(num2)
print(result)
elif op == "-":
result = float(num1) - float(num2)
print(result)
elif op == "*":
result = float(num1) * float(num2)
print(result)
elif op == "/" and num2 == 0:
result = None
print("You can't divide by zero")
main()
elif op == "/" and num2 != 0:
result = float(num1) / float(num2)
print(result)
while True:
main()
ans = input("Would you like to do another equation: ")
if ans == "yes":
main()
ans = input("Would you like to do another equation: ")
elif ans == "no":
exit()
即使我已經有了該案例的 elif 陳述句,我仍然收到此錯誤
檔案“d:\Visual Studio Code\Projects\HelloWorld python\Calculator.py”,第 26 行,位于 main() 檔案“d:\Visual Studio Code\Projects\HelloWorld python\Calculator.py”,第 21 行,位于 main()
結果 = float(num1) / float(num2) ZeroDivisionError:浮點除以零
uj5u.com熱心網友回復:
您沒有捕獲零案例的原因是num尚未轉換為float. 考慮try/except改用——這樣你就不需要嘗試預測操作是否會失敗,你可以讓操作本身告訴你。這還可以讓您捕獲諸如不是有效數字的輸入或不是有效選項之一的操作之類的事情。
您還可以通過float盡快進行轉換來節省時間——如果您使用try/except,這可以讓您立即重新提示用戶進行有效輸入。如果您return回答(并讓呼叫者回答print)而不是將其分配給 a resultwhich you then print,則一旦函式成功,您就可以輕松打破回圈,同時使每個if塊成為一個簡潔的行。
請注意,main()只要它處于while回圈中,直到需要中斷,就沒有必要顯式重新呼叫。
def main() -> float:
while True:
try:
num1 = float(input("Write a number: "))
op = input("* or / or or -: ")
num2 = float(input("Write another number: "))
if op == " ":
return num1 num2
elif op == "-":
return num1 - num2
elif op == "*":
return num1 * num2
elif op == "/":
return num1 / num2
else:
raise ValueError(f"Invalid operation {op}")
except ZeroDivisionError:
print("You can't divide by zero")
except ValueError as e:
print(e)
while True:
print(main())
ans = input("Would you like to do another equation: ")
if ans == "no":
break
uj5u.com熱心網友回復:
num2是str這樣 and num2 == 0總是會False檢查:
elif op == "/" and num2 == '0':
此外,您重復了float(num)太多次,在開始時將其轉換一次,然后通過and num2 == 0.
uj5u.com熱心網友回復:
在測驗之前或測驗時轉換num2為 a float:
### ...
elif op == "/" and float(num2) == 0.0:
result = None
print("You can't divide by zero")
main()
elif op == "/" and float(num2) != 0.0:
result = float(num1) / float(num2)
print(result)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/376799.html
