Нет Да Да Нет Нет Да
«A»: Напишите программу, которая получает три числа - рост трёх спортсменов, и выводит сообщение «По росту.», если они стоят по возрастанию роста, или сообщение «Не по росту!», если они стоят не по росту.
Пример:__Введите_номер_месяца:__5__Весна.__Пример:__Введите_номер_месяца:__15__Неверный_номер_месяца.'>Пример:__Введите_рост_трёх_спортсменов:__165_170_172__По_росту.__Пример:__Введите_рост_трёх_спортсменов:__175_170_172'>Пример:Введите рост трёх спортсменов: 165 170 172По росту.Пример:Введите рост трёх спортсменов: 175 170 172Не по росту!«B»: Напишите программу, которая получает номер месяца и выводит соответствующее ему время года или сообщение об ошибке.
Пример:Введите номер месяца:5Весна.Пример:Введите номер месяца:15Неверный номер месяца.«C»: Напишите программу, которая получает возраст человека (целое число, не превышающее 120) и выводит этот возраст со словом «год», «года» или «лет». Например, «21 год», «22 года», «25 лет».
Пример:Введите возраст: 18Вам 18 лет.Пример:Введите возраст: 21Вам 21 год.Пример:Введите возраст: 22Вам 22 года. b = True
b = False
type(b)
только два возможных значения Пример:
freeDay = (d==6 or d==7)
...
if not freeDay:
print("Рабочий день.")
else:
print("Выходной!")
логическая (булевская) переменная Джордж Буль
«A»: Напишите программу, которая получает с клавиатуры целое число и записывает в логическую переменную значение «да» (True), если это число трёхзначное. После этого на экран выводится ответ на вопрос: «Верно ли, что было получено трёхзначное число?». Пример:Введите число: 165Ответ: да.Пример:Введите число: 1651Ответ: нет.«B»: Напишите программу, которая получает с клавиатуры трёхзначное число и записывает в логическую переменную значение «да» (True), если это число – палиндром, то есть читается одинаково слева направо и справа налево. После этого на экран выводится ответ на вопрос: «Верно ли, что введённое число – палиндром?». Пример:Введите число: 165Ответ: нет.Пример:Введите число: 656Ответ: да.«С»: Напишите программу, которая получает с клавиатуры трёхзначное число и записывает в логическую переменную значение «да» (True), если это все его цифры одинаковы. После этого на экран выводится ответ на вопрос: «Верно ли, что все цифры введённого числа одинаковы?» Пример:Введите число: 161Ответ: нет.Пример:Введите число: 555Ответ: да.Экспертная система — это компьютерная программа, задача которой — заменить человека-эксперта при принятии решений в сложной ситуации.База знаний = факты + правила вывода: если у животного есть перья, то это птица; если животное кормит детенышей молоком, то это — млекопитающее; если животное — млекопитающее и ест мясо, то это — хищник.Диалог: Это животное кормит детей молоком? Нет Это животное имеет перья? Да Это птица. хищник
? птица да да нет нет млекопитающее Кормит детей молоком? Имеет перья? Ест мясо? ? да нет Ответы пользователя:
да и
нет – символьные строки.
ans = input("Кормит детей молоком? ")
if ans == "да":
... # вариант 1
else:
... # вариант 2
# вариант 1
print("Млекопитающее.")
ans = input("Ест мясо? ")
if ans == "да":
print("Хищник.")
else:
print("Не знаю.")
не сработает на "Да" Как исправить? ?
if ans == "да" or ans == "Да":
...
if ans.lower() == "да":
...
Ещё лучше: преобразовать все заглавные в строчные
if ans.upper() == "ДА":
...
§ 23. Отладка программСинтаксические ошибки – нарушение правил записи операторов языка программирования. Обнаруживаются транслятором.
Логические ошибки – неверно составленный алгоритм.
Отказ (ошибка времени выполнения) – аварийная ситуация во время выполнения программы.
Отладка – поиск и исправление ошибок в программе.
from math import sqrt
print("Введите a, b, c: ")
a = float(input())
b = float(input())
c = float(input())
D = b*b - 4*a*a
x1 = (-b+sqrt(D))/2*a
x2 = (-b-sqrt(D))/2*a
print("x1=", x1, " x2=", x2, sep="")
Программа решения квадратного уравнения
float – преобразовать в вещественное число
Тест 1.
a = 1,
b = 2,
c = 1.
x1=-1.0 x2=-1.0x1=-1.0 x2=-1.0 Реальность:
Тест 2.
a = 1,
b = – 5,
c = 6.
x1=3.0 x2=2.0x1=4.791 x2=0.209 Ожидание: Найден вариант, когда программа работает неверно. Ошибка
воспроизводится!
Возможные причины: неверный ввод данных неверное вычисление дискриминанта неверное вычисление корней неверный вывод результатов
a = float(input())
b = float(input())
c = float(input())
print(a, b, c)
D = b*b - 4*a*a
print("D=", D)
...
Идея: выводить все промежуточные результаты.
Введите a, b, c: 1 -561.0 -5.0 6.0D= 21.0 Результат:
D= 21.0сИдея: выводить все промежуточные результаты. Одна ошибка найдена! !
Тест 1.
a = 1,
b = 2,
c = 1.
x1=-1.0 x2=-1.0x1=-1.0 x2=-1.0 Реальность:
Тест 2.
a = 1,
b = – 5,
c = 6.
x1=3.0 x2=2.0 Ожидание:
x1=3.0 x2=2.0Тест 3.
a = 8,
b = – 6,
c = 1.
x1=0.5 x2=0.25x1=32.0 x2=16.0 Программа работает верно? ?
x1 = (-b+sqrt(D))/2*a
x2 = (-b-sqrt(D))/2*a
(2*a)(2*a) Что неверно? ?
«A»: Загрузите программу, которая должна вычислять сумму цифр трёхзначного числа:
N = input(int("N = "))
d0 = N % 10
d1 = N % 100
d2 = N // 100
d0 + d2 = s
print(s)
Выполните отладку программы:
исправьте синтаксические ошибки определите ситуации, когда она работает неверно исправьте логические ошибки.
«B»: Доработайте программу из п. А так, чтобы она правильно работала с отрицательными трёхзначными числами: при вводе числа «–123» программа должна выдавать ответ 6.
«С»: Загрузите программу, которая должна вычислять наибольшее из трёх чисел:
a = input("a = ")
b = int("b = ")
c = input("c = ")
if a > b: M = a
else M = b
if c > b M = b
else: M = c
input(M)
Выполните отладку программы:
исправьте синтаксические ошибки определите ситуации, когда она работает неверно исправьте логические ошибки.
§ 20. Программирование циклических алгоритмовЗадача. Вывести 5 раз «Привет!».
print("Привет")print("Привет")print("Привет")print("Привет")print("Привет") А если 5000? ?
Цикл «N раз»:
сделай 5 раз print("Привет") такого оператора нет в Python! Нужно запоминать, сколько раз цикл уже выполнен! ! переменная-счётчик
счётчик = 0пока счётчик < 5 print("Привет") счётчик = счётчик + 1 ещё не делали
счётчик += 1c = 0while c < 5: print("Привет") c += 1 сделали ещё раз