世界上哪里出错了?这看起来对我有用。有一个未使用的变量;我需要导入数学吗?这个帖子的底部有一个错误图片。
import sys
def menu(retries=4):
menu = ['+ [1]', '- [2]', '/ [3]', '* [4]', 'Exit [0]']
print(menu)
x = input("Choose and option 0-4: ")[:1]
if x == '1':
add()
elif x == '2':
sub()
elif x == '3':
div()
elif x == '4':
mult()
elif x == '0':
print("Terminating")
xterm()
else:
print("Issue")
def xterm():
sys.exit()
def add():
a=input("Number 1: ")
b=input("Number 2: ")
print(a+b)
def sub():
a=input("Number 1: ")
b=input("Number 2: ")
print(a-b)
def div():
a=input("Number 1: ")
b=input("Number 2: ")
print(a/b)
def mult():
a=input("Number 1: ")
b=input("Number 2: ")
print(a*b)
menu()
答案 0 :(得分:4)
在Python中,您可以添加字符串但不能减去它们。 input()
为您提供了一个字符串。 "hello "+"world"
会产生"hello world"
,但"hello "-"world"
会给您一个错误。您也可以乘以字符串,但只能乘以一个数字(整数),如下所示:"a"*3=="aaa"
。
在这里,您希望输入的数据是一个数字。然后使用int()
或float()
。
答案 1 :(得分:1)
输入是一个字符串,你需要在尝试添加之前对每一个进行转换等等。:
a = int(input("Number 1: "))
b = int(input("Number 2: "))
如果您担心用户在比较第一个用户输入时输入额外的空格,请使用str.strip
:
x = input("Choose and option 0-4: ").strip()
如果你使用x = input("Choose and option 0-4: ")[:1]
并且用户输入一个后跟1 " 1"
的空格,你将获得一个空字符串作为strip将删除空格的值。
您只需要在正在进行数学运算的函数中进行强制转换。可以将x
与"1"
等进行比较。
您可以使用while循环验证初始用户输入:
def menu():
menu = ['+ [1]', '- [2]', '/ [3]', '* [4]', 'Exit [0]']
print(menu)
while True:
x = input("Choose and option 0-4: ")[:1]
if x == '1':
add()
elif x == '2':
sub()
elif x == '3':
div()
elif x == '4':
mult()
elif x == '0':
print("Terminating")
return
else:
print("Invalid choice")
def add():
a = int(input("Number 1: "))
b = int(input("Number 2: "))
print(a +b)
def sub():
a = int(input("Number 1: "))
b = int(input("Number 2: "))
print(a -b)
def div():
a = int(input("Number 1: "))
b = int(input("Number 2: "))
print(a / b)
def mult():
a = int(input("Number 1: "))
b = int(input("Number 2: "))
print(a * b)
但是使用dict,运算符模块和一个辅助函数会好得多:
from operator import add, truediv, sub, mul
def get_nums():
while True:
try:
a = float(input("Number 1: "))
b = float(input("Number 2: "))
return a,b
except ValueError:
print("Not a valid number")
def menu():
menu = ['+ [1]', '- [2]', '/ [3]', '* [4]', 'Exit [0]']
print(menu)
ops = {"1":add,"2":sub,"3":truediv,"4":mul}
while True:
x = input("Choose and option 0-4: ")
if x == '0':
print("Terminating")
return
if x in ops:
a,b = get_nums()
print(ops[x](a,b))
else:
print("Invalid choice")