Форум сайта python.su
А я вот так сделал:
import random WORDS = ["python", "кошка", "банан", "банан", "машина", "мотоцикл"] NEW_WORDS = [] while WORDS: a = random.choice(WORDS) if a not in NEW_WORDS: NEW_WORDS.append(a) WORDS.remove(a) print(NEW_WORDS)
Офлайн
insiki
ужасный код - чрезмерно много лишних действий. исходный список пустеет. Самое оптимальное то как сделано в предыдущем посту.
И да ..чувствуется почерк Си, это не преступление, но на Питоне лучше писать в питон стиле.
Офлайн
JOHN_16В предложенном предыдущем варианте с random.shuffle выведутся в том числе повторяющиеся элементы списка, а в задании сказано, что повторов в выводе быть не должно
ужасный код - чрезмерно много лишних действий. исходный список пустеет. Самое оптимальное то как сделано в предыдущем посту.
И да ..чувствуется почерк Си, это не преступление, но на Питоне лучше писать в питон стиле.
Отредактировано insiki (Янв. 27, 2015 07:04:32)
Офлайн
insiki
заменить random.shuffle(script) на random.shuffle(set(script)) . И это по прежнему лучше :-)
Офлайн
JOHN_16О! Про set в книге еще не говорилось, но какая штука удобная! Благодарю
заменить random.shuffle(script) на random.shuffle(set(script)) . И это по прежнему лучше :-)
Офлайн
insikiТак и не понял с какого перепуга должны повторятся элементы списка. Метод shuffle() уже переставил элементы списка в случайном порядке, а цикл for вывел эти элементы без повтора.
В предложенном предыдущем варианте с random.shuffle выведутся в том числе повторяющиеся элементы списка, а в задании сказано, что повторов в выводе быть не должно
Офлайн
А я вот так сделал:
import random spisok = ["python", "кошка", "банан", "банан", "машина", "мотоцикл"] empty_list = [] count = len(spisok) schetchik = 0 while count != schetchik: for item in spisok: item = random.choice(spisok) empty_list.append(item) schetchik += 1 print(empty_list) # Первый способ
Офлайн
О, я тоже новичок в программировании и изучаю Питон по этой книжке. Мне нравится, что там всякие забавные задания надо выполнять. Сейчас с викториной парюсь, что-то не нравится она мне.
Для задачки со случайным списком у меня такой был вариант (но про шуффле пришлось почитать в инетернете, наверное там какое-то другое решение подразумевалось):
words = ["мумми-тролль", "комета", "шляпа", "морра", "ледяная дева", "мю"] import random random.shuffle(words) print(words) input("\nНажмите Энтер, чтобы выйти")
pool = 30 atts = [["Сила", 0], ["Здоровье", 0], ["Мудрость", 0], ["Ловкость", 0]] a = " " while a != "0": a = input(''' 0 - выйти 1 - посмотреть характеристики 2 - изменить характеристики\n ''') if a == "1": print(atts) elif a == "2": b = 8 while b != 5: print(atts) print("Свободных очков: " + str(pool) + ".") b = int(input(''' 1 - изменить Силу 2 - изменить Здоровье 3 - изменить Мудрость 4 - изменить Ловкость 5 - назад в меню ''')) if b == 5: pass else: print("Введите целое число, на которое хотите изменить характеристику.") print("Если хотите отнять пункты, введите отрицательное число.") n = int(input()) pool -= n atts[b - 1][1] += n elif a!= "1" and a != "2" and a != "0": print("В меню нет такого варианта.") input("\nНажмите Энтер, чтобы выйти")
print("Привет, давай поиграем в угадывание числа!\n") print("Для начала определим интервал.") a = int(input("Введи число начала интервала: ")) b = int(input("Введи число конца интервала: ")) print("Теперь загадай целое число от", str(a), " до ", str(b) + ", а я буду угадывать.\n") input("Загадал? Если да, то нажми Enter.\n") otv = " " while otv != "ok" and (b - a) > 1: i = len(range(a, b)) j = int(i / 2) guess = range(a, b)[j] print(guess) otv = input("Попал? 'ok' Больше? 'bol' Меньше? 'men'\n") if otv == "bol": b = b a = guess elif otv == "men": a = a b = guess while otv != "ok" and (b - a) <= 1 and b != a - 1: if otv == "bol": print(b) otv = input("Попал? 'ok' Больше? 'bol' Меньше? 'men'\n") elif otv == "men": print(b - 1) otv = input("Попал? 'ok' Больше? 'bol' Меньше? 'men'\n") if otv == "ok": print("Ах, какой я умный!\n") else: print("Да ты мухлюешь!\n") input("Нажми Enter, чтобы выйти")
Отредактировано ranger (Апрель 29, 2015 21:39:21)
Офлайн
Я Лутца не читал, но вот по поводу задачи с персонажем и распределением очков между показателями : почему никто не использует в этой задаче ООП ? Неужто до этой задачи нет упоминания об ООП ? Ведь то, что персонажа удобно описать как объект с характеристиками лежит на поверхности. Например
Офлайн
aybИменно, там ООП дальше начинается и с ним уже более интересные игры (блэкджек). И это не Лутц, а Доусон. Я Лутца читаю параллельно, но у него слишком много информации и не всю ее можно сразу применить на практике. А Доусон для меня (полного нуба в программировании вообще) очень удобен, прочитал - сделал задание - запомнил.
Я Лутца не читал, но вот по поводу задачи с персонажем и распределением очков между показателями : почему никто не использует в этой задаче ООП ? Неужто до этой задачи нет упоминания об ООП ?
Офлайн