Разбор программы без параметра
Задача
Программа читает два целых числа построчно и печатает YES, если хотя бы одно из условий выполняется, иначе NO.
s = int(input())
t = int(input())
if (s > 10) or (t > 5):
print("YES")
else:
print("NO")
Было проведено 9 запусков программы, при которых в качестве значений переменных s и t вводились следующие пары чисел:
(s, t): (11,0), (10,6), (5,5), (9,4), (12,7), (10,5), (0,6), (3,1), (15,0)
Всего было проведено 9 запусков. Сколько раз было напечатано слово "YES"?
Схема работы программы
Подсказка: сначала вычислите истину/ложь для «s>10» и «t>5», затем объедините через «or».
Таблица протоколирования
Для облегчения решения заполните таблицу для всех 9 запусков
| № |
s |
t |
s > 10 |
t > 5 |
(s>10) or (t>5)
(истина, если выполняется хотя бы одно) |
Вывод |
| 1 |
11 |
0 |
+ |
- |
Истина |
YES |
| 2 |
10 |
6 |
- |
+ |
Истина |
YES |
| 3 |
5 |
5 |
- |
- |
Ложь |
NO |
| 4 |
9 |
4 |
- |
- |
Ложь |
NO |
| 5 |
12 |
7 |
+ |
+ |
Истина |
YES |
| 6 |
10 |
5 |
- |
- |
Ложь |
NO |
| 7 |
0 |
6 |
- |
+ |
Истина |
YES |
| 8 |
3 |
1 |
- |
- |
Ложь |
NO |
| 9 |
15 |
0 |
+ |
- |
Истина |
YES |
Ответ
Программа выыведет YES 5 раз.
Программа выведет NO 4 раза (9-5 = 4)
Вывод
Главный принцип: считайте подусловия отдельно, помните, что «or» означает «хватает одного истинного», «and» — «нужны оба»,
при if/elif/else срабатывает первая истинная ветка.
Если нужно посчитать количество раз когда программа выводит NO, иногда удобнее посчитать сколько раз выводится YES и затем отнять получившийся ответ от количества запусков