在Python 3中将字符串转换为整数分割两个变量的问题

时间:2016-07-28 23:17:20

标签: python python-3.4

在空闲时使用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()

1 个答案:

答案 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