Python

Python Задание по програмированию

1. max = s[0] # максимум
2. imax = 0 # индекс максимума
3. for i in range(1, len(s)):
4. if i > imax:
5. max = s[i]
6. imax = i
7. print(imax)

Найдите ошибку
Ramazan Tajiyew
Ramazan Tajiyew
54
1) Это не Бейсик, номера строк - лишние.
2) В Питоне важны отступы, без них не работает.
3) Условие в цикле (если я правильно угадал отступы) выполняется во всех итерациях, кроме первой. По окончании цикла, если список был непустым, то imax = len(s) - 1, max = s[-1], независимо от значений элементов списка. Т.е. алгоритм всегда "находит" последний элемент, причём, максимально неэффективным способом.

Это код от нейросети? А то я смотрю, бот в следующем ответе привёл болтовню от нейросети в его защиту.

Найти максимальный элемент и его индекс можно гораздо проще:
 ns = [int(s) for s in input().split()]
imax = max(range(len(ns)), key = ns.__getitem__)
print(f"элемент [{imax}] = {ns[imax]}")
Пример:
 1 2 5 6 3
элемент [3] = 6
Если нужно искать в вещественных числах, замени int на float.
АБ
Арсен Баймиев
87 571
Лучший ответ
Ramazan Tajiyew Извините,а можно просто вы напишите строку в правильном виде(просто я не шарю что такое итерация и прочее)
Ошибка в коде заключается в том, что он не находит максимальный элемент списка, а выводит индекс последнего элемента.
В строке 5 необходимо заменить "max = s[i]" на "if s[i] > max: max = s[i]". Код после исправления будет выглядеть следующим образом:
 1. max = s[0] # максимум  

2. imax = 0 # индекс максимума

3. for i in range(1, len(s)):

4. if s[i] > max:

5. max = s[i]

6. imax = i

7. print(imax)
Dima Gazmen написал как я, какой хороший чатжпт)
Арсен Баймиев На номера строк ругается при компиляции. Дело в том, что это не Бейсик.

И решается всё в одну строку без ненужных циклов.
В данном коде ошибка отсутствует. Он должен работать корректно при условии, что переменная s определена и содержит элементы.

Код находит максимальный элемент в списке s и выводит его индекс. Первый элемент списка s[0] инициализирует переменную max, а его индекс 0 инициализирует переменную imax. Затем происходит цикл, который ищет элементы в списке, начиная с индекса 1 и сравнивает каждый элемент с max. Если находится элемент, который больше текущего max, то он становится новым max, а его индекс становится новым imax. В конце цикла выводится индекс максимального элемента.
Dima Gazmen чатжпт написал не правильно
Арсен Баймиев Говносеть защищает свой корявый код? :-)
Dima Gazmen аааа хорош)
 max = s[0]

imax = 0

for i in range(1, len(s)):

if s[i] > max:

max = s[i]

imax = i

print(imax)
попробуй так?