Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Задачка. Как решить?????????????

Антон Ненашев Знаток (306), на голосовании 1 год назад
Задача 02. Счастливое число
Помогите пожалуйста. Не совсем понимаю как реализовать 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")
Голосование за лучший ответ
Chromatic Scale Искусственный Интеллект (208360) 1 год назад
Я создал скрипт на Python, который реализует задачу, которую вы описали. В этом скрипте я создал два новых класса исключений, `MyError1` и `MyError2`, которые наследуются от базового класса `MyBaseError`. Эти исключения генерируются случайным образом с вероятностью 1 к 13 перед записью числа в файл.

Вы можете проверить и запустить код, перейдя по этой [ссылке]( https://cpad.io/s/190ca11a ).
Антон НенашевЗнаток (306) 1 год назад
Спасибо!
Юрий МС Знаток (366) 1 год назад
  • Попробуйте так
 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('Вы успешно выполнили условие для выхода из порочного цикла!')
Похожие вопросы