如何解决ValueError:int以10为底的无效文字:“”,但在调试器中它具有一个值
程序在底部
在我的程序中,我试图制作一个能正常工作的计算器,但我循环了下来,输入了有效的运算符,使用了不同的运算符,现在我试图使用以前的答案。
让我们说您使用+,加号
num1 = 5
num2 = 5
然后打印(num1 + num2)...等
现在答案是10,所以我指定了prevAnswer来回答,现在它们都是10
我的一个if循环如下:
if num2 == 0:
prevAnswer = num1
num1 = num2
num2 = prevAnswer
我将num2初始化为一个int和值0,所以如果用户不输入任何内容,它应该为0,对吗?然后我将num1 =先前的答案和num2 = num1交换了变量,因此,如果我将先前的值设置为15,那么我将不会有5-15 = -10,因为在计算器中这没有意义。
我已经在调试器中运行了我的程序,并且在(值错误,int()的基数为10的int()无效文字)处显示错误是:
num2 = int(input("Enter number 2: "))
在此错误的调试器中这些是我的变量,答案是int 8,num1是int 2,num2是int 3,运算符是string +,prevAnswer是int 8,我尝试用int()加载我的代码会工作,我似乎没有尝试改变任何东西,只会给我值错误或名称错误
请尝试忽略整数的混乱情况,我知道这里绝对有我不需要的东西,我将学习使用define函数使所有东西更好地寻找他人,并使自己更容易。我只是不知道ive哪里出错了ive搜索了我得到的所有错误,我不能使用他们使用的任何功能或解决方案,这给了我其他错误。最后,对缩进感到抱歉,这不是我的程序的样子,除非您自动缩进,否则我认为它不会运行。
def isExitCommand(userInput):
return (userInput == 'exit' or userInput == 'stop' or userInput == 'Exit' or userInput == 'EXIT' or
userInput ==
'Stop' or userInput == 'STOP')
def calc_exponent(num,pow):
result = 1
for i in range(pow):
result = result * num
return result
num1 = int(0)
num2 = int(0)
while True:
operator = str(input("Would you like to add(+),subtract(-),multiply(*),divide(/) or use
exponents(**)? "))
if isExitCommand(operator):
break
num1 = int(input("Enter number 1: "))
if isExitCommand(num1):
break
else:
num1 = int(num1)
num2 = int(input("Enter number 2: "))
if num2 == 0:
prevAnswer = num1
num1 = num2
num2 = prevAnswer
if isExitCommand(num2):
break
else:
num2 = int(num2)
if operator == 'add' or operator == '+':
answer = int(num1) + int(num2)
print(num1,'+',num2,'=',answer)
elif operator == 'subtract' or operator == '-':
answer = int(num1) - int(num2)
print(num1,'-',answer)
elif operator == 'multiply' or operator == '*':
answer = int(num1) * int(num2)
print(num1,'*',answer)
elif operator == 'divide' or operator == '/':
answer = int(num1) / int(num2)
print(num1,'/',answer)
elif operator == 'exponents' or operator == '**':
num1 = int(num1)
num2 = int(num2)
answer = calc_exponent(num1,num2)
print(num1,'**',answer)
else:
print('Please type a valid operator...')
prevAnswer = answer
print('Program has exited due to user input.')
解决方法
如果用户未输入任何内容,则字符串值为“”(空),转换为int时会出错。
一种快速的解决方案是将空输入替换为0:
num1 = int(input("Enter number 1: ") or 0) # use 0 if empty input
输出
Would you like to add(+),subtract(-),multiply(*),divide(/) or use exponents(**)? +
Enter number 1:
Enter number 2: 34
0 + 34 = 34
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。