Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 30, 2016 13:40:36

dima757
Зарегистрирован: 2016-06-26
Сообщения: 35
Репутация: +  0  -
Профиль   Отправить e-mail  

почему

В списке все элементы различны. Поменяйте местами минимальный и максимальный элемент этого списка.[

a = [int(i) for i in input().split()]
for i in range(len(a)):
    a[a.index(max(a))], a[a.index(min(a))] = a[a.index(min(a))], a[a.index(max(a))]
print(' '.join([str(i) for i in a]))     
почему с одним списком работает, а с другим выводит первоначальный вариант

Офлайн

#2 Июнь 30, 2016 14:17:15

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

почему

покажите списки - как мы угадать можем то?



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#3 Июнь 30, 2016 14:24:45

dima757
Зарегистрирован: 2016-06-26
Сообщения: 35
Репутация: +  0  -
Профиль   Отправить e-mail  

почему

ok
3 4 5 2 1
1 5 4 3 2
-30000 30000
2147483647 -2147483648
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 17 16 15 14
1 2 3 4 5 6 7 8 9 10
10 9 8 7 6 5 4 3 2 1
1
типо таких

Офлайн

#4 Июнь 30, 2016 19:29:43

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

почему

dima757
почему с одним списком работает,
потому как в цикле ты их постоянно обмениваешь поэтому если длина списка четная то результат не верный.вообще то в цикле лучше найти индексы мин и мах элементов и потом выйдя из цикла их обменять местами.можно вообще без цикла обойтись но в источнике задачи эталонное решение сделано именно через цикл так что
"О сколько нам открытий чудных Готовят просвещенья дух
И опыт, сын ошибок трудных, И гений, парадоксов друг"
А.С.Пушкин

Отредактировано marvellik (Июнь 30, 2016 19:43:41)

Офлайн

#5 Июнь 30, 2016 20:15:10

dima757
Зарегистрирован: 2016-06-26
Сообщения: 35
Репутация: +  0  -
Профиль   Отправить e-mail  

почему

marvellik спасибо!!!! Пушкин зажигает

a = [int(i) for i in input().split()]
b = 0
c = 0
for i in a:
    b = a.index(min(a))
    c = a.index(max(a))
a[c], a[b] = a[b], a[c]    
print(' '.join([str(i) for i in a]))
такая хрень вышла

Офлайн

#6 Июнь 30, 2016 20:48:52

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

почему

по твоему решению цикл вообще не нужен ты в цикле перебираешь список и каждый раз присваиваешь переменным индексы мах и мин элементов. тут проще намного

a = [int(i) for i in input().split()]
b = a.index(min(a))
c = a.index(max(a))
a[c], a[b] = a[b], a[c]    
print(' '.join([str(i) for i in a]))
и как с циклом решается обрати внимание что в цикле происходит и для чего он нужен так как по занятиям с функциями мин и мах еще не ознакомили
a = [int(s) for s in input().split()]
index_of_min = 0
index_of_max = 0
for i in range(1, len(a)):
    if a[i] > a[index_of_max]:
        index_of_max = i
    if a[i] < a[index_of_min]:
        index_of_min = i
a[index_of_min], a[index_of_max] = a[index_of_max], a[index_of_min]
print(' '.join([str(i) for i in a]))
это эталонное решение с сайта

Отредактировано marvellik (Июнь 30, 2016 20:50:02)

Офлайн

#7 Июнь 30, 2016 21:45:20

dima757
Зарегистрирован: 2016-06-26
Сообщения: 35
Репутация: +  0  -
Профиль   Отправить e-mail  

почему

я понял, просто забыл убрать(или лень)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version