где найти примеры кодов по книге майкла доусона о пайтон
Работа с файлами. (Майкл Доусон)
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Вложения
trivia.txt (1.5 Кб, 105 просмотров) |
Какую книгу лучше читать после «Майкл Доусон.Программируем на Python»?
Какая книга подходит для прочтения новичком после «Майкл Доусон.Программируем на Python»?
Python М.Доусон
Вообщем, тут такое дело, изучаю Пайтон по Доусону и там есть задача с такими условиями : «А вот.
Чья книга больше подойдёт для новичка, Доусон или Лутц?
Марк Лутц «Изучаем python» Майкл Доусон «Программируем на python»
Так это же строка 33. Она извлекает значение из файла. Зачем дальше эта приписка?
Строка кончается whitespace символом и автор с помощью доступа по индексу извлекает из строки только число. Проверка во всем этом безобразии нужна, чтобы в случае если, что-то пойдёт не так, то не возникло исключение.
Вообще конечно это очень кривой способ (не знаю почему он так сделал), более правильно будет использовать метод строк strip, чтобы избавится от whitespace символов.
Не пробел, а символ новой строки (\n). Ну это ещё конечно зависит от системы, в windows конец строки это перевод каретки и конец строки (\r\n), а в linux просто символ конца строки (\n).
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Лабораторная работа №5. Работа с файлами и алгоритмы сортировки
1. Написать функцию Load для считывания из текстового файла (например, Workers.txt) информации о.
Работа с файлами(Запись,чтение,работа с данными)
Здравствуйте, никак не могу осилить файлы. Для начала вот само задание: В справочной автовокзала.
Книга «Программируем на Python»
Привет, Хаброжители! Вы наверняка слышали о книге Майкла Доусона (Michael Dawson), в которой он учит языку программирования Python тем же самым путем, то есть через программирование несложных игр. Учиться, создавая свои собственные развлекательные программы.
Несмотря на развлекательный характер примеров, демонстрируется вполне серьезная техника программирования. Ниже приведен отрывок из главы «Объектно-ориентированное программирование. Игра «Блек-джек»»
Знакомство с игрой «Блек-джек»
Проект, над разработкой которого мы потрудимся в этой главе, представляет собой упрощенную версию карточной игры «Блек-джек». Игровой процесс идет так: участники получают карты, с которыми связаны определенные числовые значения — очки, и каждый участник стремится набрать 21 очко, но не больше. Количество очков, соответствующих карте с цифрой, равно ее номиналу; валет, дама и король идут за 10 очков, а туз — за 1 или 11 (в зависимости от того, как выгоднее для игрока).
Компьютер сдает карты и играет против нескольких игроков, от одного до семи. В начале каждого раунда компьютер передает каждому из участников, в том числеи себе, по две карты. Игрокам видны карты друг друга, и даже автоматически подсчитывается текущая сумма очков на руках у каждого. Впрочем, из двух карт, которые дилер сдал себе, одна до поры до времени лежит рубашкой вверх.
Затем каждому игроку по очереди предоставляется возможность тянуть дополнительные карты. Игрок может брать их из перемешанной колоды до тех пор, пока ему угодно и пока сумма очков на руках у него не превысила 21. При превышении, которое называется перебором, участник проигрывает. Если все перебрали, то компьютер выводит свою вторую карту и начинает новый раунд. Если же один или несколько участников остались в игре, то раунд еще не закончен. Дилер открывает свою вторую карту и, по общему правилу «Блек-джека», тянет дополнительные карты для себя до тех пор, пока сумма его очков не будет равна 17 или больше. Если дилер, в нашем случае — компьютер, совершает перебор, то победу одерживают все участники, оставшиеся в игре. Если нет, то сумма очков каждого из участников сравнивается с очками, которые набрал компьютер. Набравший больше очков (человек или компьютер) побеждает. При одинаковой сумме очков объявляется ничья между компьютером и одним или несколькими участниками.
Игровой процесс отражен на рис. 9.1.
Отправка и прием сообщений
Объектно-ориентированная программа — это своего рода экологическая система, в которой объекты — живые организмы. Чтобы поддерживать биоценоз в порядке, его обитатели должны взаимодействовать; так же происходит и в ООП. Программа не может быть полезна, если объекты в ней не взаимодействуют каким-либо удачно заданным способом. В терминах ООП такое взаимодействие называется отправкой сообщений. На практике объекты всего лишь вызывают методы друг друга. Это хотя и не совсем вежливо, но, во всяком случае, лучше, чем если бы объектам пришлось напрямую обращаться к атрибутам друг друга.
Знакомство с программой «Гибель пришельца»
Программа изображает ситуацию из компьютерной игры, в которой игрок стреляет в инопланетного агрессора. Все буквально так и происходит: игрок стреляет, а пришелец умирает (но, правда, успевает напоследок произнести несколько высокопарных слов). Это реализовано с помощью посылки сообщения от одного объекта другому. Результат работы программы отражен на рис. 9.2.
Говоря технически, программа создает hero — экземпляр класса Player и invader — экземпляр класса Alien. При вызове метода blast() объекта hero с аргументом invader этот объект вызывает метод die() объекта invader. Другими словами, когда герой стреляет в пришельца, это значит, что объект «герой» посылает объекту «пришелец» сообщение с требованием умереть. Этот обмен сообщениями показан на рис. 9.3.
Код этой программы вы можете найти на сайте-помощнике (courseptr.com/downloads) в папке Chapter 9. Файл называется alien_blaster.py:
Отправка сообщения
Прежде чем один объект сможет послать сообщение другому, надо, чтобы объектов было два! Столько их и создано в основной части моей программы: сначала объект класса Player, с которым связывается переменная hero, а потом объект класса Alien, с которым связывается переменная invader.
Интересное происходит в строке кода, следующей за этими двумя. Командой hero.blast(invader) я вызываю метод blast() объекта hero и передаю ему как аргумент объект invader. Изучив объявление blast(), вы можете увидеть, что этот метод принимает аргумент в параметр enemy. Поэтому при вызове blast() его внутренняя переменная enemy ссылается на объект класса Alien. Выведя на экран текст, метод blast() командой enemy.die() вызывает метод die() объекта Alien. Таким образом, по существу, экземпляр класса Player посылает экземпляру класса Alien сообщение, которым вызывает его метод die().
Прием сообщения
Объект invader принимает сообщение от объекта hero закономерным образом: вызывается метод die() и пришелец умирает, сказав самому себе душераздирающее надгробное слово.
Сочетание объектов
Обычно в жизни сложные вещи строятся из более простых. Так, гоночную автомашину можно рассматривать как единый объект, который, однако, составлен из других, более простых объектов: корпуса, двигателя, колес и т. д. Иногда встречается важный частный случай: объекты, представляющие собой наборы других объектов. Таков, например, зоопарк, который можно представить как набор животных. Эти типы отношений возможны и между программными объектами в ООП. К примеру, ничто не мешает написать класс Drag_Racer, представляющий гоночный автомобиль; у объектов этого класса будет атрибут engine, ссылающийся на объект Race_Engine (двигатель). Можно написать и класс Zoo, представляющий зоопарк, у объектов которого будет атрибут animals — список животных (объектов класса Animal). Сочетание объектов, как в этих примерах, позволяет строить сложные объекты из простых.
Знакомство с программой «Карты»
В программе «Карты» объекты представляют отдельные игральные карты, которыми можно воспользоваться для любой из игр от «Блек-джека» до «Подкидного дурака» (в зависимости от того, каковы ваши вкусы и денежные активы). Далее в той же программе строится объект «рука» (Hand), представляющий набор карт одного игрока; это не что иное, как список объектов-карт. Результат работы программы показан на рис. 9.4.
Я буду разбирать код небольшими порциями, однако вы можете ознакомиться и с целой программой на сайте-помощнике (www.courseptr.com/downloads) в папке Chapter 9. Файл называется playing_cards.py.
Создание класса Card
Первым делом в этой программе я создаю класс Card, объекты которого будут представлять игральные карты.
У каждого объекта класса Card есть атрибут rank, значение которого — достоинство карты. Атрибут класса RANKS содержит все возможные значения: туз («A»), карты с номиналами от 2 до 10, валет («J»), дама («Q») и король («K»). У каждой карты есть также атрибут suit, представляющий масть карты. Все его возможные значения содержит атрибут класса SUITS: «c» (clubs) — трефы, «d» (diamonds) — бубны, «h» (hearts) — червы и, наконец, «s» (spades) — пики.
Например, объект со значением rank, равным «A», и значением suit, равным «d», представляет бубновый туз. Значения этих двух атрибутов, соединенных в единую строку, возвращает для вывода на печать специальный метод __str__().
Создание класса Hand
Следующее, что я должен сделать в программе, — создать класс Hand, экземпляры которого будут представлять наборы объектов-карт:
У нового объекта класса Hand появляется атрибут cards, представляющий собой список карт. Таким образом, атрибут единичного объекта — список, который может содержать сколь угодно много других объектов.
Метод clear() очищает список карт: атрибут «руки» cards приравнивается к пустому списку. Метод add() добавляет объект к списку cards. Метод give() удаляет объект из списка cards, принадлежащего данной «руке», и добавляет тот же объект в набор карт другого объекта класса Hand (для этого вызывается его метод add()). Иными словами, первый объект Hand посылает второму объекту Hand сообщение: добавить в атрибут cards данный объект Card.
Применение объектов-карт
В основной части программы я создаю и вывожу на экран пять объектов класса Card:
У первого из созданных экземпляров класса Card атрибут rank равен «A», а атрибут suit — «c» (туз треф). На экране этот объект отображается в виде Ac; вид других карт аналогичен.
Сочетание объектов-карт в объекте Hand
Теперь я создам экземпляр класса Hand, свяжу его с переменной my_hand и выведу информацию о нем на экран:
Добавлю в my_hand пять объектов класса Card и снова выведу объект на экран:
На экране отобразится текст Ac 2c 3c 4c 5c.
А сейчас я создам еще один экземпляр класса Hand под названием your_hand. Применив к my_hand метод give(), передам из «своей руки» в «вашу руку» две карты и затем выведу содержимое обеих «рук» на экран:
Как и следовало ожидать, your_hand имеет вид Ac 2c, а my_hand — 3c 4c 5c.
В конце программы я вызову метод clear() объекта my_hand и напечатаю его на экране еще раз:
Создание новых классов с помощью наследования
Одна из ключевых идей ООП — наследование. Благодаря ему можно основать вновь создаваемый класс на существующем, причем новый класс автоматически получит (унаследует) все методы и атрибуты старого. Это как если бы за весь тот объем работы, который ушел на создание первоначального класса, не пришлось платить!
Расширение класса через наследование
Наследование особенно полезно тогда, когда программист хочет создать более узкую и специализированную версию готового класса. Как вы уже знаете, наследующий класс приобретает все методы и атрибуты родительского. Но ведь ничто не мешает добавить собственные методы и атрибуты для расширения функциональности объектов этого нового класса.
Вообразим, например, что ваш класс Drag_Racer задает объект — гоночный автомобиль с методами stop() и go(). Можно на его основе создать новый класс, описывающий особый тип гоночных машин с функцией очистки ветрового стекла (на скорости до 400 км/ч о стекло будут все время биться насекомые). Этот новый класс автоматически унаследует методы stop() и go() от класса Drag_Racer. Значит, вам останется объявить всего один новый метод для очистки ветрового стекла, и класс будет готов.
Для Хаброжителей скидка 25% по купону — Python
Показать панель управления
Комментарии • 34
Почему реальные игры на python не пишут?
А как же kivy фреймворк с его разработкой игр под ведройд?
Попалась эта книга на глаза и начал изучение с ее прочтения. Искал где скачать книгу на ПК и попал на ваш обзор 🙂
На гитхабе есть код из книги
Книга Кори Альтхоффа «#Сам себе программист» тоже весьма не плохая.
Книга же по 3 питону?
Спасибо за вашу работу по анализу книг!
а сама книга 2014 года?
Последнее издание 2019 вроде, питон современный
Скажи пожалуйста, как нормально выучить pygame
Да черт его знает. Не видел нормальной документации по PyGame. Официальная, на первый взгляд, кривая. Книг хороших не встречал. Да и зачем учить PyGame, если хочется в игры, то надо идти в Unity, или Unreal, или что там еще сейчас популярное.
(с учётом того что знаешь python)
Майкл Доусон: «Программируем на Python»
Кто уже читал? Хорошая ли книга (может, есть что-то ещё)? Просто хочу летом выучить Python на базовом уровне. Заранее спасибо за ответы.
Впервые такую слышу. Её ещё и не скачать. 400 страниц маловато будет, если там ещё и код на примере игр предлагают. У Лутца вот чисто с примерами кода 1300 страниц, и таких два тома, по теории рекомендую её.
Сам-то прочитал бы эти книги?
Глупый вопрос. Прочитал бы ещё раз? Вполне вероятно, они того стоят, приготовлены в лучшем виде, лучше читать 1300 с подачи одного автора, чем десяток по 400, оторванных и перекрывающих друг друга. Первый том просто необходим к прочтению, это джуниор уровень на самом деле. Второй том большей частью про сеть на весьма низком уровне, что можно опустить и от второго тома останется страниц 300 к прочтению.
Может скачаешь и посмотришь оглавление. Там вообще рассматриваются принципы работы с сетью, сокеты, мультиплексирование, urllib, веб-сервисы, cgi, что конечно хорошо для общего развития, но для начала может быть лишней информацией.
Считаю, что книги по питону не нужны. Питон на столько тривиальный язык, что надо быть дебилом, чтобы не смочь его осилить по докам на сайте или в крайнем случае по интуиту.
Полегче плюсов всяких, но есть свои заморочки. Подручная книга, типа Лутца, нужна.
На русском языке? Ссылку дайте если есть в электронном виде.
Интересно, педон ты осилил так же хорошо, как и русский?
Python: Задачи и решения (Глава 1. Начало работы. Программа Game Over).
Продолжаем учиться программированию. После второй главы в книге: Майкл Доусон «Программируем на Python», 2014 (Michael Dawson «Python Programming for the Absolute Beginner», 3rd Edition), где я изучила особенности работы с текстом в языке программирования Python, предложены задания. Давайте выполнять их вместе. Я приведу свой вариант решения, а вы пишите ваши варианты в комментариях.
1) Научитесь вызывать ошибку: в интерактивном режиме введите название своего любимого сорта мороженого. Потом исправьте ошибку и создайте команду, которая будет правильным образом выводить на экран название
этого сорта мороженого.
2) Напишите и сохраните программу, которая будет выводить ваше имя и дожидаться, пока пользователь нажмет Enter для выхода. Запустите эту программу, дважды щелкнув на ее значке.
3) Напишите программу, которая будет выводить на экран ваш любимый афоризм. Не забудьте о том, что автор афоризма должен быть упомянут на отдельной строке.