Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
9 / 5 / 5
Регистрация: 08.04.2020
Сообщений: 93

Проблемы с работой со списками python

10.04.2020, 20:14. Показов 3803. Ответов 37

Студворк — интернет-сервис помощи студентам
Пишу вот такой код:
s=input()
s=s.split()
mi=int(s[1])
ma=int(s[1])
for i in range(1, len(s)):
if int(s[i])>int(ma):
ma=s[i]
if int(s[i])<int(mi):
mi=int(s[i])
pma=s.index(ma, [s[1] [len(s)]])
pmi=s.index(mi, [s[1] [len(s)]])
s.insert(pma, mi)
s.insert(pmi, ma)
для решения этой задачи: Поменять местами самый большой и самый маленький элементы списка. Код в целом работает топорно, выдаёт эту ошибку в разных вариациях: string index out of range. Где может быть ошибка? Я как-то неверно обращаюсь к элементу списка?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.04.2020, 20:14
Ответы с готовыми решениями:

Проблемы с работой со списками python
Добрый день! Решаю вот такую задачу: Дан текстовый файл, содержащий целые числа. Удалить из него все четные числа. вот таким кодом: f...

Проблемы с работой со списками python
Решаю вот такую задачу: удалить из файла все чётные числа вот таким кодом:f = open(&quot;Anaconda.txt&quot;, &quot;r&quot;) data =...

Проблемы с работой со строками python
Добрый день! Я пытаюсь редактировать строку вот таким вот кодом: isk=str(input()) for i in range(0, len(isk)): if str(isk)=='A': ...

37
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
10.04.2020, 20:19
расставьте тэги кода, пожалуйста.

Добавлено через 1 минуту
предполагаются, что элементы списка не повторяются?
0
9 / 5 / 5
Регистрация: 08.04.2020
Сообщений: 93
10.04.2020, 20:28  [ТС]
s=input() #ввод строки
s=s.split() #превращение строки в список
mi=int(s[1]) #условно считаю наименьшим значением значение, стоящее на первом месте
ma=int(s[1]) #условно считаю наибольшим значением значение, стоящее на первом месте
for i in range(1, len(s)): #цикл с первого элемента списка до последнего
if int(s[i])>int(ma): #проверяем, больше ли элемент с этим номером наибольшего
ma=s[i] #обновляем значение наибольшего числа
if int(s[i])<int(mi): #проверяем, меньше ли элемент с этим номером наименьшего
mi=int(s[i]) #обновляем значение наименьшего числа
pma=s.index(ma, [s[1] [len(s)]]) #ищем позицию вхождения наибольшего числа, по-другому искать не умею, предполагается, что такое число одно
pmi=s.index(mi, [s[1] [len(s)]]) #ищем позицию вхождения наименьшего числа, предполагается, что таковое тоже одно
s.insert(pma, mi) #присваиваю наибольшему числу значение наименьшего
s.insert(pmi, ma) #прошлый тег, только наоборот
0
8 / 6 / 2
Регистрация: 09.04.2020
Сообщений: 31
10.04.2020, 20:31
Anacoder, провернте на сайте такое действие:
пишите PYTHON в квадратных скобках, вставляете код, пишите /PYTHON в квадратных скобках.
Это вас просили сделать, а не расставить комментарии.
Или же можно выделить код и на панели нажать на кнопку PYTHON
И не стоит забывать, что первый элемент списка имеет индекс 0.
1
9 / 5 / 5
Регистрация: 08.04.2020
Сообщений: 93
10.04.2020, 20:33  [ТС]
Благодарю, что разъяснили, сейчас сделаю

Добавлено через 50 секунд
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
s=input()
s=s.split()
mi=int(s[0])
ma=int(s[0])
for i in range(len(s)):
    if int(s[i])>int(ma):
        ma=s[i]
    if int(s[i])<int(mi):
        mi=int(s[i])
pma=s.index(ma, [s[0] [len(s)]])
pmi=s.index(mi, [s[0] [len(s)]])
s.insert(pma, mi)
s.insert(pmi, ma)
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
10.04.2020, 20:35
Python
1
2
3
4
5
6
7
8
9
10
11
# input
lst = list(map(int, input().split()))
 
# max and min elements
max_el = lst.index(max(lst))
min_el = lst.index(min(lst))
 
# swap
lst[max_el], lst[min_el] = lst[min_el], lst[max_el]
 
print(*lst, sep=" ")
1
8 / 6 / 2
Регистрация: 09.04.2020
Сообщений: 31
10.04.2020, 20:37
Цитата Сообщение от DmitryOST Посмотреть сообщение
И не стоит забывать, что первый элемент списка имеет индекс 0.
↑↑↑
0
9 / 5 / 5
Регистрация: 08.04.2020
Сообщений: 93
10.04.2020, 20:41  [ТС]
Благодарю Вас, Jabbson, ваше решение, несомненно, эргономичнее и питоничнее моего. Но всё же, можете, пожалуйста, указать на мою ошибку? Мне задачу не сдавать, для себя пишу, поэтому интересно было бы узнать, где это я ссылаюсь на элемент вне списка
0
 Аватар для Semen-Semenich
5222 / 3469 / 1173
Регистрация: 21.03.2016
Сообщений: 8,295
10.04.2020, 20:44
Лучший ответ Сообщение было отмечено Anacoder как решение

Решение

Anacoder,
допустим у нас список [123,56,77,89] значить s[1] = 123. а теперь информация
list.index(x, [start [, end]]) Возвращает положение первого элемента со значением x (при этом поиск ведется от start до end)
откуда в списке с длиной 4 элемента будет индекс 123? вот ваша ошибка в этих строках
Python
1
2
pma=s.index(ma, [s[1] [len(s)]])
pmi=s.index(mi, [s[1] [len(s)]])
1
9 / 5 / 5
Регистрация: 08.04.2020
Сообщений: 93
10.04.2020, 20:44  [ТС]
Подправил, спасибо за замечание
0
9 / 5 / 5
Регистрация: 08.04.2020
Сообщений: 93
10.04.2020, 20:53  [ТС]
Semen-Semenich, благодарствую. Не подскажите, а как тогда нужно написать, чтобы индекс искался с начала списка и до его конца? А то когда я пишу
Python
1
2
pma=s.index(ma, [0, [len(s)]])
pmi=s.index(mi, [0, [len(s)]])
мне говорят slice indices must be integers or have an __index__ method. Какой- то индекс всё равно необходим. И есть ли какой-нибудь более простой способ узнавать индекс того или иного числа в списке?
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
10.04.2020, 20:54
Лучший ответ Сообщение было отмечено Anacoder как решение

Решение

Цитата Сообщение от Jabbson Посмотреть сообщение
max_el = lst.index(max(lst))
так?
1
9 / 5 / 5
Регистрация: 08.04.2020
Сообщений: 93
10.04.2020, 20:57  [ТС]
Jabbson, да, я понял Ваш метод, но он ищет индекс наибольшего число. А можно ли как-то искать индекс конкретного числа в списке?
0
 Аватар для Miryz
291 / 131 / 58
Регистрация: 24.11.2019
Сообщений: 532
10.04.2020, 21:02
Я думаю следует видоизменить код для большей универсальности:
Python
1
2
3
4
5
6
lst = input()
lst = list(''.join(lst))
max_el = lst.index(max(lst))
min_el = lst.index(min(lst))
lst[max_el], lst[min_el] = lst[min_el], lst[max_el]
print(*lst, sep=" ")
1
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
10.04.2020, 21:05
Лучший ответ Сообщение было отмечено Anacoder как решение

Решение

Цитата Сообщение от Anacoder Посмотреть сообщение
Jabbson, да, я понял Ваш метод, но он ищет индекс наибольшего число. А можно ли как-то искать индекс конкретного числа в списке?
передавайте в list.index конкретное число и будет искать конкретное число.

lst.index(3) найдет индекс конкретного числа 3

Добавлено через 55 секунд
Цитата Сообщение от Miryz Посмотреть сообщение
lst = list(''.join(lst))
что тут происходит?
0
9 / 5 / 5
Регистрация: 08.04.2020
Сообщений: 93
10.04.2020, 21:06  [ТС]
Всем спасибо, код заработал
0
 Аватар для Miryz
291 / 131 / 58
Регистрация: 24.11.2019
Сообщений: 532
10.04.2020, 21:08
Это для ввода без пробелов
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
10.04.2020, 21:11
Цитата Сообщение от Miryz Посмотреть сообщение
Это для ввода без пробелов
не совсем понял, можете привести пример? и еще почему вы считаете, что универсальность повысится?
0
9 / 5 / 5
Регистрация: 08.04.2020
Сообщений: 93
10.04.2020, 21:13  [ТС]
Ещё один вопрос, а как конкретному элементу по индексу присвоить значение конкретного числа, переменной или элемента? Всё, если это list.insert, я разобрался
0
Эксперт Python
 Аватар для unfindable_404
693 / 471 / 204
Регистрация: 22.03.2020
Сообщений: 1,051
10.04.2020, 21:13
Цитата Сообщение от Miryz Посмотреть сообщение
Это для ввода без пробелов
Может тогда это
Python
1
2
lst = input()
lst = list(''.join(lst))
заменить на это
Python
1
lst = input().split()
И более того ваш вариант двузначные числа будет воспринимать как два однозначных числа.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.04.2020, 21:13
Помогаю со студенческими работами здесь

Проблемы с работой по Python. Memory error
При попытке запустить , выходит ошибка. Я начинаюший в datascince, пытаюсь запустить машинное обучение ) типа предсказание . Может кто...

Проблемы с работой батника
Добрый день, помогите пожалуйста, ступор уже второй день. Нужен bat-ник, который будет искать pdf файлы во всех вложенных папках, находя...

Проблемы с работой системы
Всем привет! Собрал систему: Материнская плата: ASUS ROG STRIX B450-I GAMING Процессор: AMD Ryzen 7 2700 OEM YD2700BBM88AF ...

Проблемы с подключением и работой с БД
НЕ получается подключить БД. Работаю с phpmyadmin через openserver. Вот код который пишу. (касати mysql_connect, mysql_select_db,...

Проблемы с работой ТП 7.0 на Windows 7
Доброе время суток! У меня проблема с работой Турбо Паскаля 7,0. Ноутбук ASUS К50IJ OC Windows 7 32-bit. Проблема работы заключается ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru