我的計算器作業了一半。我真的把我的大腦放進去,但我不知道為什么它不起作用。有人能幫我嗎?
number1 = input("Enter first number: ")
number2 = input("Enter second number: ")
operator = input("Enter the operation character: ")
result = number1 operator number2
if operator == ' ':
result = int(number1) int(number2)
elif operator == '-':
result = int(number1) - int(number2)
elif operator == '*':
result = int(number1) * int(number2)
elif operator == '/':
result = int(number1) / int(number2)
if number1.isdigit() == True:
print (result)
elif number2.isdigit() == True:
print(result)
else:
print("Enter a number.")
它正在列印計算值,但如果您輸入的是字母而不是數字。例如: 輸入第一個數字: 5 輸入第二個數字: f 現在它應該列印“輸入一個數字”。但是我收到此訊息而不是 ValueError: invalid literal for int() with base 10: 'a'
if number1.isdigit() == True:
print (result)
elif number2.isdigit() == True:
print(result)
**else:
print("Enter a number.")**
uj5u.com熱心網友回復:
你有這樣的行:
if operator == ' ':
result = int(number1) int(number2)
在這樣的行之前:
if number1.isdigit() == True:
print (result)
elif number2.isdigit() == True:
print(result)
else:
print("Enter a number.")
因此,如果operater確實是 a ,Python 將嘗試評估int(number1) int(number2)并失敗,如果number1或number2不是數字的字串表示。
這會引發ValueError(應該如此),并且未在try .. except ..塊中捕獲的引發例外將導致您的程式終止。您不能繼續處理未捕獲的例外。
您應該先檢查然后嘗試轉換這些字串,或者您應該捕獲例外。
此外,您似乎希望您的代碼在錯誤發生后繼續運行,因此您需要某種回圈來保持程式運行,直到用戶輸入一些有意義的輸入。
uj5u.com熱心網友回復:
我不確定我是否理解你的意思,但我認為這可以解決問題
number1 = input("Enter first number: ")
number2 = input("Enter second number: ")
operator = input("Enter the operation character: ")
result = number1 operator number2
if number1.isdigit() == True and number2.isdigit() == True:
if operator == ' ':
result = int(number1) int(number2)
elif operator == '-':
result = int(number1) - int(number2)
elif operator == '*':
result = int(number1) * int(number2)
elif operator == '/':
result = int(number1) / int(number2)
print (result)
else:
print("Enter a number.")
uj5u.com熱心網友回復:
如果您剛剛開始編碼,我建議您以此為理由搜索和學習一些有助于您開始的重要概念。
首先,您必須先驗證您的輸入,然后再對它們進行任何其他操作。在你的情況下,驗證你的第一個和第二個數字實際上是有效的整數,就在它們輸入之后。由于對兩者都進行相同的驗證,因此您可以創建一個函式,以便重用邏輯。
def input_number():
num = input("Enter a number: ")
if num.isdigit():
return int(num)
else:
print("Invalid number.")
return input_number()
在這里,我檢查輸入是否有效(isdigit為真),然后回傳已轉換為int. 如果不是,我再次呼叫相同的函式,并重復該程序。這稱為遞回。
您還應該驗證運算子,因為它僅在少數選項中有效。
def input_operator():
while True:
op = input("Enter the operation character: ")
if op in [" ", "-", "*", "/"]:
return op
else:
print("Invalid operator.")
在這里,我使用了不同的技術。它被稱為whilestatement,它將在其中重復執行,直到條件不為真,或者直到它被顯式破壞(在這種情況下,使用return陳述句)。
現在,您必須在代碼之上添加兩個函式定義,然后相應地調整您的邏輯。
number1 = input_number()
operator = input_operator()
number2 = input_number()
if operator == " ":
result = number1 number2
elif operator == "-":
result = number1 - number2
elif operator == "*":
result = number1 * number2
elif operator == "/":
result = number1 / number2
print (result)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/529464.html
下一篇:來自用戶的整數錯誤處理不起作用
