Условия и цикл. Конспек Игра Угадай число
Скачать 0.97 Mb.
|
Конспект2. Игра «Угадай число» Условие if и цикл while Учитель информатики Батракова Л.В. 1 В этом конспекте мы рассмотрим, как написать игру, которая называется «Угадай число». Компьютер загадает секретное число в диапазоне от 1 до 20 и попросит пользователя угадать это число. После каждой попытки угадать, компьютер будет сообщать пользователю, было ли его число больше или меньше загаданного. Пользователь выиграет, если угадает число за шесть попыток. Написание кода для этой короткой игры полезно тем, что затрагивает много ключевых моментов программирования: условия и циклы подключение модуля генерация случайных чисел операции сравнения. Вы узнаете о том, как конвертировать значения в различные типы данных и когда к этому следует прибегать. 1. Логическая переменная Логическая переменная – это переменная, которая принимает одно из двух значений: True (истина) или False (ложь). Обратите внимание, что True и False пишутся с заглавной буквы. >>> a = True >>> b = False В программировании False обычно приравнивают к нулю, а True – к единице. Чтобы в этом убедиться, можно преобразовать булево значение к целочисленному типу: >>> int(True) 1 >>> int(False) 0 Возможно и обратное. Можно преобразовать какое-либо значение к булевому типу: >>> bool(3.4) True >>> bool(-150) True >>> bool(0) False >>> bool(' ') True >>> bool('') False И здесь работает правило: всё, что не 0 и не пустота, является правдой. 2. Операции сравнения Результатом операций сравнения является переменная логического типа – True или False. Примеры: 1. Проверка чисел на равенство/неравенство - x == y, x != y >>> 5 == 4 False >>> 5 != 4 True 2. Больше x > y, меньше x < y, больше или равно x >= y, меньше или равно x <= y >>> 5 > 4 True >>> 5 <= 5 True 3. Составление цепочек сравнений >>> 3 < 4 <= 5 True 3. Логические операции К логическим значениям применяются операции and (И), or (ИЛИ) и not (НЕ). Операция and (логическое умножение или конъюнкция) означает одновременное выполнение двух или нескольких условий. Операция or (логическое сложение или дизъюнкция) означает выполнение хотя бы одного из двух или нескольких условий. Конспект2. Игра «Угадай число» Условие if и цикл while Учитель информатики Батракова Л.В. 2 Операция not (логическое отрицание) означает обратное условие (противоположное исходному). А В not A A and B A or B true true false true true true false false false true false true true false true false false true false false Пример1: if age >= 25 and age <= 40: print( "подходит" ) else: print( "не подходит" ) Пример2: if day == 1 or day == 4: print( "Полетит!" ) else: print( "Нет рейса." ) Пример3: if not( day == 1 or day == 4 ): print( "Нет рейса." ) else: print( "Полетит!" ) В программа на языке Python можно сразу проверить выполнение двойного неравенства: if 25 <= age <= 40: print("подходит") else: print("не подходит") но во многих популярных языках программирования такая запись приводит к ошибке. Если в сложном условии встречается несколько разных операций, они выполняются в следующем порядке (во всех случаях – слева направо): 1) операции в скобках; 2) операции «not»; 3) операции «and»; 4) операции «or». Изменить порядок действий можно с помощью круглых скобок. 4. Условные операторы Чтобы в программе изменить порядок действий в зависимости от условия, используется условный оператор. Ему соответствует алгоритмическая структура ветвление. Ветвление бывает двух видов: полное и неполное. 1)полное ветвление 2)Неполное ветвление Конспект2. Игра «Угадай число» Условие if и цикл while Учитель информатики Батракова Л.В. 3 Если условие выполняется, то оператор выполняется, а если нет, то ни чего не происходит (просто пролетает). Формат условного оператора на языке Python, соответствующего полному ветвлению, имеет вид: if <условие>: <блок операторов1> else: <блок операторов2> Например1: if n % 2 == 0: Print("Это число четное") else: Print("Это число нечетное") После условия if и после else может стоять не один оператор, а несколько. Например2: if a > b: a = a * 2 b = b * 2 else: a = a / 2 b = b / 2 print ("a = ", a) print ("b = ", b) В условной инструкции может отсутствовать слово else и последующий блок. Такая инструкция называется неполным ветвлением. if <условие>: <блок операторов> Например, если дано число x и мы хотим заменить его на абсолютную величину x, то это можно сделать следующим образом: if x < 0: x = -x print(x) В этом примере переменной x будет присвоено значение -x, но только в том случае, когда x<0. А вот инструкция print(x) будет выполнена всегда, независимо от проверяемого условия. Для выделения блока инструкций, относящихся к инструкции if или else в языке Python используются отступы. Все инструкции, которые относятся к одному блоку, должны иметь равную величину отступа, то есть одинаковое число пробелов в начале строки. Рекомендуется использовать отступ в 4 пробела. Внутри условных инструкций можно использовать любые инструкции языка Python, в том числе и условную инструкцию. Вложенное ветвление — это когда, после одного условия в ходе исполнения программы, появляется другое условие. При этом вложенные блоки имеют больший размер отступа (например, 8 пробелов). Пример: x = int(input()) y = int(input()) if x > 0: Конспект2. Игра «Угадай число» Условие if и цикл while Учитель информатики Батракова Л.В. 4 if y > 0: # x>0, y>0 print("Первая четверть") else: # x>0, y<0 print("Четвертая четверть") else: if y > 0: # x<0, y>0 print("Вторая четверть") else: # x<0, y<0 print("Третья четверть") В этой программе по данным ненулевым чисел x и y определяется, в какой из четвертей координатной плоскости находится точка (x,y). Использование вложенных условных операторов позволяет выбрать один из нескольких (а не только из двух) вариантов. Если после else сразу следует еще один оператор if, можно применить так называемое «каскадное» ветвление с ключевыми словами elif (сокращение от else-if). Если очередное условие ложно, выполняется проверка следующего условия и т.д. Пример: if ageA > ageB: print( "Андрей старше" ) elif ageA == ageB: print( "Одного возраста" ) else: print( "Борис старше" ) Обратите внимание на отступы: слова if, elif и else находятся на одном уровне. В цепочке операторов if- elif-elif-… срабатывает первое истинное условие. Запись вложенного условного оператора можно упростить с помощью использования логических операторов and, or, not. Например1: if age >= 25 and age <= 40: print( "подходит" ) else: print( "не подходит" ) Например2: if day == 1 or day == 4: print( "Полетит!" ) else: print( "Нет рейса." ) Например3: if not( day == 1 or day == 4 ): print( "Нет рейса." ) else: print( "Полетит!" ) В программа на языке Python можно сразу проверить выполнение двойного неравенства: if 25 <= age <= 40: print("подходит") else: print("не подходит") но во многих популярных языках программирования такая запись приводит к ошибке. В логической переменной можно хранить значение какого-то условия и затем использовать его в условном операторе: fly = (d = 1) or (d = 4) if not fly: print( "Нет рейса." ) else: Конспект2. Игра «Угадай число» Условие if и цикл while Учитель информатики Батракова Л.В. 5 print( "Полетит!" ) 5. Цикл с предусловием (while) Цикл – это многократное выполнение одинаковых действий. В этом конспекте будем рассматривать цикл с предусловием (while). Цикл, в котором проверка условия выполняется при входе (перед выполнением очередного шага) называется циклом с предусловием, то есть циклом с предварительной проверкой условия. Его алгоритмическая структура выглядит следующим образом: Если условие (Y) истинно (Да), то выполняется оператор ОП (блок инструкций), а если ложно (Нет), то выход из цикла. Синтаксис цикла while в простейшем случае выглядит так: while Условие: Блок_инструкций Пример: a = 1 while a <= n: print(a) a += 1 Этот фрагмент программы напечатает все целые числа, не превосходящие n. В цикле while должна быть переменная, которая связана с условием выхода из цикла и меняется внутри цикла. Эта переменная называется параметром цикла или счетчиком. Перед началом выполнения цикла ей надо присвоить начальное значение. Общая схема цикла while в данном случае для перебора всех подходящих значений такая: a = начальное_значение while а_является_подходящим_числом: обработать_a перейти_к_следующему_a Пример: count = 0 # count – счетчик (параметр цикла) while count < 5: # заголовок цикла print( "привет" ) count += 1 # увеличение счётчика Сначала в переменную-счётчик записывают ноль (цикл ещё не выполнен ни разу), а после каждого повторения цикла увеличивают значение счётчика на единицу. Цикл заканчивается, когда значение счетчика будет равно 5. Цикл можно построить и по-другому: сразу записать в счётчик нужное количество итераций, и после каждой итерации цикла уменьшать счётчик на 1. Тогда цикл должен закончиться при нулевом значении счётчика. Пример: count = 5 # count – счетчик (параметр цикла) while count > 0: # заголовок цикла print( "привет" ) count -= 1 # уменьшение счётчика Конспект2. Игра «Угадай число» Условие if и цикл while Учитель информатики Батракова Л.В. 6 Этот вариант несколько лучше, чем предыдущий, поскольку счётчик сравнивается с нулём, а такое сравнение выполняется в процессоре автоматически. 6. Бесконечный цикл. Операторы break и continue Если не выполняется условие выхода из цикла, то программа будет выполняться бесконечно. Это называется зацикливанием. Это может быть если: неверно записано условие параметр цикла внутри цикла не меняется. В некоторых случаях можно моделировать бесконечный цикл. Это популярный прием для создания программ, которые должны выполняться неопределенно долго. Структура бесконечного цикла: while True: <действия> Здесь мы имеем дело с бесконечным циклом, так как условие while True всегда истинно и всегда будет выполняться. Например: while True: print("У попа была собака, он её любил.") print("Она съела кусок мяса, он её убил,") print("В землю закопал и на камне написал:") Для управления циклом мы можем использовать специальные операторы break и continue. Оператор break осуществляет выход из цикла. А оператор continue выполняет переход к следующей итерации цикла. Пример 1: while True: print("У попа была собака, он её любил.") print("Она съела кусок мяса, он её убил,") print("В землю закопал и на камне написал:") if True: break Пример 2: import random while True: a=random.randint(1,10) print(a) if a==7: break Пример 3: i = -20 while i <= 20: if i == 0: i+=1 continue # если i == 0, то оператор печати пропускается print("{:+7.4f}".format(1/i)) i+=1 7. Случайные и псевдослучайные числа В некоторых задачах, в том числе в компьютерных играх, необходимо моделировать случайные явления, например, результат бросания игрального кубика (на нём может выпасть число от 1 до 6). Как сделать это на компьютере, который «неслучаен», то есть строго выполняет заданную ему программу? Случайные числа – это последовательность чисел, в которой невозможно предсказать следующее число, даже зная все предыдущие. Конспект2. Игра «Угадай число» Условие if и цикл while Учитель информатики Батракова Л.В. 7 Чтобы получить истинно случайные числа, можно, например, бросать игральный кубик или измерять какой-то шумовой сигнал (например, шум радиоэфира или сигнал, принятый из космоса). Так раньше составлялись таблицы случайных чисел, которые публиковались в книгах. Но вернёмся к компьютерам. Ставить сложные приборы на каждый компьютер очень дорого, и повторить эксперимент будет невозможно – завтра все значения будут уже другие. Существующие таблицы слишком малы, когда, скажем, нужно получать 100 случайных чисел каждую секунду. Для хранения больших таблиц требуется много памяти. Чтобы выйти из положения, математики придумали алгоритмы получения псевдослучайных («как бы случайных») чисел. Псевдослучайные числа вычисляются по некоторой математической формуле: зная первое число («зерно»), можно по формуле вычислить второе, затем третье и т.п. Функции для работы с псевдослучайными числами в языке Python собраны в модуле random. В библиотеке Python используется один из наиболее совершенных алгоритмов для генерации псевдослучайных чисел – «вихрь Мерсенна», разработанный в 1997 году. Для получения псевдослучайных чисел в заданном диапазоне мы будем использовать функции из модуля random: randint(a,b) – случайное целое число на отрезке [a; b]; uniform(a,b) – случайное вещественное число на отрезке [a; b]. Для того чтобы записать в переменные n и x случайные числа на отрезке [1; 6], можно использовать такие команды: import random n = random.randint( 1, 6 ) x = random.uniform( 1, 6 ) Записать в тетрадь (шпаргалка): Условные операторы Неполная форма: if <условие>: <блок операторов> Полная форма: if <условие>: <блок операторов1> else: <блок операторов2> «Каскадное» ветвление с ключевыми словами elif : if <условие>: <блок операторов1> elif <условие>: <блок операторов1> elif <условие>: <блок операторов1> else: <блок операторов1> Знаки отношений > больше < меньше == равно >= больше или равно <= меньше или равно != не равно Логические (булевские) переменные Результатом операций сравнения является переменная логического типа – True (правда)или False (ложь). Всё, что не 0 и не пустота, является правдой. Логические операции and (логическое умножение или конъюнкция) означает одновременное выполнение двух или нескольких условий. or (логическое сложение или дизъюнкция) означает выполнение хотя бы одного из двух или нескольких условий. not (логическое отрицание) означает обратное условие (противоположное исходному) Приоритет операций: 1. отношения (<, >, <=, >=, ==, !=) 2. not («НЕ») 3. and («И») 4. or («ИЛИ») В программа на языке Python можно сразу проверить выполнение двойного неравенства: if 25 <= age <= 40: print("подходит") else: print("не подходит") if a>0 and a<10 or a==100: print(a) Конспект2. Игра «Угадай число» Условие if и цикл while Учитель информатики Батракова Л.В. 8 Цикл while Формат оператора Пример a = начальное_значение while а_является_подходящим_числом: обработать_a перейти_к_следующему_a count = 0 # count – счетчик (параметр цикла) while count < 5: # заголовок цикла print( "привет" ) count += 1 # увеличение счётчика Бесконечный цикл Формат оператора Пример while True: <действия> while True: print("У попа была собака, он её любил.") print("Она съела кусок мяса, он её убил,") print("В землю закопал и на камне написал:") Операторы для управления циклом Break - осуществляет выход из цикла Continue - выполняет переход к следующей итерации цикла. Генерация случайных чисел целых вещественных import random n = random.randint( 1, 6 ) import random x = random.uniform( 1, 6 ) Игра «Угадай число» В редакторе файлов создайте новый файл, выбрав команду меню File ⇒ New File (Файл ⇒ Новый файл). В открывшемся окне введите приведенный ниже исходный код (рис. 1) и сохраните файл под именем play2.py на диске под вашим логином в папке ОДОД.Затем запустите программу, нажав клавишу F5. Когда вы вводите этот код в редактор файлов, обязательно обратите внимание на отступы в начале строк. Некоторые строки должны иметь отступы в четыре или восемь пробелов. Если при выполнении программы возникают ошибки, сравните код, который вы набрали, с оригинальным кодом и постарайтесь ошибки исправить. Рис. 1. Исходный код программы «Угадай число» Конспект2. Игра «Угадай число» Условие if и цикл while Учитель информатики Батракова Л.В. 9 Если программа без ошибок, Вы можете слегка изменить код игры, чтобы игра вела себя немного по-другому: можно заменить диалоги можно изменить диапазон целых случайных чисел на (1, 100) можно задать другое количество попыток (kol). Постарайтесь найти оптимальное число попыток, за которое игрок угадает число. За это – В конце урока все сохраняют свои программы на GooglDiske. Желаю удачи !!! Используемые материалы: https://younglinux.info/python.php https://younglinux.info/pygame/pygame https://devpractice.ru/python-lesson-3-data-model/ Эл Свейгарт «Учим Python, делая крутые игры », Москва 2018 |