-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path00-basics_extra.py
More file actions
64 lines (54 loc) · 3.97 KB
/
00-basics_extra.py
File metadata and controls
64 lines (54 loc) · 3.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# Дополнительное задание к уроку "Основы Python"
# Задача: создать тест из трёх вопросов, с подсчётом баллов
# Схема улучшена, добавлена оценка в процентах в конце,
# и обработка ZeroDivisionError, в случае деления на ноль в вычислении процента
# Инициализируем переменную для баллов
score = 0
# Создаём функцию вывода вопроса, аргументами которой будут текст вопроса и правильный ответ
# В данном тесте у нас есть только вопросы по математике, то есть, ответами должны быть числа
# Так что мы должны сделать повтор вопроса, если пользователь, например, введёт какой-то текст вместо числа.
# Делаем обработку исключения ValueError
def createQuestion(question, answer):
# Вызываем input
inp = input(question)
# Используем конструкцию try except
try:
# Прибавляем 1 к счёту, если ответ пользователя правильный
if int(inp) == answer:
# Так как наша переменная score глобальная, мы не можем изменять её значение внутри функции.
# Для этого заново инициализируем её здесь, используя ключевое слово global
global score
# И уже потом прибавляем 1
score += 1
# Пропускаем блок кода ключевым словом pass, если ответ неправильный
else:
pass
# Если вылезает исключение:
except ValueError:
# Выводим предупреждение на экран в случае некорректно введённого ответа
print("Некорректно введённые данные! Ввод должен быть целочисленного типа!")
print("Попробуйте ещё раз!")
# И заново вызываем вопрос
createQuestion(question, answer)
# Выводим наши вопросы
createQuestion("Сколько будет 2+2?", 4)
createQuestion("Сколько будет 8*9?", 72)
createQuestion("Сколько будет 999-888?", 111)
# Создаём переменную для результата в процентах
percentscore = 0
# Находим результат в процентах делением счёта на количество всех вопросов (в нашем случае 3)
# И так как счёт может быть ноль, а при делении на ноль Python на нас разозлится,
# делаем обработку исключения ZeroDivisionError, в случае его появления просто присваиваем переменной значение 0
try:
percentscore = score / 3
except ZeroDivisionError:
percentscore = 0
# Так как у нас должна получиться десятичная дробь <= 1,
# умножаем переменную на 100, в итоге получаем значение в процентах
percentscore *= 100
# В данный момент наш счёт в процентах типа float
# Превращаем его в тип int, соответствующей функцией
percentscore = int(percentscore)
# Наконец выводим результат в консоль )))
print("Ваш результат: " + str(score) + "/3 баллов (" + str(percentscore) + "%)")
# Спасибо за внимание :-)