forked from learnpythonru/learn-homework-1
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path7_exception2.py
53 lines (47 loc) · 1.78 KB
/
7_exception2.py
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
"""
Домашнее задание №1
Исключения: приведение типов
* Перепишите функцию discounted(price, discount, max_discount=20)
из урока про функции так, чтобы она перехватывала исключения,
когда переданы некорректные аргументы.
* Первые два нужно приводить к вещественному числу при помощи float(),
а третий - к целому при помощи int() и перехватывать исключения
ValueError и TypeError, если приведение типов не сработало.
"""
def discounted(price, discount, max_discount=20):
"""
Замените pass на ваш код
"""
try:
price = float(price)
except (ValueError, TypeError):
return 'eRRor'
try:
discount = float(discount)
except (ValueError, TypeError):
return 'eRRor'
try:
max_discount = int(max_discount)
except (ValueError, TypeError):
return 'eRRor'
try:
price = abs(price)
except:
discount = abs(discount)
try:
max_discount = abs(max_discount)
if max_discount >= 100:
raise ValueError('Слишком большая максимальная скидка')
if discount >= max_discount:
return price
else:
return price - (price * discount / 100)
except (ValueError, TypeError):
return 'eRRor'
if __name__ == "__main__":
print(discounted(100, 2))
print(discounted(100, "3"))
print(discounted("100", "4.5"))
print(discounted("five", 5))
print(discounted("сто", "десять"))
print(discounted(100.0, 5, "10"))