книга заданий пайтон. книга практических заданий, pyton. Сборник упражнений Введение в язык Python с задачами и решениями Бен Стивенсон Москва, 2021 удк 004. 438Python
Скачать 2.24 Mb.
|
Упражнение 62. Играем в рулетку(Решено. 45 строк) На игровой рулетке в казино 38 выемок для шарика: 18 красных, столько же черных и две зеленые, пронумерованные 0 и 00 соответственно. Красные числа на рулетке: 1, 3, 5, 7, 9, 12, 14, 16, 18, 19, 21, 23, 25, 27, 30 32, 34 и 36. Остальные номера в диапазоне положительных чисел до 36 – черные. Игрок может сделать самые разные ставки. Мы в данном упражнении будем рассматривать лишь следующие виды ставок: одно число (от одного до 36, а также 0 или 00); красное или черное; четное или нечетное (заметьте, что номера 0 и 00 не являются ни четными, ни нечетными); от 1 до 18 против от 19 до 36. Напишите программу, имитирующую игру на рулетке при помощи генератора случайных чисел в Python. После запуска рулетки выведите на экран выпавший номер и все сыгравшие ставки. Например, при выпадении номера 13 на экране должна появиться следующая последовательность строк: Выпавший номер: 13… Выигравшая ставка: 13 Выигравшая ставка: черное Выигравшая ставка: нечетное Выигравшая ставка: от 1 до 18 Если на рулетке выпал номер 0, вывод должен быть следующим: Выпавший номер: 0… Выигравшая ставка: 0 Для номера 00 сообщения будут иметь следующий вид: Выпавший номер: 00… Выигравшая ставка: 00 Глава 1ПовторенияКак написать программу, в которой одна и та же операция должна выполняться несколько раз? Вы, конечно, можете скопировать фрагмент кода и вставить его в программу столько раз, сколько необходимо, но такое решение будет крайне далеким от идеала. Минусами подобного подхода является то, что вы сможете повторить необходимое действие строго определенное количество раз, а при отладке кода нужно будет вносить правки во все скопированные участки. В Python для организации циклических действий предусмотрен необходимый арсенал инструкций. Циклы позволяют требуемое количество раз запустить один и тот же фрагмент кода во время выполнения программы. При должном использовании циклические конструкции позволяют значительно повысить эффективность программного кода при минимуме затрат на его разработку. пропуск тела цикла и переход к следующей за ним инструкции. Например, в следующем фрагменте кода пользователь будет вводить числа и получать сообщения о том, положительное или отрицательное число он ввел, до тех пор, пока не введет ноль, говорящий программе о необходимости покинуть цикл. # Запрашиваем ввод у пользователя x = int(input("Введите целое число (0 для выхода): ")) # Запускаем цикл, пока пользователь не введет ноль while x != 0: # Положительное или отрицательное? if x > 0: print("Это положительное число.") else: print("Это отрицательное число.") # Запрашиваем очередное значение x = int(input("Введите целое число (0 для выхода): ")) Программа начинается с запроса у пользователя целого числа. Если он введет ноль, условное выражение x != 0 вернет False, и тело цикла будет просто проигнорировано, а программа завершит выполнение без всякого вывода, если не считать запроса на ввод числа. Если же условная конструкция вернет True, будет выполнено тело цикла. В теле цикла while введенное пользователем значение сравнивается с нулем при помощи if, и на экран выводится соответствующий текст. В конце тела цикла пользователь получает еще одну просьбу ввести число. Поскольку после этого тело цикла заканчивается, будет осуществлен возврат к условному выражению while с очередной проверкой ввода. Если на этот раз пользователь ввел ноль, программа будет завершена. В противном случае мы снова войдем в тело цикла. Это будет продолжаться до тех пор, пока пользователь не введет ноль. 3.2. циклы forКак и while, циклы for служат для повторного запуска одного и того же блока кода при выполнении определенных условий. При этом механизм проверки условий в цикле for значительно отличается. Тело цикла for будет выполняться по разу для каждого элемента коллекции. При этом коллекция может представлять собой диапазон целых чисел, буквы в строке или, как мы увидим позже в этой книге, значения, сохраненные в виде специальных структур вроде списков. Синтаксис инструкции for представлен ниже, текст во вставках for Тело цикла for, как и в случае с while, может состоять из одной или нескольких инструкций на языке Python, отделенных отступами, и выполняться множество раз. Перед каждым запуском тела цикла очередной элемент из коллекции копируется в Коллекция из целых чисел может быть создана при помощи удобной функции Python range. С единственным переданным аргументом она вернет диапазон значений, начинающийся с нуля и заканчивающийся переданным аргументом, не включая его самого. Например, функция range(4) сгенерирует диапазон из чисел 0, 1, 2 и 3. При передаче двух аргументов функция range вернет диапазон, начинающийся с первого переданного аргумента и заканчивающийся вторым, не включая его. Так, вызов функции range(4, 7) даст на выходе диапазон из целых чисел 4, 5 и 6. Если первый аргумент будет больше или равен второму, функция range вернет пустой диапазон. В этом случае тело цикла не будет выполнено ни разу, а программа продолжит выполняться с первой инструкции после тела цикла. Функция range может также вызываться с третьим аргументом, отвечающим за шаг итерации при перемещении от начального значения цикла к конечному. Если шаг будет больше нуля, мы получим диапазон, начинающийся со значения, соответствующего первому аргументу, в котором каждый последующий элемент будет отстоять от предыдущего на шаг, заданный третьим аргументом. Отрицательное значение шага позволяет сконструировать нисходящий диапазон значений. К примеру, если вызов функции range(0, –4) вернет пустой диапазон, то вариант с третьим аргументом range(0, –4, –1) приведет к созданию диапазона, состоящего из чисел 0, -1, -2 и -3. Заметьте, что третий аргумент должен представлять собой целочисленное значение. При необходимости задать дробный шаг лучше будет использовать цикл while. В следующем примере используется цикл for совместно с функцией range для вывода на экран всех значений, кратных трем, от нуля и до введенного пользователем числа, включая его. # Запрашиваем у пользователя верхнюю границу limit = int(input("Введите целое число: ")) # Выводим все числа, кратные трем, вплоть до указанного пользователем значения print("Все числа, кратные трем, вплоть до", limit, ":") for i in range(3, limit + 1, 3): print(i) При запуске программа попросит пользователя ввести целое число. Предположим, он ввел число 11. После этого на экран будет выведено сообщение, описывающее будущий диапазон, и начнется выполнение цикла. Диапазон, построенный функцией range, будет начинаться с трех и продолжаться до 11 + 1 = 12 с шагом 3. Таким образом, в него войдут числа 3, 6 и 9. При первом запуске цикла переменной i будет присвоено значение 3, которое будет выведено на экран в теле цикла. После этого переменная i последовательно получит значения 6 и 9 с выводом их на экран. Следом за девяткой цикл прекратит свою работу за неимением элементов, и выполнение программы продолжится со следующей за телом цикла строки. В нашем случае таковой нет, а значит, программа просто завершит выполнение. |