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

Шуман Х. - Python для детей - 2019. # Startwerte festlegen Red (255,0,0)


Скачать 5.95 Mb.
Название# Startwerte festlegen Red (255,0,0)
Дата10.03.2023
Размер5.95 Mb.
Формат файлаpdf
Имя файлаШуман Х. - Python для детей - 2019.pdf
ТипДокументы
#977830
страница4 из 22
1   2   3   4   5   6   7   8   9   ...   22
Глава
Условные конструкции
2
48
Давай укажем слово else перед оператором if и объединим их вместе в инструкцию elif. Это т. н. вложенная инструкция.
БлокИнструкций2
БлокИнструкций3
БлокИнструкций1
Условие1:
Условие2:
if elif else:
¾
Измени исходный код, сохрани проект и запусти про- грамму несколько раз. Попробуй ввести несколько от- ветов и, разумеется, наши допустимые варианты – хо­
рошо и плохо.
Работает?
Простые вычисления
Мы возимся все с одной и той же программой. Пришло вре- мя чего-то новенького! Сначала тебе нужно закрыть окно редактора с загруженной программой приветствия. Так как эта программа больше не понадобится.
¾
Итак, щелкни мышью по маленькому значку «крести- ка» (
×) в правом верхнем углу. Затем нам понадобится создать пустой файл.
¾
Щелкни мышью по пункту
File (Файл) в строке меню, а затем выбери пункт
New file (Создать файл) (или на- жми сочетание клавиш
Ctrl+N) (рис. 2.5).
Рис. 2.5.Команда открытия файла

Простые вычисления
49
Откроется новый документ, в котором можно работать!
Теперь твой компьютер должен доказать, что он умеет, по крайней мере, складывать числа. Для некоторых математи- ка – веселое занятие, а вот для других она просто невыно- сима. Но поскольку компьютер должен уметь считать, все это пойдет нам только на пользу.
¾
Введи текст этой программы (⇒ mathe1):
# Математика print("Введи число: ")
Number1 = input()
print ("Введи еще одно число: ")
Number2 = input()
print ("А теперь выбери операцию (+,-,*,/): ")
Operator = input()
print ("Результат = ")
if Operator == "+" :
print(Number1 + Number2)
if Operator == "-" :
print(Number1 ­ Number2)
if Operator == "*" :
print(Number1 * Number2)
if Operator == "/" :
print(Number1 / Number2)
Полный исходный код ты сможешь найти в файлах примеров, ко- торые можно скачать на странице dmkpress.com
Прежде чем запускать эту программу, тебе нужно будет кое- что узнать. В верхней части кода программы присутствует строка с символом решетки (#). С помощью этого символа ты можешь записать комментарий, который игнорируется интерпретатором Python.
Таким образом также можешь отмечать версии программы с ком- ментариями типа # Приветствие исходная версия или # Привет­
ствие измененная версия. Или любые другие комментарии на твой вкус.
Вернемся к программе. Вначале запрашивается два любых числа и один оператор (математический). Переменные имеют соответственно имена Number1, Number2 и Operator. За- тем следует текст, который применяется ко всем результа- там: "Результат = ".

Глава
Условные конструкции
2
50
И наконец, конструкция if, которая выполняет определен- ную арифметическую операцию, в зависимости от того, ка- кой оператор ты ввел.
В итоге тебе будет отображен результат этого вычисления.
Опять же, не забудь проверить написанное, так как некоторые ин- струкции должны иметь отступ (пробел) в начале строки.
Разумеется, в Python допустимы все четыре основные арифметические операции. Но нужно помнить, что некото- рые из них отличаются от тех, которые ты знаешь из уроков математики или работы с калькулятором:
Математика
Калькулятор
Компьютер
Сложение
+
+
+
Вычитание
­
­
­
Умножение

×
*
Деление
:
÷
/
Как ты видишь, различия только в оформлении операций умножения и деления.
¾
А теперь запусти программу и протестируй ее с не- сколькими разными числами и всеми типами арифме- тических операций.
Странно, но программа работает необычно. Особенно при сложении (+) программа хоть и работает, но выводит на экран странный результат, показанный на рис. 2.6.
Рис. 2.6.Непонятный результат сложения

Вкратце о числах
51
Результат 2+3 равен 23? Это же неправда. Или правда? Проб- лема в том, что здесь все числа были введены функцией in­
put()
, которая применяется для символов или строк.
Все остальные операторы приводят лишь к сообщениям об ошиб- ках:
Потому что другие операторы строковых типов данных вообще не поддерживают.
Вкратце о числах
Нам нужны числа для вычислений. Но как превратить их из строкового типа данных в числовой? Взгляни на неболь- шой пример обработки чисел:
print("Введи число: ")
Number1 = int(input())
print ("Введи еще одно число: ")
Number2 = int(input())
int()
– функция целочисленного типа данных. Она превра- щает значение переменной (строку) в целое число (сокра- щение int происходит от слова integer, что в переводе с анг- лийского означает «целое число»).
Здесь вложены две функции, одна в другую: input() принима- ет ввод символов с клавиатуры, а int() превращает введенные
(строковые) символы в целые числа. Другими словами, int() при- нимает значение другой функции, указанной в скобках.

Глава
Условные конструкции
2
52
¾
Измени исходный код, а затем сохрани файл под име- нем mathe1.py. Теперь запусти программу несколько раз и попробуй все математические операторы (рис. 2.7).
Рис. 2.7.Теперь программа работает корректно (на этой
иллюстрации я немного схитрил и собрал все результаты вместе)
Как видишь, операция деления выводит правильный ре- зультат; даже если два целых числа фактически делятся на нецелое число. Но когда ты пытаешься ввести число с пла- вающей запятой, возникает проблема (рис. 2.8).
Важно, что, вводя «числа с плавающей запятой», всегда нужно указывать точку вместо запятой.
Рис. 2.8.Ошибка при вводе чисел с плавающей запятой

Вкратце о числах
53
В этом примере Python не способен ничего сделать с чис- лом с плавающей запятой, таким как 2,5, потому что оно не является целым числом, вот и возникает ошибка. Чтобы решить проблему и избежать сообщения об ошибке, нужно использовать другой тип чисел, отличный от целых (int).
Для этого используется тип float, означающий число с пла­
вающей запятой. Изменения в файле выглядят примерно так (⇒ mathe2):
print("Введи число: ")
Number1 = float(input())
print ("Введи еще одно число: ")
Number2 = float(input())
¾
Измени соответствующие строки в своей програм- ме, а затем запусти ее. И, как ты убедился, теперь она спокойно работает с числами с плавающей запятой
(рис. 2.9).
Рис. 2.9.Теперь числа с плавающей запятой поддерживаются
Осталась последняя проблема, которая возникает только в том случае, если ввести число 0, а затем выполнить опера- цию деления. Ты тут же получишь уведомление об ошибке, как показано на рис. 2.10.

Глава
Условные конструкции
2
54
Рис. 2.10.Ошибка при делении на 0
Проблему с делением на 0 проще решить, чем ты мог себе представить (⇒ mathe2):
if Operator == "/" :
if Number2 != 0:
print(Number1 / Number2)
else:
print("На ноль делить нельзя!")
Все, что требуется сделать, – добавить еще одну конструкцию if
. Теперь компьютер выполнит операцию деления только в том случае, если ты ввел число, отличное от 0. В противном случае будет выведено сообщение На ноль делить нельзя!.
¾
Дополни код программы указанными строками. Обра- ти внимание, что добавленная конструкция отбивается соответствующими отступами (пробелами) (рис. 2.11).
Рис. 2.11.Обрати внимание на дополнительные отступы
у вложенной конструкции

Работа с командами try и except
55
Теперь ты сможешь запустить программу и ввести любые числа, включая ноль.
Работа с командами try и except
Будучи программистом, ты не можешь быть стопроцентно уверен в том, что пользователь твоей программы случайно не сделает ошибки. Вполне возможно, что он случайно вве- дет букву или какой-то иной символ вместо числа. Это од- нозначно приведет к прерыванию исполнения программы с выводом сообщения об ошибке.
Рис. 2.12.Ошибка при вводе текста вместо числа
Я попытался ввести в этой программе «пять» в качестве числа. Ясно, что слово невозможно преобразовать в число.
Но нельзя ли использовать в программе механизм, позво- ляющий реагировать на такие небольшие промахи?
Подобное поведение программируется, так сказать, исклю- чительно в экспериментальных целях.
Если сработает – отлично. Если нет, тогда предпримем действие по обработке ошибок, которое ты выберешь сам.
И такой механизм действительно существует в Python.
Такие предсказуемые ошибки называются исключениями. А меха- низм их обработки используется для того, чтобы перехватывать исключения до того, как произойдет прерывание программы.
Давай подробнее рассмотрим показанный ниже исходный код (⇒ mathe3).

Глава
Условные конструкции
2
56
try :
print("Введи число: ")
Number1 = float(input())
print ("Введи еще одно число: ")
Number2 = float(input())
print ("А теперь выбери операцию (+,-,*,/): ")
Operator = input()
print ("Результат = ")
if Operator == "+" :
print(Number1 + Number2)
if Operator == "-" :
print(Number1 ­ Number2)
if Operator == "*" :
print(Number1 * Number2)
if Operator == "/" :
if Number2 != 0:
print(Number1 / Number2)
else:
print("невозможно вычислить")
except :
print("Не число!")
Видишь два новых слова в этом тексте программы? Снача- ла указано ключевое слово try, а затем except.
Как тебе скоро станет понятно, это новые помощники в нашем деле программирования. Они влияют на каждую строку исходно- го кода предыдущей версии программы.
Давай рассмотрим эту «сладкую» парочку, try и except, не- много поближе.
Опять же, их можно назвать условной конструкцией:
БлокИнструкций2
БлокИнструкций1
try :
except :
Для интерпретатора это означает примерно следующее:
Сначала попробовать выполнить первый блок инструкций, а если будет выброшена ошибка, тогда выполнить второй блок инструкций.

Подведение итогов
57
Блок инструкций try включает все инструкции предыду- щей версии программы:
try:
# здесь находятся все инструкции,
# способные привести к исключениям
Блок инструкций except включает инструкции, которые сле- дует исполнять в случае перехвата исключения:
except :
# здесь находятся все инструкции,
# исполняемые в случае
# перехвата исключения
Я хотел бы еще раз напомнить, что символ решетки (#) в начале строки обозначает комментарий, который пропускает интерпре- татор Python.
Теперь программа перехватывает исключения, как показа- но на рис. 2.13.
Рис. 2.13.Реакция программы на ввод слова вместо числа
Подведение итогов
Прежде чем ты сможешь насладиться заслуженным отды- хом, давай сначала посмотрим, что же получилось у нас с тобой в итоге. В любом случае, ты однозначно расширил свой словарный запас при работе в интерпретаторе Python.
Давай еще раз освежим знания.

Глава
Условные конструкции
2
58
int()
Преобразование значения переменной (цифр) в целое число float()
Преобразование значения переменной в число с плавающей запятой if
Если выполняется условие, исполняется БлокИнструкций1
else
Исполняется БлокИнструкций2
elif
Выполняется проверка сложного условия, и выполняется БлокИнструкций, если условие истинно try
Попытка исполнить БлокИнструкций1
except
Если возникает ошибка, исполняется БлокИнструкций2
=
Оператор присваивания (напоминаю!)
+ –
* / Базовые арифметические операторы
+
Оператор сложения
==
Оператор сравнения, проверка на равенство
!
=
Оператор сравнения, проверка на неравенство
#
Комментарий
Слова if, else, elif, try, кроме того что относятся к основному словарю Python, также называются ключевыми словами.
Несколько вопросов...
1. В чем разница между символами = и ==?
2. Как упростить показанный ниже фрагмент программы:
if Number == 0 :
print("Нет результата");
if Number != 0 :
print(1/Number);
...и задач
1. Напиши программу, в которой после ввода числа вы- числяется и отображается его обратное значение. (Вы- полни также эту программу, введя ноль.)
2. Напиши программу, запрашивающую пароль. Если па- роль введен правильно, выдается сообщение «Доступ разрешен», в противном случае отображается текст
«Доступ разрешен!» – или, если захочешь, в каждом случае напиши собственный вариант ответа.

59
3
Сравнение
и повторение
Здесь речь будет идти все о том же, что и в предыдущих главах, только примеры станут сложнее и будут включать проверку не только на равенство. Кроме того, мы еще раз рассмотрим, как обрабатывать неправильный ввод и пре- дотвращать ошибки программы, например путем предо- ставления нескольких попыток ввода.
Попытки ввода помогут не только в такой ситуации. Су- щест вует множество приложений и игр, где предоставление попыток пользователю – просто необходимая функция!
В этой главе ты узнаешь:

как связывать условия;

как интегрировать новые словари (модули);

о генерации случайных чисел;

как многократно исполнять фрагменты кода программы;

как использовать циклы while;

как выходить из цикла.
Оценки
Давай создадим еще одну математическую программу.
Наш третий проект касается оценок. Логичный шаг после

Глава
Сравнение и повторение
3
60
того, как мы поработали с математической программой, которая уже привнесла в эту книгу немного напоминаний о школьных буднях.
¾
Итак, создай новый файл в среде разработки Python
(IDLE), щелкнув мышью по пункту
File (Файл) в стро- ке меню, а затем выбрав пункт
New file (Создать файл)
(или нажав сочетание клавиш
Ctrl+N).
Эта программа должна будет оценивать тебя по введенно- му целому числу. Для вычисления оценки я взял табл. 3.1.
Таблица 3.1. Оценка за введенное число
Диапазон введенных чисел Оценка (текст)
Оценка (балл)
0–24
ужасно
6 25–44
плохо
5 45–64
сойдет
4 65–79
средне
3 80–89
хорошо
2 90–100
отлично
1
Конечно, ты можешь изменить эту таблицу по своему усмотрению, если хочешь.
Давай рассмотрим, как же ее задать компьютеру. Начнем с худшей оценки:
Если введенное число находится в диапазоне от 0 до 24, пусть про­
грамма выводит текст ужасно (6).
Это будет первая конструкция. Выглядеть она будет так:
if Score between 0 and 24 :
print("ужасно (6)")
Как жаль, что Python не понимает слово between! Здесь по- требуется немного больше, чем одна лишь математика. По- пробуем сформулировать это так: слово between означает, что число, с одной стороны, должно быть больше или равно
0: сформулируем это как условие:
Score >= 0
С другой стороны, число меньше 25. Это приводит к сле- дующему условию:

Оценки
61
Score < 25
(Учтем значения с плавающей запятой, скажем 24,5, так как числа не обязательно должны быть целыми.)
Теперь важно совместить два условия. За это в Python отве- чает команда and:
(Score >= 0) and (Score < 25)
Круглые скобки в коде необязательны, так как Python распознает то, что относится к первому условию, и что ко второму. Скобки я добавил для наглядности, чтобы вы не запутались.
Вот это круто! А теперь создадим такие конструкции для остальных пяти оценок – как это будет выглядеть?
Полный код показан ниже (⇒ grade):
# Отметка print("Введи число: ", end="")
Score = int(input())
print("Это ", end = "")
if (Score >= 0) and (Score < 25) :
print("ужасно (6)")
if (Score >= 25) and (Score < 45) :
print("плохо (5)")
if (Score >= 45) and (Score < 65) :
print("сойдет (4)")
if (Score >= 65) and (Score < 80) :
print("средне (3)")
if (Score >= 80) and (Score < 90) :
print("хорошо (2)")
if (Score >= 90) and (Score <= 100) :
print("очень хорошо (1)")
if (Score > 100) or (Score < 0) :
print("неправильно (0)")
¾
Введи этот исходный код и сохрани его в файл под име- нем grade1.py.
Ты можешь ускорить работу с кодом, если будешь применять в ра- боте команды копирования, вырезания и вставки.

Сначала необходимо выделить текст, удерживая клавишу
Shift и нажимая клавиши со стрелками, либо мышью, удерживая ее левую кнопку.

Глава
Сравнение и повторение
3
62

С помощью команды
Cut (Вырезать) в меню Edit (Правка) или в контекстном меню ты можешь вырезать выделенный текст и поместить его в буфер обмена.

С помощью команды
Copy (Копировать) в меню Edit (Правка) или в контекстном меню ты можешь скопировать выделенный текст в буфер обмена.

С помощью команды
Insert (Вставить) в меню Edit (Правка) или в контекстном меню ты можешь вставить скопированный код из буфера обмена в файл.
Затем тебе нужно скорректировать скопированные строки кода.
¾
Запусти программу, выбрав команду меню
RunRun
Module (Выполнение ⇒ Выполнить модуль). Также ты можешь нажать клавишу
F5. И попробуй выполнить ее с несколькими значениями (попробуй вводить также несуществующие значения для проверки) (рис. 3.1).
Рис. 3.1.Проверка программы для оценки
Обрати внимание, что запрос и введенное тобой число раз- мещаются в одной строке. Так же, как и финальный вывод программы со словом Это.
Мы обязаны этому благодаря дополнительному параметру в круглых скобках в инструкции print:
print("Введи число: ", end="")
print("Это ", end = "")
Все дело в том, что по умолчанию функция print() после вывода текста переводит текстовый курсор на одну строку ниже, поэтому следующий вывод находится в следующей строке. Вероятно, ты обратил внимание на такое поведе-

Оценки
63
ние в наших предыдущих программах, хотя это и не ошиб- ка программы в принципе.
Чтобы заставить нашу любимую функцию print() отказать- ся от разрыва строки, нужно использовать дополнитель- ный параметр. С помощью параметра end = "" мы даем ей понять, что должно происходить после выполнения ин- струкции print.
Две двойные кавычки означают, что после выполнения ин- струкции print не следует никакая операция, в том числе разрыв строки. Текстовый курсор остается там, где остано- вился после выполнения инструкции, и с этого места нач- нется следующий ввод или вывод. (Чуть больше практики в шлифовке математических программ ты получишь не- много позже.)
Так, все условия собраны вместе? Если ты внимательно изучишь код, то в предпоследней строке программы уви- дишь вместо знакомого оператора and слово or.
Эти два слова являются так называемыми связывающими
операторами. Они представляют собой, так сказать, клей для соединения нескольких условий вместе. Вот значения, которые они имеют:
and
Должны выполняться все условия для исполнения последующего блока инструкций or
Должно выполняться только одно условие для исполнения последующего блока инструкций
Понятно, что для всех диапазонов чисел каждый раз долж- ны выполняться оба условия. Но есть еще одна инструкция if
, последняя:
if (Score > 100) or (Score < 0) :
print("неправильно (0)")
То есть в случае, если кто-то решит обмануть программу и ввести число, превосходящее 100 (а набрать столько бал- лов, скажем, в ЕГЭ, нереально), мы и определяем подобное условие:
Score > 100
Отрицательные числа также не допускаются в програм- ме, так как человек не может набрать на экзамене меньше
0 баллов! Поэтому это условие выглядит так:

1   2   3   4   5   6   7   8   9   ...   22


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