Главная страница
Навигация по странице:

  • Преобразование значений при помощи функций int(), fl oat() и str()

  • Таблица 3.1. Операторы сравненияОператор Значение

  • Проверка условий и определение истинности/ложности

  • Эксперименты с логическими операторами, операторами сравнения и условиями

  • 0 True>>> 6

  • Привет == Привет True>>> Прощай != Привет True>>> Привет == ПРИВЕТ

  • 42 == Привет False>>> 42 != 42

  • Проверка, победил ли игрок

  • • Инструкции присваивания

  • • Функции print() и input()

  • В ЭТОЙ ГЛАВЕ РАССМАТРИВАЮТСЯ СЛЕДУЮЩИЕ ТЕМЫ

  • Пример запуска программы «Шутки»

  • Учим Python, делая крутые игры 2018. Invent your owncomputer gameswith python


    Скачать 6.56 Mb.
    НазваниеInvent your owncomputer gameswith python
    Дата10.12.2022
    Размер6.56 Mb.
    Формат файлаpdf
    Имя файлаУчим Python, делая крутые игры 2018.pdf
    ТипДокументы
    #837554
    страница7 из 39
    1   2   3   4   5   6   7   8   9   10   ...   39
    54
    Глава 3 19.
    20. if guess > number:
    21. print('Твое число слишком большое.')
    22.
    23. if guess == number:
    24. break
    25.
    26. if guess == number:
    В игре «Угадай число» блок for начинается с инструкции for в строке 12, а первой строкой после блока for будет строка 26.
    Инструкция for всегда содержит двоеточие (:) после условия . Предпо- лагается, что если вы закончили инструкцию двоеточием, то со следующей строки начинается новый блок. Это показано на рис. 3.2.
    12. for guessesTaken in range(6):
    13. print('Попробуй угадать.') # Четыре пробела перед именем функции print
    14. guess = input()
    15. guess = int(guess)
    16.
    17. if guess < number:
    18. print('Твое число слишком маленькое.') # Восемь пробелов перед именем функции print
    19.
    20. if guess > number:
    21. print('Твое число слишком большое.')
    22.
    23. if guess == number:
    24. break
    25.
    26. if guess == number:
    Цикл выполняется 6 раз
    Рис. 3.2.
    Ход выполнение цикла for
    Рисунок 3.2 демонстрирует выполнение кода. Интерпретатор входит в блок for в строке 13 и продолжает выполнение сверху вниз. Когда програм- ма достигает конца блока, вместо того, чтобы спускаться дальше к следующей строке, начинается второе выполнение цикла со строки 13. Так повторяется
    6 раз, поскольку в вызове функции инструкции for указано range(6). Каждое выполнение цикла называется итерацией.
    Можно представить себе, что инструкция for сообщает: «Выполнить код в следующем блоке указанное количество раз».

    Игра «Угадай число»
    55
    Игрок угадывает число
    В строках 13 и 14 компьютер предлагает игроку угадать число и предо- ставляет возможность ввести свой вариант.
    13. print('Попробуй угадать.') # Четыре пробела перед именем функции print
    14. guess = input()
    Число, которое вводит игрок, сохраняется в переменной с именем guess.
    Преобразование значений при помощи
    функций int(), fl oat() и str()
    В строке 15 вызывается новая функция, которая называется int().
    15. guess = int(guess)
    Функция int() принимает аргумент и возвращает значение этого аргу- мента в виде целого числа.
    Введите следующий код в интерактивной оболочке, чтобы посмотреть, как работает функция int():
    >>>
    int('42')
    42
    Вызов int('42') возвратит целочисленное значение 42.
    >>>
    3 + int('2')
    5
    Вызов 3 + int('2') является примером, в котором возвращаемое значение функции int() используется как часть выражения. Вычисление производится до целочисленного значения 5.
    3 + int('2')
    3 + 2 5

    56
    Глава 3
    Несмотря на то что вы можете конвертировать строку в целое число, вы не можете сделать это с любой строкой.
    Попытка конвертации строки 'forty-two' (сорок два) в целое число при- ведет к ошибке .
    >>>
    int('сорок-два')
    Traceback (most recent call last):
    File "
    ", line 1, in
    int('сорок-два')
    ValueError: invalid literal for int() with base 10: 'сорок-два'
    Строка, которую вы передаете функции int(), должна содержать только цифры.
    В игре «Угадай число» мы получаем ответ игрока при помощи функции input()
    . Помните, функция input() всегда возвращает строку текста, вводи- мую игроком. Если игрок ввел 5, функция input() вернет строковое значение '5'
    , а не целочисленное значение 5. Но в будущем нам понадобится сравнить ввод игрока с целочисленным значением, а Python не сможет использовать операторы < и > для сравнения строкового и целочисленного значений.
    >>>
    4 < '5'
    Traceback (most recent call last):
    File "
    ", line 1, in
    4 < '5'
    TypeError: unorderable types: int() < str()
    Поэтому нам необходимо преобразовать строку в целое число.
    14. guess = input()
    15. guess = int(guess)
    В строке 14 мы присваиваем переменной guess то строковое значение, ко- торое ввел игрок. В строке 15 строковое значение переменной guess меняется на целочисленное, возвращаемое функцией int(). Код int(guess) возвращает новое целочисленное значение, которое было указано в виде строки, и опе- ратор = присваивает это новое значение переменной guess. В дальнейшем это позволит программе сравнить значение переменной guess и определить его отношение к секретному числу в переменной number.

    Игра «Угадай число»
    57
    Функции float() и str() будут возвращать версии переданных им аргу- ментов в виде числа с плавающей запятой и строки, соответственно. Введите следующий код в интерактивной оболочке:
    >>>
    float('42')
    42.0
    >>>
    float(42)
    42.0
    Если функции float() передать строку '42' или целое число 42, будет воз- вращено число с плавающей запятой — 42.0.
    Теперь попробуйте использовать функцию str().
    >>>
    str(42)
    '42'
    >>>
    str(42.0)
    '42.0'
    Если передать целое число 42 функции str(), она возвратит строковое значение '42'. Если передать ей то же число с плавающей запятой, вернется строковое значение '42.0'.
    Используя функции int(), float() и str(), вы можете брать значения одно- го типа данных и превращать их в значения другого типа.
    Логический тип данных
    В Python каждое значение имеет свой тип данных. Вы уже познакоми- лись с такими типами, как целое число, число с плавающей запятой и строка.
    Новый тип называется логическим или булевым. Логический (булев) тип дан- ных может принимать одно из двух значений: True (Истина) или False (Ложь) .
    Имена логических значений следует писать строго с соблюдением регистра:
    True или False.
    Логические значения могут храниться в переменных, как и другие типы данных.
    >>>
    spam = True
    >>>
    eggs = False

    58
    Глава 3
    В этом примере вы присваиваете переменной spam значение True, а пере- менной eggs — значение False. Строго соблюдайте регистр при вводе логиче- ских значений.
    Вы будете использовать логические значения с операторами сравнения для создания условий. Сначала давайте разберемся, что такое операторы сравнения, а затем перейдем к условиям.
    Операторы сравнения
    Операторы сравнения сравнивают два значения и возвращают результат в виде логического значения True или False. В таблице 3.1 приведен перечень всех операторов сравнения в Python.
    Таблица 3.1.
    Операторы сравнения
    Оператор
    Значение
    <
    Меньше
    >
    Больше
    <=
    Меньше или равно
    >=
    Больше или равно
    ==
    Равно
    !=
    Не равно
    Вы уже знакомы с арифметическими операторами +, -, * и /. Как и любые другие операторы, операторы сравнения объединяются со значениями для формирования выражений, таких как guessesTaken < 6.
    В строке 17 программы «Угадай число» используется оператор сравнения
    «меньше».
    17. if guess < number:
    Позднее мы рассмотрим инструкцию if более детально. Сейчас давай- те взглянем на выражение, которое следует за ключевым словом if (guess < number
    ). Это выражение содержит два значения (значения переменных guess и number), связанных между собой оператором < (меньше).
    Проверка условий и определение истинности/ложности
    Условие — это выражение, которое объединяет два значения при помо- щи оператора сравнения (такого, как < или >), выдавая в результате логиче- ское значение. Условие — это всего лишь иное название выражения, кото-

    Игра «Угадай число»
    59
    рое определяется как истинное (True) или ложное (False). Например, условия почти всегда встречаются в инструкциях if.
    Условие в строке 17 — guess < number — это вопрос: «Меньше ли значе- ние переменной guess, чем значение переменной number?». Если да, то условие определяется истинное. Если нет — то ложное.
    Предположим, переменная guess содержит целое число 10, а переменная number
    — 16. Так как 10 меньше, чем 16, это условие будет определено, как ис- тинное. Вычисление будет производиться следующим образом:
    guess < number
    10 < 16
    True
    Эксперименты с логическими операторами, операторами
    сравнения и условиями
    Введите следующие выражения в интерактивной оболочке, чтобы уви- деть логические результаты их вычисления:
    >>>
    0 < 6
    True
    >>>
    6 < 0
    False
    Условие 0 < 6 возвращает логическое значение True, так как число 0 мень- ше, чем число 6. А так как 6 больше 0, то условие 6 < 0 возвращает значение
    False
    Обратите внимание, что выражение 10 < 10 возвращает значение False, потому что число 10 не меньше числа 10.
    >>>
    10 < 10
    False
    Значения одинаковые. Если абстрактные Анна и Борис — одного роста, то нельзя сказать, что один из них выше или ниже другого. Оба эти заявления были бы ложными.
    Введите следующие выражения в интерактивной оболочке:

    60
    Глава 3
    >>>
    10 == 10
    True
    >>>
    10 == 11
    False
    >>>
    11 == 10
    False
    >>>
    10 != 10
    False
    В этом примере 10 равно 10, поэтому выражение 10==10 истинно. Но 10 не равняется 11, поэтому выражение 10==11 ложно. И наконец, 10 равно 10, поэтому выражение 10!=10 ложно.
    При помощи операторов сравнения вы также можете сравнивать строко- вые значения.
    >>>
    'Привет' == 'Привет'
    True
    >>>
    'Прощай' != 'Привет'
    True
    >>>
    'Привет' == 'ПРИВЕТ'
    False
    'Привет'
    — то же самое, что и 'Привет', поэтому выражение 'Привет' ==
    'Привет' истинно. 'Прощай' не равняется 'Привет', поэтому выражение 'Прощай'
    != 'Привет'
    — также истинно. Обратите внимание, что последнее выражение ложно. Вспомним, Python различает строчные и прописные буквы. Поэтому 'Привет'
    не равняется 'ПРИВЕТ'.
    Целочисленные значения и строковые значения никогда не будут равны друг другу, поскольку они принадлежат к разным типам. Например, введите следующий код в интерактивной оболочке:
    >>>
    42 == 'Привет'
    False
    >>>
    42 != '42'
    True
    В первом примере 42 — целое число, а 'Привет' — строка, поэтому значе- ния не одинаковы и выражение ложно. Во втором примере строковое значе-

    Игра «Угадай число»
    61
    ние '42' так же не является целым числом, поэтому выражение «целое число
    42
    не равняется строковому значению '42'» истинно.
    Разница между операторами = и ==
    Будьте внимательны, чтобы не перепутать оператор присваивания = и оператор сравнения ==.
    Знак равно (=) используется в инструкциях присваивания, чтобы сохра- нять (присваивать) значение переменной, а двойной знак равно (==) исполь- зуется в выражениях сравнения, чтобы определить, равны ли два значения.
    Их очень легко случайно перепутать.
    Чтобы запомнить разницу, помните, что обозначение оператора «Равно»
    (==), как и оператора «Не равно» (!=), состоит из двух символов.
    Инструкции if
    Код в строке 17 — это инструкция if .
    17. if guess < number:
    18. print('Твое число слишком маленькое.') # Восемь пробелов перед именем функции print
    Блок кода, который следует за инструкцией if, будет выполнен, если усло- вие инструкции будет определено как истинное. Если условие окажется лож- ным, код в блоке if будет пропущен.
    Используя инструкцию if, вы можете заставить программу запускать код только тогда, когда вам это необходимо.
    В строке 17 проверяется, меньше ли введенное игроком число, чем се- кретное число, которое загадал компьютер. Если да, интерпретатор перехо- дит внутрь блока if к строке 18, и игрок получает сообщение, что его число меньше загаданного.
    В строке 20 проверяется, что больше: введенное игроком или загаданное число.
    20. if guess > number:
    21. print('Твое число слишком большое.')
    Если это условие истинно, вызов функции print() сообщает игроку, что его число больше загаданного компьютером.

    62
    Глава 3
    Выход из цикла до его завершения при помощи
    инструкции break
    Инструкция if в строке 23 проверяет, равно ли число, введенное игроком, числу, которое загадал компьютер. Если да, программа запускает инструк- цию break в строке 24.
    23. if guess == number:
    24. break
    Инструкция break незамедлительно переносит выполнение из блока for в первую строку после окончания этого блока. Инструкцию break следует вы- зывать только из циклов, таких как блок for.
    Проверка, победил ли игрок
    Блок for заканчивается на следующей строкой кода без отступов, которой является строка 26.
    26. if guess == number:
    Выполнение блока for прекращается в двух случаях: либо когда было пройдено 6 циклов (и игрок исчерпал свои попытки угадать число), либо ког- да выполняется инструкция break в строке 24 (т.е. игрок победил).
    В строке 26 проверяется, угадал ли игрок число. Если да, происходит вы- полнение кода блока if в строке 27.
    27. guessesTaken = str(guessesTaken + 1)
    28. print('Отлично, ' + myName + '! Ты справился за ' + guessesTaken + ' попытки!')
    Строки 27 и 28 выполняются только в том случае, если условие в инструк- ции if в строке 26 истинно (то есть если игрок угадал число).
    В строке 27 вызывается функция str() , которая возвращает строковое значение guessesTaken + 1 (так как диапазон функции изменяется от 0 до 5, а не от 1 до 6). Код в строке 28 конкатенирует строки, чтобы сообщить игроку о его выигрыше и о том, с какой попытки ему это удалось. Только строковые значения могут конкатенироваться с другими строками. Вот почему нам не- обходимо в строке 27 преобразовать значение guessesTaken + 1 в строковую

    Игра «Угадай число»
    63
    форму. В противном случае при попытке объединить строку и целое число
    Python выдаст ошибку.
    Проверка, проиграл ли игрок
    Когда игрок использовал все свои попытки угадать число, интерпретатор переходит к следующей строке кода.
    30. if guess != number:
    В строке 30 используется оператор сравнения «Не равно», !=, чтобы про- верить условие «последняя попытка игрока угадать не равняется числу, зага- данному компьютером». Если это условие истинно, интерпретатор переходит к блоку if в строке 31.
    Строки 31 и 32 внутри блока if выполняются только в том случае, если условие в строке 30 истинно.
    31. number = str(number)
    32. print('Увы. Я загадала число ' + number + '.')
    В этом блоке программа сообщает игроку загаданное число. Для этого необходимо конкатенировать строки, но переменная number содержит цело- численное значение. В строке 31 мы перезаписываем значение переменной number в виде строки, чтобы можно было конкатенировать строки и получить результат — 'Увы. Я загадала число ' + number + '.' в строке 32.
    В этой точке достигается конец кода, и выполнение программы заверша- ется. Поздравляю! Вы только что написали свою первую игру!
    Вы можете изменять сложность игры, настраивая максимальное количе- ство попыток угадать число. Чтобы предоставить игроку всего четыре по- пытки, измените код в строке 12 следующим образом:
    12. for guessesTaken in range(
    4):
    Передав функции range() аргумент 4, вы определяете, что код внутри цик- ла будет выполняться четыре раза вместо шести. Это существенно усложняет игру. Чтобы упростить игру, введите большее целое число в вызов функции range()
    . Это приведет к тому, что цикл будет выполняться большее количе- ство раз, и у игрока будет больше попыток угадать число.

    Заключение
    Программирование — написание кода программ — это создание про- грамм, которые будут выполняться компьютером.
    Когда вы видите, что кто-то работает с программой (например, играет в вашу игру «Угадай число»), все что вы видите, — это текст на экране ком- пьютера. Программа решает, какой текст выводить на экран (программный
    вывод), основываясь на указанных вами инструкциях и на том, что игрок вво- дит с клавиатуры (программный ввод). Программа — это всего лишь набор инструкций, которые реагируют на ввод пользователя.
    В Python существует несколько видов инструкций:
    • Выражения — значения, связанные операторами. Все выражения вычисляются в одно значение. Например, в результате вычисления
    2 + 2
    получается 4, а результатом выражения 'Привет' + ', ' + 'мир!' будет строка 'Привет, мир!'. Когда выражения следуют за ключевыми словами if и for, их еще называют условиями.
    • Инструкции
    присваивания сохраняют значения в переменных для их дальнейшего использования в программе.
    • Инструкции
    if
    , for и break управляют потоком и позволяют пропу- скать инструкции, зацикливать выполнение инструкций или пре- кращать выполнение циклов. Вызов функций позволяет изменить ход выполнения, осуществив переход к набору инструкций внутри функции .
    • Функции
    print()
    и input() отображают текст на экране и получают текст, набранный с клавиатуры. Инструкции, которые имеют дело с программным вводом и выводом, называются инструкциями ввода/
    вывода.
    Вот и все — только эти четыре пункта. Конечно же, еще предстоит из- учить множество деталей об этих четырех типах инструкций. В следующих главах вы узнаете больше типов данных и операторов, изучите больше ин- струкций управления потоком и много других функций Python. Существуют также разные способы ввода/вывода помимо текстового, такие как ввод с по- мощью мыши и звуковой/графический вывод.

    Программа-шутник
    65
    4
    ПРОГРАММА-ШУТНИК
    Программа из этой главы рассказывает пользователю несколько анекдотов и де- монстрирует более продвинутые спосо- бы использования функции print().
    В большинстве игр из этой книги для вво- да и вывода применяется обычный текст .
    Ввод производит пользователь путем набора на клавиату- ре, а вывод — это текст, который отображается на экране .
    В ЭТОЙ ГЛАВЕ РАССМАТРИВАЮТСЯ СЛЕДУЮЩИЕ ТЕМЫ:
    • Экранируемые символы
    • Использование одинарных и двойных кавычек в строках
    • Использование ключевого слова end в функции print() для пропуска символа новой строки
    Вы уже знаете, как отображать обычный текстовый вывод с помощью функции print(). Теперь давайте ближе рассмотрим, как в Python работают строки и функция print().
    Пример запуска программы «Шутки»
    Вот что видит пользователь, когда выполняется программа «Шутки» :
    Что получится, если скрестить снеговика с вампиром?
    Обморожение!
    Что дантисты называют 'черной дырой'?

    1   2   3   4   5   6   7   8   9   10   ...   39


    написать администратору сайта