ValueError: int() 以 10 为基数的无效文字:''但在调试器中它有一个值
Posted
技术标签:
【中文标题】ValueError: int() 以 10 为基数的无效文字:\'\'但在调试器中它有一个值【英文标题】:ValueError: invalid literal for int() with base 10: ' ' but in debugger it has a valueValueError: int() 以 10 为基数的无效文字:''但在调试器中它有一个值 【发布时间】:2021-01-14 11:57:49 【问题描述】:程序在底部
在我的程序中,我试图制作一个可以工作的计算器,我有循环,输入有效的运算符,不同的运算符,现在我试图允许使用以前的答案。
假设您使用 +,加法
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,因为这在计算器中没有意义。
我已经在调试器中运行了我的程序,并且在 (value error invalid literal for int() with base 10: '') 时,它说错误是:
num2 = int(input("Enter number 2: "))
在调试器中出现此错误,这些是我的变量,答案是 int 8,num1 是 int 2,num2 是 int 3,运算符是 string +,prevAnswer 是 int 8,我尝试使用 int() 加载我的代码所以这个会起作用,我似乎没有尝试改变任何它只是给我价值错误或名称错误的东西
请尝试忽略 int 的混乱,我知道这里肯定有我不需要的东西,我将学习使用定义函数来让一切更好地寻找他人,让自己更容易。我只是不知道我哪里出错了,我搜索了我得到的所有错误,我无法使用他们使用的任何功能或解决方案,它只是给了我其他错误。最后,对缩进感到抱歉,这不是我的程序的样子,我认为除非你自动缩进,否则它不会运行。
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, '-', num2, '=', answer)
elif operator == 'multiply' or operator == '*':
answer = int(num1) * int(num2)
print(num1, '*', num2, '=', answer)
elif operator == 'divide' or operator == '/':
answer = int(num1) / int(num2)
print(num1, '/', num2, '=', answer)
elif operator == 'exponents' or operator == '**':
num1 = int(num1)
num2 = int(num2)
answer = calc_exponent(num1, num2)
print(num1, '**', num2, '=', answer)
else:
print('Please type a valid operator...')
prevAnswer = answer
print('Program has exited due to user input.')
【问题讨论】:
【参考方案1】:如果用户不输入任何内容,则字符串值为 ""(空),转换为 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
【讨论】:
嘿,谢谢这帮助我解决了我的问题 :) 但快速的问题,为什么不实例化具有 0 值的变量,然后检查 num2 是否仍然为 0,因为没有输入任何工作? 某些内容总是输入,即使是空字符串以上是关于ValueError: int() 以 10 为基数的无效文字:''但在调试器中它有一个值的主要内容,如果未能解决你的问题,请参考以下文章
ValueError:int() 的无效文字,以 10 为底错误
ValueError: int() 以 10 为基数的无效文字:''
Django - ValueError: int() 以 10 为基数的无效文字:''
ValueError: int() 以 10 为底的无效文字:'10025.0'