Найти - Пользователи
Полная версия: Python детсадовского уровня (циклы, кортежи, списки)
Начало » Python для новичков » Python детсадовского уровня (циклы, кортежи, списки)
1 2 3 4
Amazzzonka
Всем привет!
Начала изучать 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. ')

2) Напишите программу “Генератор персонажей” для ролевой игрыю Пользователю должно быть предоставлено 30 пунктов, которые можно распределить между 4мя характеристиками: Сила, Здоровье, Мудрость и Ловкость. Надо сделать так, чтобы пользователь мог не только брать эти пункты из общего “пула”, но и возвращать их туда из характеристик, которым он решит присвоить другие значения.
Тут вообще тупик - не знаю, с чего и начать(((
Тут такая просьба: я, конечно, понимаю, что проще код написать, чем натолкнуть человека на мысль так, чтобы он сам это сделал, но все же: подскажите, чему нужно уделить внимание и каким образом можно было бы реализовать. (я пока даже форму общения с пользователем придумать не могу)
cutwater
Ошибки в коде:

Во-первых код совсем неправильный, то есть делает не то, что Вы ожидаете.
То есть. По-символьно выводит из-за
new_script += script[position]
Надо использовать
new_script.append(script[position])

Во-вторых вместо ваших извращений со слайсами можно писать просто
del script[position]

В-третьих достаточно было бы использовать random.shuffle
prius
Потому что здесь
new_script += script[position]
script - строка (т.е. по сути список, состоящий из букв).
Пример тебе для размышления:
>>> a = []
>>> a += "some text"
>>> a
['s', 'o', 'm', 'e', ' ', 't', 'e', 'x', 't']
Замена выделенной строки в твоём скрипте на
new_script.append(script[position])
решит твою проблему
Успехов!
Amazzzonka
cutwater
Ошибки в коде:

Во-первых код совсем неправильный, то есть делает не то, что Вы ожидаете.
То есть. По-символьно выводит из-за
new_script += script[position]
Надо использовать
new_script.append(script[position])

Во-вторых достаточно было бы использовать random.shuffle

спасибо! я просто последнюю функцию не знаю)))) сейчас гляну в справке, как она применяется!
cutwater
И еще совет. Поменьше экспрессии. Писать 32м шрифтом не значит подчеркивать свою важность. Скорее наоборот, раздражать читающих.
Amazzzonka
cutwater
И еще совет. Поменьше экспрессии. Писать 32м шрифтом не значит подчеркивать свою важность. Скорее наоборот, раздражать читающих.
оке, просто тут в редакторе сообщений только 2 опции: big and small. я ж не думала, что до такой степени big!)
beelze
>Тут вообще тупик - не знаю, с чего и начать(((
оказывается, кто-то все же выполняет все эти задания в книжках
По-хорошему, для _достойного_ выполнения этого «задания» нужно нечто гуевое, что, в свою очередь, требует осознанного выбора используемой GUI библиотеки и соответствующих навыков. Поэтому я бы на данном этапе предложил Вам реализовать интерфейс этого задания по-минимуму (ввод/вывод на консоль) и сосредоточиться на собственно программной логике.
Kane
Хм, тоже по этой книжке учу пайтон.
Первую задачку решил так:

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

Вторую задачку начинал, форму общения с пользователем взял из “переводчика” (в моём издании стр. 156), но отчего-то забросил, сделал только прибавление пунктов к характеристике
Amazzzonka

Вторую задачку начинал, форму общения с пользователем взял из “переводчика” (в моём издании стр. 156), но отчего-то забросил, сделал только прибавление пунктов к характеристике

т.е. ты создавал не список с вложением, а словарь? я думала сделать по аналогии с рекордами, но пока не хватает понимания, как использовать уже знакомые элементы для реализации этой проги, а тем более с вариантом “возвращения” поинтов.
а предыдущая неожиданно реализована!
Kane
Я простой список использовал (lists который). Переводчик упомянул, когда начал листать книжку в поиске этих задачек, она первая и попалась. Я оттуда только меню и подсмотрел. В рекордах оно кажется такое же по сути. В общем, у меня идея была такая: показать меню, 1 это сила, 2 здоровье и т.д. Обратиться к списку по адресу
список[введённое_число - 1]
(- 1 т.к. первое значение в списке под нулём ). В списке я хранил 4 значения, эти самые характеристики. Потом пользователю предлагалось ввести, на сколько изменится выбранная хар-ка, и править её прям в нужном списке. Этот ввод писать в переменную, и вычитать эту переменную из кол-ва очков.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB