Помогите разобраться с ошибкой PYTHON
У меня задача на Степике:
На вход программы пользователь вводит целое положительное число. Программа должна посчитать и вывести два числа: произведение четных и нечетных цифр числа, через пробел. В случае, если четных или нечетных цифр в числе нет, на месте произведения выводится 1.
Вот моё решение:
n = list(input())
chet = []
nechet = []
prodchet = 1
prodnechet = 1
for i in n:
if int(i) % 2 == 0:
chet.append(i)
else:
nechet.append(i)
if len(chet) > 0 or len(nechet) > 0:
for i in nechet:
prodnechet *= int(i)
for i in chet:
prodchet *= int(i)
elif len(chet) < 0 or len(nechet) < 0:
prodnechet = 1
prodchet = 1
print(prodchet, prodnechet)
Мне почему то выдает ошибку:
Failed test #5 of 7. Runtime error
Error:
Traceback (most recent call last):
File "jailed_code", line 8, in <module>
if int(i) % 2 == 0:
ValueError: invalid literal for int() with base 10: ' '
Ответы (3 шт):
У вас попадает пустая строка в функцию int()
int('')
ValueError: invalid literal for int() with base 10: ''
Это происходит, видимо, потому, что на входе вы даете число вместе с пробелом, а так как пробел тоже является символом, он попадает в список и дальше к нему применяется функция int().
Кстати, можно же сделать намного легче и обойтись только двумя переменными (правда, нужно тогда обработать ситуацию, когда произведение равно нулю, что я, конечно же, не сделал).
number = list(input());
chet = 1;
nechet = 1;
for i in number:
if int(i) % 2 == 0:
chet *= int(i);
else:
nechet *= int(i);
print(chet, nechet);
Судя по ошибке, в одном из тестов в строку кроме цифр попадают пробелы. Их надо удалить (str.strip):
n = list(input().strip())
...
P.S. Я не удержался и немного поколдовал над вашим решением:
products = [1, 1]
for d in map(int, input().strip()):
products[d % 2] *= d
print(*products)