在空闲时使用Python 3.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()
答案 0 :(得分:0)
您的第二种方法是尝试将4 4
转换为无法执行的int
,您需要将int
作为字符串应用于每个单独的数字,因此您的代码将变为:
num1, num2 = map(int, input('Enter 2 numbers: ').split())
旁注 - 稍后通过调用变量sum
,您可能会影响内置sum
,这可能会导致问题进一步发生 - 我通常会使用total
。< / p>
您还可以使用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