Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Программируем на Python

Anna | 16.06.2014 | нет комментариев
Периодично нам в редакцию приходят письма с вопросом будет ли новейший тираж книги «Программируем на Python» М.Доусона. Невзирая на то, что оригинал «Python Programming for the Absolute Beginner, 3rd Edition» вышел в 2010г., он до сих пор в бестах на amazon.com. Оглавление книги построено на фактических примерах программирования примитивных игр. Нам дюже увлекательно узнать суждение специалистов, что дозволит принять решение издавать ли книгу.

Полное содержание дозволено посмотреть тут.

Отрывок из Главы 5. Списки и словари. Игра «Виселица»/


Кортежи — отличный метод манипулировать элементами различных типов в составе одной последовательности. Но от того, что кортеж неизменяем, изредка появляются неудобства. К счастью, есть последовательности иного вида, так называемые списки (lists), которые умеют все то же самое, что и кортежи, и даже огромнее — легко потому, что список изменяем. Его элементы дозволено удалять, а также добавлять новые. Дозволено даже подвергать список сортировке. Я познакомлю вас с еще одной разновидностью последовательностей — словарями (dictionaries). Если список организован как комплект значений, то словарь — как комплект пар значений. Аналогично своему тезке с книжной полки, словарь разрешает находить то значение, которое соответствует какому-либо иному. Говоря больше подробно, в этой главе вы обучитесь делать следующее:

• создавать списки, индексировать их и делать срезы;
• добавлять и удалять элементы списка;
• использовать списковые способы, которые разрешают сортировать список и добавлять значение в конец;
• использовать вложенные последовательности, которыми дозволено представить данные всякий трудности;
• пользоваться словарями для работы с парами значений;
• добавлять и удалять элементы словаря.

Знакомство с игрой «Виселица»

В центре внимания этой главы — план, посвященный игре «Виселица». Втайне от пользователя компьютер выбирает какое-либо слово, и игрок должен испробовать отгадать его, высказывая свои предположения побуквенно. Всякий раз, когда игрок заблуждается, компьютер дорисовывает на экране изображение фигурки под виселицей. Если в отведенное число попыток игроку не получается отгадать слово, то «повешенный» пропадает. На рис. 5.1–5.3 показан игровой процесс во каждому его ужасном великолепии.

Игра увлекательна не только сама по себе. Восхитительно также и то, что к концу постижения этой главы вы узнаете, как сделать собственную версию игры. Вы сумеете, скажем, обзавестись своим личным списком «секретных» слов либо заменить мои простые рисунки больше значительными.

Рис. 5.1. Играем в «Виселицу». Гм… Что же за слово он загадал?

Рис. 5.2. В этой игре я поборол!

Рис. 5.3. А эта игра закончилась не лучшим образом, исключительно для псевдографического человечка
Применение списков

Списки, как и кортежи, — это последовательности. Но списки изменяемы. Их элементы поддаются модификации. Вот отчего списки владеют той же функциональностью, что и кортежи, и могут кое-что еще. То, что вы теснее знаете о работе с кортежами, применимо и к спискам, а значит, обучиться ими пользоваться для вас не составит труда.

Знакомство с программой «Арсенал героя 3.0»

Эта программа основана на больше ранней игре «Арсенал героя 2.0», с которой мы познакомились в главе 4. Тут для хранения данных об арсенале героя использованы не кортежи, а списки. Исходная часть «Арсенала героя 3.0» выдает такие же итоги, как и больше ранняя версия. Да и код в ней фактически тот же самый; разница лишь в том, что взамен кортежей всюду использованы списки. На рис. 5.4 показано окно программы позже выполнения этой первой части. Дальнейший за ней код показывает пригодные следствия изменяемости списков и некоторые новые приемы работы с ступенчатоds_rqvmk!

Изменяемость списков

Нужно предполагать, вас теснее утомили бесчисленные фразы, всеобщий толк которых заключается в том, что список работает так же, как кортеж. До сих пор, если не считать замены круглых скобок квадратными, списки не проявили себя ничем новым по сопоставлению с кортежами. Но разница все же есть, и она громадна. Повторю: списки изменяемы. Отсель следует, что со списками дозволено проделывать уйма трюков, для которых кортежи непригодны.

Присвоение нового значения элементу, выбранному по индексу

От того что список изменяем, то любому его элементу дозволено присвоить новое значение:

# присваиваем значение элементу по индексу
print(“Вы обменяли меч на арбалет.”)
inventory[0] = “арбалет”
print(“Теперь ваш арсенал содержит следующие предметы:”)
print(inventory)
input(“nНажмите Enter, Дабы продолжить.”)
В этом коде элементу списка inventory, имеющему индекс 0, присваивается значение
“арбалет”:
inventory[0] = “арбалет”

Это новое строковое значение замещает бывшее (“меч”). Как стал выглядеть список, показывает функция print, с поддержкой которой на экран выводится новая версия inventory.

ЗАПАДН?

Дозволено приписать новое значение присутствующему элементу списка, предпочтя его по индексу, но сделать этим методом новейший элемент невозможно. Попытка приписать какое-либо значение элементу, которого ранее не существовало, вызовет ошибку.

Присвоение новых значений срезу списка

Разрешается присвоить новое значение не только отдельному элементу списка, но и срезу. Я присвоил срезу inventory[4:6] значение списка из одного элемента [“магический кристалл”]:

# приписываем значение элементам по срезу индексов
print(“За золото и драгоценные камни вы приобрели волшебный кристалл, способный предсказывать грядущее.”)
inventory[4:6] = [“магический кристалл”]
print(“Теперь в вашем распоряжении:”)
print(inventory)
input(“nНажмите Enter, Дабы продолжить.”)

Двум элементам списка — inventory[4] и inventory[5] — присваивается цельное строковое значение “магический кристалл”. От того что одноэлементный список стал значением двухэлементного среза, длина последовательности inventory уменьшилась на единицу.

Источник: programmingmaster.ru
Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB