Вопрос задан 16.11.2023 в 05:05. Предмет Информатика. Спрашивает Завьялов Олег.

С клавиатуры вводится 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) Не могу исправить ошибку
0 0
Перейти к ответам

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Меляева Ангелина.

Ответ:

В начале разберем метод 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, лучше изменить название переменной, чтобы она не повторялась.

Все остальное верно, вам надо просто поменять название переменных и изменить ввод, на более грамотный

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Кажется, у вас есть несколько ошибок в предоставленном коде. Давайте исправим их:

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) ```

Теперь код должен работать правильно.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос