ValueError: invalid literal for int() with base 10: ' ' but in debugger it has a value

ValueError: invalid literal for int() with base 10: ' ' but in debugger it has a value

程序在最下面

在我试图制作一个工作计算器的程序中,我有循环,输入有效的运算符,不同的运算符,现在我试图允许使用以前的答案。

假设您使用 +,加法

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 因为这在计算器中没有意义。

我已经 运行 我的程序在调试器中并且在(值错误 invalid literal for int() with base 10: '')时它说错误是:

num2 = int(input("Enter number 2: "))

在出现此错误的调​​试器中,这些是我的变量,答案是 int 8,num1 是 int 2,num2 是 int 3,运算符是字符串 +,prevAnswer 是 int 8,我试过用 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.')

如果用户没有输入任何内容,则字符串值为""(空),转换为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