Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Python] наибольший и наименьший элемент 
V
    Опции темы
Paranorma
Дата 24.1.2007, 01:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 1.1.2007

Репутация: 1
Всего: 1



Как определить наибольший и наименьший элемент в списке??? Снова с помощью while, никаких for использовать нельзя. Должны быть переменные min и max, которые соответственно будут хранить значения минимального и максимального элемента списка. Понятно, что все элементы должны сравниваться друг с другом, но вот как быть с while до меня не доходит... smile 


Код

a = [45, 17, 28, 34, 100]
i = 0
while i < len(a):
    if a[i] < a[i+1]:
       Предполагаю, что начало будет таким, но не уверенна. HELP!!! 
PM MAIL Skype Jabber MSN   Вверх
V.A.KeRneL
  Дата 24.1.2007, 02:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vadim A. Kazantsev
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 3.12.2006
Где: Moscow, Russia

Репутация: 7
Всего: 14



Paranorma, задача становится интересной только от того, что это будет моя первая программа на Питоне, которого я вааще не знаю!.. smile

Код

a = [45, 17, 28, 34, 100]  # наш массичик :)

i = 0          # индекс, счётчик
nmin = i       # номер минимального элемента
min = a[nmin]  # собственно минимальный элемент
nmax = i       # номер максимального элемента
max = a[nmax]  # собственно максимальный элемент

while (i < len(a)): 
    if (a[i] < min): 
        nmin = i
        min = a[nmin]
    if (a[i] > max): 
        nmax = i
        max = a[nmax]
    i += 1

print "min = a[", nmin, "] = ", min
print "max = a[", nmax, "] = ", max


Никаких интерпретаторов для проверки у меня нету, так что пиши, если какие ошибки сделал... smile


Это сообщение отредактировал(а) V.A.KeRneL - 24.1.2007, 16:43


--------------------
«C'est un pense-creux d'ici. C'est le meilleur et le plus irascible homme du monde...» © Ф.М. Достоевский, «Бесы»
---/)/)---(\.../)---(\(\
--(':'=)---(=';'=)---(=':')
(")(")..)-(").--.(")-(..(")(")

PM MAIL IM ICQ AOL YIM MSN   Вверх
pythonwin
Дата 24.1.2007, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: нет
Всего: 36



V.A.KeRneL, работает! smile
++1
с питоном тебя smile
PM WWW GTalk Jabber   Вверх
albertn
Дата 24.1.2007, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 368
Регистрация: 17.7.2006
Где: г. Ставрополь

Репутация: 1
Всего: 34



V.A.KeRneL, молодец, только у тебя в коде избыточность. Можно было-бы обойтись без переменных min и max

Добавлено @ 12:14 
К тому-же min и max встроенные функции smile
PM WWW ICQ   Вверх
Paranorma
Дата 24.1.2007, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 1.1.2007

Репутация: 1
Всего: 1



V.A.KeRneL, с дебютом тебя! И огромное спасибо!

Я ее поправила вот так:

Код

a = [45, 17, 28, 34, 100, 25, 900, 18]
i = 0          
min = a[i]  
max = a[i]  
while i < len(a): 
    if a[i] < min: 
        min = i
        min = a[i]
    if a[i] > max: 
        max = i
        max = a[i]
    i = i + 1
print min, max

PM MAIL Skype Jabber MSN   Вверх
pythonwin
Дата 24.1.2007, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: нет
Всего: 36



Paranorma, молодец, что разобралась smile
PM WWW GTalk Jabber   Вверх
Paranorma
Дата 24.1.2007, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 1.1.2007

Репутация: 1
Всего: 1



Упс... ошибочка нашлась!

Код

a = [45, 17, 28, 34, 100, 25, 900, 18]
i = 0          
min = a[i]  
max = a[i]  
while i < len(a): 
    if a[i] < min: 
        min = a[i]
    if a[i] > max: 
        max = a[i]
    i = i + 1
print min, max


Так правильнее.
PM MAIL Skype Jabber MSN   Вверх
V.A.KeRneL
  Дата 24.1.2007, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vadim A. Kazantsev
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 3.12.2006
Где: Moscow, Russia

Репутация: 7
Всего: 14



pythonwinParanorma, спасибо за радушный приём! smile

pythonwin, ты добавил «+» не только к моей репе, но и к моему желанию изучить Python. 
Я неплохо знаю Ruby, и это мой любимый язык программирования. Но у Питона перед Рубином есть одно несомненное преимущество, которое приходится признавать, — это значительно более развитое русскоязычное сообщество.

Цитата(albertn @  24.1.2007, 12:11 Найти цитируемый пост)

V.A.KeRneL, молодец, только у тебя в коде избыточность. Можно было-бы обойтись без переменных min и max

На этом я особо ничего не потерял, кроме заведения [для удобства] двух дополнительных переменных (min и max), т.к., всё равно, насколько я понимаю, индексация по массиву (списку) в Питоне — это такой же метод. И пришлось бы вместо ``(a[i] < min)'' писать ``(a[i] < a[nmin])''. Поэтому, ещё вопрос, проиграл ли я на этом какие-то копейки или выиграл...

Цитата(albertn @  24.1.2007, 12:11 Найти цитируемый пост)

Добавлено @ 12:14 
К тому-же min и max встроенные функции smile

Это я тоже уже знаю. Но ведь Paranorma'е эти программульки нужны для инста, и её препод требует самостоятельной реализации алгоритмов. Даже больше, чтобы они были написаны конкретным образом, а именно — через цикл while.
А если допустить использование продвинутых стандартных методов Пайтона, то можно было и в этой задаче использовать метод reverse()
Код

>>> a = [1, 2, 3, 4, 5]
>>> a
[1, 2, 3, 4, 5]
>>> a.reverse()
>>> a
[5, 4, 3, 2, 1]


==========================================================================================
smile Paranorma, один важный совет из «Правил форума "Центр помощи"»: 
«Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или флажком при ответе»
Сделай это, пожалуйста, для всех своих тем, которые уже решены, и поступай так же в дальнейшем.
==========================================================================================

Ах да, совсем забыл сказать, я сегодня установил интерпретатор Питона, и теперь смогу полноценно помогать новичкам по вопросам, с ним связанным! smile


Это сообщение отредактировал(а) V.A.KeRneL - 24.1.2007, 17:48


--------------------
«C'est un pense-creux d'ici. C'est le meilleur et le plus irascible homme du monde...» © Ф.М. Достоевский, «Бесы»
---/)/)---(\.../)---(\(\
--(':'=)---(=';'=)---(=':')
(")(")..)-(").--.(")-(..(")(")

PM MAIL IM ICQ AOL YIM MSN   Вверх
Paranorma
Дата 25.1.2007, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 1.1.2007

Репутация: 1
Всего: 1



Код

a = [45, 17, 100, 28, 34, 100, 90, 82, 1000, 1000, 18, 1000]
i = 0                
min = a[i]         
max = a[i]  
while i < len(a): 
    if a[i] < min:
        nmin = i
        min = a[nmin]
    if a[i] > max: 
        nmax = i
        max = a[nmax]
    if i > nmax:
        nmax = i
    i = i + 1
print "a[", nmin, "] = ", min
print "a[", nmax, "] = ", max


Сегодня я вот что изобразила. Здесь трижды повторяется число 1000 и программка показывает индекс минимального и последнего максимального элемента списка.
PM MAIL Skype Jabber MSN   Вверх
V.A.KeRneL
Дата 25.1.2007, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vadim A. Kazantsev
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 3.12.2006
Где: Moscow, Russia

Репутация: 7
Всего: 14



Paranorma, мне кааца, что твоя программка содержит ашипки...
Мне интересно, ты не забыла проверить финальную версию, прежде чем сюда постить?
Код

>>> a = [45, 17, 100, 28, 34, 100, 90, 82, 1000, 1000, 18, 1000]
>>> i = 0
>>> min = a[i]
>>> max = a[i]
>>> while i < len(a):
...     if a[i] < min:
...         nmin = i
...         min = a[nmin]
...     if a[i] > max:
...         nmax = i
...         max = a[nmax]
...     if i > nmax:
...         nmax = i
...     i = i + 1
...
Traceback (most recent call last):
  File "<stdin>", line 8, in <module>
NameError: name 'nmax' is not defined
>>>

(В качестве ДЗ smile : Попробуй разобраться сама, в чём ошибка, и исправить её.)

Если хочется выявить первое и последнее вхождения максимальный и минимальный элементов в список, то нет ничего проще: 
Код

#!/Где обычно лежит Питон? (Для юниксов.)
# -*- coding: windows-1251 -*-

# наш массичик :)
a = [45, 17, 100, 17, 34, 100, 90, 82, 1000, 1000, 18, 1000]

i = 0          # индекс, счётчик
first_min = 0  # номер первого минимального элемента
last_min  = 0  # номер последнего минимального элемента
min = a[0]     # собственно минимальный элемент
first_max = 0  # номер первого максимального элемента
last_max  = 0  # номер последнего максимального элемента
max = a[0]     # собственно максимальный элемент

while (i < len(a)): 
    if (a[i] <= min): 
        if (a[i] < min): 
            first_min = i
        last_min = i
        min = a[i]
        
    if (a[i] >= max): 
        if (a[i] > max): 
            first_max = i
        last_max = i
        max = a[i]
    i += 1

print "first_min = ", first_min  #=> 1
print "last_min  = ", last_min   #=> 3
print "min = ", min              #=> 17

print "first_max = ", first_max  #=> 8
print "last_max  = ", last_max   #=> 11
print "max = ", max              #=> 1000


Удачи в освоении основ программирования! smile


Это сообщение отредактировал(а) V.A.KeRneL - 25.1.2007, 19:59


--------------------
«C'est un pense-creux d'ici. C'est le meilleur et le plus irascible homme du monde...» © Ф.М. Достоевский, «Бесы»
---/)/)---(\.../)---(\(\
--(':'=)---(=';'=)---(=':')
(")(")..)-(").--.(")-(..(")(")

PM MAIL IM ICQ AOL YIM MSN   Вверх
kectart
Дата 13.10.2022, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 12.10.2022

Репутация: нет
Всего: нет




Модератор: Сообщение скрыто.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.1116 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.