Выдает ошибку: not all arguments converted during string formatting

Vlad09996

Новичок
Пользователь
Окт 9, 2020
6
0
1
Windows 10
python 3.8.5
Задача: Дано пятизначное число. Цифры на четных позициях занулить. Например, из 12345 получается число 10305.
Вот сам код:
Код:
a=input("Enter number XXXXX:")


if a[0]%2==0:
    a[0]=0
if a[1]%2==0:
    a[2]=0
if a[2]%2==0:
    a[2]=0
if a[3]%2==0:
    a[3]=0
if a[4]%2==0:
    a[4]=0
print(str(a[0]+a[1]+a[2]+a[3]+a[4]))
 
Последнее редактирование:

lynulx

Модератор
Команда форума
Модератор
Авг 9, 2020
139
19
18
1) применяете % к строке
2) str в принте не нужна, элементы а уже строки
 
  • Мне нравится
Реакции: Student и Vlad09996

Vlad09996

Новичок
Пользователь
Окт 9, 2020
6
0
1
Поменял тип данных на числа, вылезла другая ошибка: 'int' object is not subscriptable
Код:
a=int(input("Enter number XXXXX:"))


if a[0]%2==0:
    a[0]=0
if a[1]%2==0:
    a[2]=0
if a[2]%2==0:
    a[2]=0
if a[3]%2==0:
    a[3]=0
if a[4]%2==0:
    a[4]=0
print(str(a[0]+a[1]+a[2]+a[3]+a[4]))
 

lynulx

Модератор
Команда форума
Модератор
Авг 9, 2020
139
19
18
н
Поменял тип данных на числа, вылезла другая ошибка: 'int' object is not subscriptable
Код:
a=int(input("Enter number XXXXX:"))


if a[0]%2==0:
    a[0]=0
if a[1]%2==0:
    a[2]=0
if a[2]%2==0:
    a[2]=0
if a[3]%2==0:
    a[3]=0
if a[4]%2==0:
    a[4]=0
print(str(a[0]+a[1]+a[2]+a[3]+a[4]))
не там поменяли.

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

Vlad09996

Новичок
Пользователь
Окт 9, 2020
6
0
1
Новая ошибка: 1602325119982.png
Главное с a[0]=0 проблем нету, а со всеми последующими присвоениями выводит ошибку.



Код:
a=input("Enter number XXXXX:")


if int(a[0])%2==0:
    a[0]=0
if int(a[1])%2==0:
    a[1]=0
if int(a[2])%2==0:
    a[2]=0
if int(a[3])%2==0:
    a[3]=0
if int(a[4])%2==0:
    a[4]=0
print(a[0]+a[1]+a[2]+a[3]+a[4])
 

lynulx

Модератор
Команда форума
Модератор
Авг 9, 2020
139
19
18
Новая ошибка: Посмотреть вложение 652
Главное с a[0]=0 проблем нету, а со всеми последующими присвоениями выводит ошибку.



Код:
a=input("Enter number XXXXX:")


if int(a[0])%2==0:
    a[0]=0
if int(a[1])%2==0:
    a[1]=0
if int(a[2])%2==0:
    a[2]=0
if int(a[3])%2==0:
    a[3]=0
if int(a[4])%2==0:
    a[4]=0
print(a[0]+a[1]+a[2]+a[3]+a[4])
строка - неизменяемый класс, сделайте список или отдельную переменную
 
  • Мне нравится
Реакции: Vlad09996

Vlad09996

Новичок
Пользователь
Окт 9, 2020
6
0
1
Спасибо большое!
Правильное решение:
Код:
a=input("Enter number XXXXX:")

j=a[0]
g=a[1]
k=a[2]
h=a[3]
l=a[4]
if int(a[0])%2==0:
    j=0
if int(a[1])%2==0:
    g=0
if int(a[2])%2==0:
    k=0
if int(a[3])%2==0:
    h=0
if int(a[4])%2==0:
    l=0
print(str(j)+str(g)+str(k)+str(h)+str(l))
 

lynulx

Модератор
Команда форума
Модератор
Авг 9, 2020
139
19
18
Спасибо большое!
Правильное решение:
Код:
a=input("Enter number XXXXX:")

j=a[0]
g=a[1]
k=a[2]
h=a[3]
l=a[4]
if int(a[0])%2==0:
    j=0
if int(a[1])%2==0:
    g=0
if int(a[2])%2==0:
    k=0
if int(a[3])%2==0:
    h=0
if int(a[4])%2==0:
    l=0
print(str(j)+str(g)+str(k)+str(h)+str(l))
а теперь советую сделать цикл, ведь тут куча повторяющихся кусков кода
 

alext

Популярный
Пользователь
Май 10, 2020
288
66
28
Python:
num = '12345'
print('0'.join(num[::2]) + ('0' if len(num) % 2 == 0 else ''))
 

lynulx

Модератор
Команда форума
Модератор
Авг 9, 2020
139
19
18
Python:
num = '12345'
print('0'.join(num[::2]) + ('0' if len(num) % 2 == 0 else ''))
человек только учить начинает, а ты ему свои однострочники
 

Vlad09996

Новичок
Пользователь
Окт 9, 2020
6
0
1
Python:
num = '12345'
print('0'.join(num[::2]) + ('0' if len(num) % 2 == 0 else ''))
Все равно спасибо, лишним не будет))
 

Vlad09996

Новичок
Пользователь
Окт 9, 2020
6
0
1
Ради интереса, пытался зациклить через while, но не получается. Выскакивает такая ошибка: IndexError: string index out of range
1602740375222.png
Вот код:
Код:
a=input("Enter number XXXXX:")
j=0
k=[None]
h=int(a[j])%2
while j in range(5):
    if isinstance(h, int):
        g=0
        k.append(g)
        j=j+1
        g=a[j]
print(k)
 

Форум IT Специалистов