import random
def random_exception():
return random.randint(1, 13) == 5
lucky_number = 777
total = 0
with open('out_file.txt', 'w', encoding='utf8') as file_out:
while total < lucky_number:
try:
num_user = int(input('Введите число: '))
file_out.write(''.join([str(num_user), '\n']))
total += num_user
except (ValueError, KeyboardInterrupt) as exc:
print(exc)
print('Ошибка при вводе.\n'
'Попробуйте еще раз!')
if random_exception():
raise Exception('Вас постигла неудача!')
print('Вы успешно выполнили условие для выхода из порочного цикла!')
Помогите пожалуйста. Не совсем понимаю как реализовать TODO которое хочет куратор.
Напишите программу, которая запрашивает у пользователя число до тех пор, пока сумма этих чисел не станет больше либо равна 777. Каждое введённое число при этом дозаписывается в файл out_file.txt. Сделайте так, чтобы перед дозаписью программа с вероятностью 1 к 13 выбрасывала пользователю случайное исключение и завершалась.
import random
# TODO тут, чтобы знать, как делать свои ошибки, попробуйте создать парочку по этому шаблону https://github.com/tortoise/tortoise-orm/blob/develop/tortoise/exceptions.py и вызывать какую-то из них
# TODO надо добавить пару своих ошибок и их райзить.
Надо создать класс и внутри только описание, не надо переопределять какие-то методы, конструкторы и тд.
class MyBaseError(Exception):
"""
MyBaseError
"""
class MyError1(MyBaseError):
"""
MyError1
"""
class MyError2(MyBaseError):
"""
MyError2
"""
sum = 0
while True:
try:
random_number = random.randint(1, 13)
number = int(input("Введите число: "))
if number == 333:
raise BaseException
assert number > 0
if random_number == 6:
raise ValueError
sum += number
if sum >= 777:
print("Вы успешно выполнили условие для выхода из порочного цикла!")
break
except ValueError:
print("Вас постигла неудача!")
except AssertionError:
print("Вы ввели отрицательное число. Число должно быть положительным!")
except BaseException:
print("Введена стоп-цифра!")
else:
with open("out_file.txt", "a", encoding="utf-8") as out_file:
out_file.write(f"{number}\n")