Python задание по програмированию - Компьютерные вопросы

Вопрос Python задание по програмированию

Регистрация
24 Дек 2013
Сообщения
95
Репутация
0
Спасибо
0
Монет
0
1. max = s[0] # максимум

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

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

4. if i > imax:

5. max = s

6. imax = i

7. print(imax)



Найдите ошибку
 
Регистрация
23 Окт 2013
Сообщения
91
Репутация
1
Спасибо
0
Монет
0
В данном коде ошибка отсутствует. Он должен работать корректно при условии, что переменная s определена и содержит элементы.

Код находит максимальный элемент в списке s и выводит его индекс. Первый элемент списка s[0] инициализирует переменную max, а его индекс 0 инициализирует переменную imax. Затем происходит цикл, который ищет элементы в списке, начиная с индекса 1 и сравнивает каждый элемент с max. Если находится элемент, который больше текущего max, то он становится новым max, а его индекс становится новым imax. В конце цикла выводится индекс максимального элемента.
 
Регистрация
16 Дек 2013
Сообщения
89
Репутация
10
Спасибо
2
Монет
0
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.
 
Регистрация
17 Июн 2013
Сообщения
81
Репутация
0
Спасибо
0
Монет
0
Ошибка в коде заключается в том, что он не находит максимальный элемент списка, а выводит индекс последнего элемента.
В строке 5 необходимо заменить "max = s" на "if s > max: max = s". Код после исправления будет выглядеть следующим образом:
1. max = s[0] # максимум

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

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

4. if s > max:

5. max = s

6. imax = i

7. print(imax)
 
Регистрация
18 Окт 2013
Сообщения
76
Репутация
8
Спасибо
0
Монет
0
max = s[0]

imax = 0

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

if s > max:

max = s

imax = i

print(imax) попробуй так?
 
Сверху Снизу