先上代码复制粘贴就可以运行了```#_*_coding:utf-8_*_importsysdefadd():returnnum1+num2defsubtract():returnnum1-num2defmultiply():returnnum1*num2defdivide():returnnum1/num2pr...
先上代码 复制粘贴就可以运行了
```
#_*_coding:utf-8_*_
import sys
def add():
return num1 + num2
def subtract():
return num1 - num2
def multiply():
return num1 * num2
def divide():
return num1 / num2
print('选择运算')
print('1.相加')
print('2.相减')
print('3.相乘')
print('4.相除')
def validInput(info):
vchoice = input(info)
if vchoice == 'exit':
sys.exit(0)
elif not vchoice:
print('非法输入')
validInput(info)
elif not vchoice.isdigit():
print('请输入数字')
validInput(info)
elif vchoice is None:
print('vchoice is None')
validInput(info)
else:
return vchoice
while True:
choice = validInput('请输入要选择的运算(1/2/3/4): ')
vnum1 = validInput('请输入第一个数字: ')
vnum2 = validInput('请输入第二个数字: ')
print('type vnum1:%s'%type(vnum1))
print('type vnum2:%s %s'%(type(vnum2),vnum2))
if type(vnum1) == int:
num1 = vnum1
else:
num1 = int(vnum1)
if type(vnum2) == int:
num2 = vnum2
else:
num2 = int(vnum2)
if choice == '1':
print('%s + %s = %s'%(num1,num2,add()))
elif choice == '2':
print('%s - %s = %s' % (num1, num2, subtract()))
elif choice == '3':
print('%s * %s = %s' % (num1, num2, multiply()))
elif choice == '4':
print('%s / %s = %s' % (num1, num2, divide()))
else:
print('非法输入')
```
出现报错信息为:
Traceback (most recent call last):
File "D:/SpaceX_PY/HelloPython/Tkinter&Python/MyCalculator2.py", line 45, in
num1 = int(vnum1)
TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'
复现bug步骤:
1.正常输入,不会报错 依次输入1-->2-->1
2.异常输入,报错 依次输入 1-->2-->e-->2 报错
感谢各位大神解答, 最好将正确的代码贴在评论上 谢谢!
展开