Форум сайта python.su
Всем привет!
Начала изучать Python по учебнику Майкла Доусона “Прогрммируем на python (v.3.0.)”. Из опыта программирования - только уроки информатики в школе + курс матмоделирования в универе, но, думаю, это не проблема при сильном желании научиться (это так, предыстория).
Теперь, собсно, сабж: дошла до темы кортежи и списки (всего лишь) и столкнулась с заданиями:
1) создайте программу, которая будет выводить список слов в случайном порядке. На экране должны печататься без повторений все слова из представленного списка.
Ее попробовала реализовать. Прикол в том, что слова она местами меняет, но вот и печатает их по одной буковке. Почему так и как это можно исправить?
# Messed words #Выводит список слов в случайном порядке. #На экране печатаются без повторения все слова из представленного списка. # import random new_script = [] script = ['life','mountain','spirit','reason','wind','guitar','eagle','rainbow'] print('\nNow I\'m going to print my list in correct order: ', script) print('\nNow I\'m going to print this script in random order: ') while script: position = random.randrange(len(script)) new_script += script[position] script = script[:position] + script[(position + 1):] print(new_script) input('\n\nPress Enter to exit. ')
Отредактировано Amazzzonka (Апрель 19, 2012 14:49:26)
Прикреплённый файлы: words_random_001.ex.py (724 байта)
Офлайн
Ошибки в коде:
Во-первых код совсем неправильный, то есть делает не то, что Вы ожидаете.
То есть. По-символьно выводит из-за
new_script += script[position]
new_script.append(script[position])
del script[position]
Отредактировано cutwater (Апрель 19, 2012 14:30:46)
Офлайн
Потому что здесь
new_script += script[position]
>>> a = [] >>> a += "some text" >>> a ['s', 'o', 'm', 'e', ' ', 't', 'e', 'x', 't']
new_script.append(script[position])
Офлайн
cutwater
Ошибки в коде:
Во-первых код совсем неправильный, то есть делает не то, что Вы ожидаете.
То есть. По-символьно выводит из-заНадо использоватьnew_script += script[position]new_script.append(script[position])
Во-вторых достаточно было бы использовать random.shuffle
Офлайн
И еще совет. Поменьше экспрессии. Писать 32м шрифтом не значит подчеркивать свою важность. Скорее наоборот, раздражать читающих.
Офлайн
cutwaterоке, просто тут в редакторе сообщений только 2 опции: big and small. я ж не думала, что до такой степени big!)
И еще совет. Поменьше экспрессии. Писать 32м шрифтом не значит подчеркивать свою важность. Скорее наоборот, раздражать читающих.
Офлайн
>Тут вообще тупик - не знаю, с чего и начать(((
оказывается, кто-то все же выполняет все эти задания в книжках
По-хорошему, для _достойного_ выполнения этого «задания» нужно нечто гуевое, что, в свою очередь, требует осознанного выбора используемой GUI библиотеки и соответствующих навыков. Поэтому я бы на данном этапе предложил Вам реализовать интерфейс этого задания по-минимуму (ввод/вывод на консоль) и сосредоточиться на собственно программной логике.
Офлайн
Хм, тоже по этой книжке учу пайтон.
Первую задачку решил так:
import random words = ('зажигалка', 'ножницы', 'стул', 'кресло', 'руль', 'чашка', 'диск', 'копилка', 'люстра', 'жалюзи') count = 0 wordsPrint = [] wordsLen = len(words) #print('в кортеже words', wordsLen, 'элементов') #проверка while count < wordsLen: numberRandom = random.randint(0, wordsLen - 1) #генерируется случайное число #print('случайное число:', numberRandom) #проверка wordRandom = words[numberRandom] #берётся слово, номер которого - сгенерированное выше случайное число #print('случайное слово:', wordRandom) #проверка if wordRandom not in wordsPrint: wordsPrint.append(wordRandom) # слово выше добавляется в список #print('Слова в списке :', wordsPrint) #проверка print(wordsPrint[count]) count += 1
Отредактировано Kane (Апрель 19, 2012 18:12:19)
Офлайн
Вторую задачку начинал, форму общения с пользователем взял из “переводчика” (в моём издании стр. 156), но отчего-то забросил, сделал только прибавление пунктов к характеристике
т.е. ты создавал не список с вложением, а словарь? я думала сделать по аналогии с рекордами, но пока не хватает понимания, как использовать уже знакомые элементы для реализации этой проги, а тем более с вариантом “возвращения” поинтов.
а предыдущая неожиданно реализована!
Офлайн
Я простой список использовал (lists который). Переводчик упомянул, когда начал листать книжку в поиске этих задачек, она первая и попалась. Я оттуда только меню и подсмотрел. В рекордах оно кажется такое же по сути. В общем, у меня идея была такая: показать меню, 1 это сила, 2 здоровье и т.д. Обратиться к списку по адресу
список[введённое_число - 1]
Офлайн