
С клавиатуры вводится 7-значное число. Если четных цифр в нем больше, чем нечетных, то найти сумму
всех его цифр, если нечетных больше, то найти произведение 1 3 и 6 цифры. #a = [6,2,3,4,5,6,7] a = input("Введите 7-значное число через пробел: ") a.split(a) print (a.split()) b = 0 c = 0 f = 1 for i in a: if i%2 == 0: b+= 1 else: c+=1 if b>c: #f = sum(a) for i in a: f = f + i print(f) else: r = a[0]*a[2]*a[5] print(r) Не могу исправить ошибку

Ответы на вопрос

Ответ:
В начале разберем метод split()
Его можно использовать так:
a = input('Введите число через пробел: ').split(), он сразу после ввода преобзарует строку в список.
потому что строка a.split() ничего не дает.
Используя мое предложение, можно будет выводить просто a и он будет уже как список.
Разберем ошибку TypeError
TypeError это ошибка типа данных, то есть мы не можем для цифр применять методы для строк.
В вашем случае он возникает, когда вы делаете цикл
for i in a:
и после проверку
if i % 2 == 0:
b += 1
Как раз-таки из-за того, что вы не правильно использовали метод split(), строка не превратилась в список
Также вы пытаетесь текст поделить на 2 и узнать остаток.
Ввод:
Ввод семизначного числа надо сделать так
a = [int(ii) for ii in input('Введите семизначное число через пробел: ').split()]
Он сразу будет преобразовывать все числа внутри списка.
Тогда мы избежим ошибку.
Также вы в циклах дважды используете i, лучше изменить название переменной, чтобы она не повторялась.
Все остальное верно, вам надо просто поменять название переменных и изменить ввод, на более грамотный



Кажется, у вас есть несколько ошибок в предоставленном коде. Давайте исправим их:
1. В строке `a.split(a)` вы пытаетесь разделить строку `a` саму на себя, что не имеет смысла. Вам нужно использовать метод `split()` без аргументов, чтобы разделить строку по пробелам.
2. В строке `if+i%2==0:` вы пытаетесь проверить четность числа, но вы не конвертируете `i` в целое число. Вам нужно сделать это с помощью `int(i)`.
3. В строке `a.split()` вы получаете список строк, и для выполнения операций с цифрами вам нужно преобразовать их в целые числа. Можно использовать `map(int, a.split())` для этого.
4. В строке `if+b>c:` и в следующей, вам нужно использовать оператор `and` для проверки обоих условий.
5. В строке `f+=sum(a)` у вас `sum(a)` - это сумма всех элементов списка, но в данном случае вам нужна сумма цифр, так что используйте `sum(map(int, a))`.
Исправленный код будет выглядеть следующим образом:
```python a = input("Введите 7-значное число через пробел: ") a = a.split()
b = 0 c = 0 f = 0
for i in a: if int(i) % 2 == 0: b += 1 else: c += 1
if b > c: f = sum(map(int, a)) print(f) else: r = int(a[0]) * int(a[2]) * int(a[5]) print(r) ```
Теперь код должен работать правильно.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili