Главная страница

книга заданий пайтон. книга практических заданий, pyton. Сборник упражнений Введение в язык Python с задачами и решениями Бен Стивенсон Москва, 2021 удк 004. 438Python


Скачать 2.24 Mb.
НазваниеСборник упражнений Введение в язык Python с задачами и решениями Бен Стивенсон Москва, 2021 удк 004. 438Python
Анкоркнига заданий пайтон
Дата02.10.2022
Размер2.24 Mb.
Формат файлаdocx
Имя файлакнига практических заданий, pyton.docx
ТипСборник упражнений
#709959
страница15 из 69
1   ...   11   12   13   14   15   16   17   18   ...   69

Упражнение 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 in :

Тело цикла for, как и в случае с while, может состоять из одной или нескольких инструкций на языке Python, отделенных отступами, и выполняться множество раз.

Перед каждым запуском тела цикла очередной элемент из коллекции копируется в . Эта переменная создается для цикла for при его запуске. При этом совсем не обязательно создавать данную переменную при помощи оператора присваивания, а любое значение, которое могло быть записано в ней, будет удалено перед запуском каждой итерации. Переменная может быть использована в теле цикла так же точно, как и любая другая переменная в языке 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 с выводом их на экран. Следом за девяткой цикл прекратит свою работу за неимением элементов, и выполнение программы продолжится со следующей за телом цикла строки. В нашем случае таковой нет, а значит, программа просто завершит выполнение.
1   ...   11   12   13   14   15   16   17   18   ...   69


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