在python3中将字符串转换为整数拆分两个变量时出现问题

2024-04-18 14:22:00 发布

您现在位置:Python中文网/ 问答频道 /正文

在Idle中使用python3.4。为什么我会收到这个错误消息。。。你知道吗

ValueError: invalid literal for int() with base 10: '4 4' 

将输入语句转换为整数时。我正在尝试将int放在我的输入语句中,而不是使用

num1 = int(num1) 
num2 = int(num2) 

第一种方法行得通,但为什么第二种方法不行呢?如果我运行以下代码,第二种方法将起作用:

number = int(input("Number?"))
print(number)

那为什么不能用第二种方法呢?你知道吗

第一种方式有效:

#Ask the user to input 2 values and store them in variables num1 num2

num1, num2 = input("Enter 2 numbers: ").split()

#Convert the strings into regular numbers Integer
num1 = int(num1)
num2 = int(num2)

# Type problems and store in a variable
sum = num1 + num2
difference = num1 - num2
product = num1 * num2
quotient = num1 / num2
remainder = num1 % num2

print("{} + {} = {}".format(num1,num2,sum))
print("{} - {} = {}".format(num1,num2,difference))
print("{} * {} = {}".format(num1,num2,product))
print("{} / {} = {}".format(num1,num2,quotient))
print("{} % {} = {}".format(num1,num2,remainder))

这样不行。我写这段代码只是为了说明我做了什么不同。除了此行和将字符串转换为整数(num=int)的另一种方法外,其余代码都是相同的。你知道吗

第二路

num1, num2 = int(input("Enter 2 numbers: ")).split()

Tags: andthe方法store代码formatnumberinput
2条回答

第二种方法是尝试将4 4转换为int,但它无法做到,您需要将int作为字符串应用于每个数字,这样您的代码就变成:

num1, num2 = map(int, input('Enter 2 numbers: ').split())

另一方面—稍后调用变量sum就是在隐藏内置变量sum,这可能会进一步导致问题—我通常使用total。他说

您还可以使用operator模块中的函数来简化:

import operator as op

num1, num2 = map(int, input('Enter 2 numbers: ').split())
for symbol, func in (
    ('+', op.add), ('-', op.sub), ('*', op.mul),
    ('/', op.truediv), ('%', op.mod)
):
    print('{} {} {} = {}'.format(num1, symbol, num2, func(num1, num2)))
    # or print(num1, symbol, num2, '=', func(num1, num2))

输入4 4将给出:

4 + 4 = 8
4 - 4 = 0
4 * 4 = 16
4 / 4 = 1.0
4 % 4 = 0

相关问题 更多 >