Python 3 сумма 2 целых чисел с вводом. ValueError: недопустимый литерал для int () с основанием 10: '1 1' - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь добавить 2 целых числа в Python3, используя ввод.

def sum(x,y):
    return x+y
a = int(input("Enter first number"))
b = int(input("Enter second number"))
print("The sum of a and b is", sum(a,b))

и получите следующую ошибку

Traceback (most recent call last):
File "Main.py", line 7, in <module>
a = int(input("Enter first number"))
ValueError: invalid literal for int() with base 10: '1 1'

Еще одна проблема, это нормально работает в моем ноутбуке Jupyter, но для другого онлайн-центра практики он показывает эту ошибку.

Ответы [ 3 ]

0 голосов
/ 09 января 2019

Учитывая, что ваш ввод идет с пробелами, вы можете использовать команду replace и заменить эти пробелы.

def sum(x,y):
    return x+y

a = int(input("Enter first number: ").replace(" ",""))
b = int(input("Enter second number: ").replace(" ",""))
print("The sum of a and b is: ", sum(a,b))

В вашем конкретном случае это должно работать. Что я здесь делаю, так это то, что я преобразую входные данные, например, '8 3 525 5', в '835255', что само по себе позже будет легко преобразовано в int и будет отлично работать.

Удаление дубликата, а также приятель.

0 голосов
/ 09 января 2019

Если вы хотите ввести все значения в той же строке, что и 1 1 , тогда вы должны использовать split():

def sum(x,y):
    return x+y

a, b = map(int, input("Enter numbers ").strip().split())
print("The sum of a and b is", sum(a,b))

Выход:

C:\Users\Desktop>py xxx.py
Enter numbers 1 1
The sum of a and b is 2

Если необходимо ввести отдельно значения:

def sum(x,y):
    return x+y

a = int(input("Enter first number ").strip())
b = int(input("Enter second number ").strip())

print("The sum of a and b is", sum(a,b))

Выход:

C:\Users\Desktop>py xxx.py
Enter numbers 1 1
The sum of a and b is 2
0 голосов
/ 09 января 2019

Ваш код работает, но не для конкретного ввода, который дает центр практики. Сделайте эту модификацию:

nums = [int(x) for x in input("Enter numbers: ").split()]
print("The sum of a and b is", sum(nums))

Кстати, sum - встроенная функция, поэтому вам не нужно писать ее самостоятельно. Единственная строка, которая действительно изменилась, это:

nums = [int(x) for x in input("Enter numbers: ").split()]

nums будет список чисел, как следует из названия. Следующая часть - это понимание списка. input("Enter numbers: ").split() примет ввод и разделит его на любой пробел. Например, 'hello world' будет преобразован в список с ['hello', 'world']. В этом случае '1 1' будет преобразован в список с ['1', '1']. Затем, с пониманием списка, вы превращаете каждый элемент в целое число (['1', '1'] -> [1, 1]). Затем вы передаете этот список в sum. Кроме того, это делает то же самое, что и понимание списка:

nums = list(map(int, input("Enter numbers: ").split()))

Неважно, какой вы выберете. Если вы хотите получить настоящую фантазию, вы можете сделать все это в одной строке:

print("The sum of a and b is", sum(map(int, input("Enter numbers: ").split())))
...