我是一個 python 初學者,我正在嘗試制作一個計算器,而不是要求用戶輸入第一個數字而不是運算子和另一個數字來回傳結果,用戶可以輸入例如 3 * 3 in一個單一的輸入,所以計算機回傳 9。
num1 = float(input("Enter a number: "))
op = input("Enter an operator: ")
num2 = float(input("Enter another number: "))
if op == " ":
print(num1 num2)
elif op == "-":
print(num1 - num2)
elif op == "*":
print(num1 * num2)
elif op == "/":
print(num1 / num2)
else:
print(" Enter a valid operator...")
uj5u.com熱心網友回復:
IIUC,您希望一次性獲得用戶的完整輸入,這樣您的計算器就可以在不要求輸入 3 次的情況下作業。
注意:使用
eval非常不安全,非常不鼓勵使用。您的方法絕對沒問題,不需要eval(). 您試圖解決的問題與eval()開始無關。在這里閱讀更多。
嘗試這個 -
num1, op, num2 = input('Enter equation with spaces in-between: ').split(' ')
num1, num2 = float(num1), float(num2)
if op == " ":
print(num1 num2)
elif op == "-":
print(num1 - num2)
elif op == "*":
print(num1 * num2)
elif op == "/":
print(num1 / num2)
else:
print(" Enter a valid operator...")
enter equation: 3 * 3
9.0
該str.split(' ')會打破字串輸入到3份,基于的空間。然后,您可以將這些存盤在變數中,將num1和num2轉換為float并使用您的函式。
uj5u.com熱心網友回復:
如果您確定輸入將完全格式化,請使用 eval()
s = input("Enter an expression: ")
try:
print(eval(s))
except:
print("Enter a valid expression...")
uj5u.com熱心網友回復:
正如其他人提到的,不安全的方法是使用eval(),但安全的方法可能是
vals = input("Enter an operation: ").split()
num1 = float(vals[0])
op = vals[1]
num2 = float(vals[2])
# The rest of your code as you've written it
uj5u.com熱心網友回復:
使用.split().
假設有一個空格分隔每個值和運算子,并且只涉及兩個值,則此方法有效。
def equation():
string = input("Enter an equation: ")
#this splits the input string into its parts and puts them into a list
string_as_list = string.split(' ')
print(string_as_list)
num1 = float(string_as_list[0])
op = string_as_list[1]
num2 = float(string_as_list[2])
if op == " ":
result = num1 num2
elif op == "-":
result = num1 - num2
elif op == "*":
result = num1 * num2
elif op == "/":
result = num1 / num2
return result
uj5u.com熱心網友回復:
該eval功能可能有助于:
inputstr = '3 * 3'
print(eval(inputstr))
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/367304.html
上一篇:求五邊形數[已解決]
下一篇:三角形邊長計算
