/
Nick_Wern
/
SUSU
Обзор
Документация
Войти
/
Nick_Wern
/
SUSU
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Python/Lesson10.py
181 строка
6 KB
Nick_Wern
Добавлены работы по дисциплине Программирование на Python
03 май 2026, 19:26
03 май 2026, 19:26
913d1bd
Код
Авторство
О чём код?
def lesson1_1(): def safe_divide(a, b): try: return a / b except ZeroDivisionError: print("Деление на ноль!!!") return None safe_divide(5, 2) # 2.5 safe_divide(4, 0) # error, returned None def lesson1_2(): def to_int(s): try: return int(s) except ValueError: print("Невозможно преобразовать!!!") return None to_int("123") # 123 to_int(123) # 123 to_int("asd") # error, returned None def lesson1_4(): def get_element(lst, index): try: return lst[index] except IndexError: print("Некорректный индекс") return None get_element([0, 1, 2, 3, 4], 2) # 2 get_element([0, 1, 2, 3, 4], 6) # error, returned None def lesson1_5(): def input_number(): try: return float(input("Введите число: ")) except ValueError: print("Введено не число") return 0 print(input_number()) def lesson2_3(): def square(x): try: x = float(x) return x * x except ValueError: print("x - не число") return None print(square(3)) # 9 print(square(0.5)) # 0.25 print(square("asd")) # error, returned None def lesson2_4(): def safe_eval(expr): try: return eval(expr) except ZeroDivisionError: print("Деление на ноль") return None except SyntaxError: print("Синтаксическая ошибка") return None except NameError: print("Использование неизвестного метода") return None print(safe_eval("2 + 3")) # 5 print(safe_eval("2 / 0")) # error print(safe_eval("strr('3')")) # error print(safe_eval("[ 1, 2, 3 ")) # error def lesson3_1(): class WeakPasswordError (Exception): pass def check_password(pwd): try: if len(str(pwd)) < 6: raise WeakPasswordError containsNumber = False for symbol in pwd: try: int(symbol) except ValueError: None else: containsNumber = True if containsNumber: break if not containsNumber: raise WeakPasswordError except WeakPasswordError: print("Пароль короче 6 символов или не содержит цифр") else: print("С паролем всё нормально") check_password("asdasd12") # ok check_password("asdasdasd") # error check_password("asd12") # error def lesson3_2(): def sum_prices(prices: list): summ = 0 for price in prices: try: price = float(price) summ += price except ValueError: print(f"Предупреждение: {price} не число") except TypeError: print(f"Предупреждение: {price} не число") return summ print(sum_prices([100, 200, 1.4, "asd", None, 2])) # 2 предупреждения, результат 303.4 def lesson3_3(): class NoneDogError (Exception): pass class MuchDogError (Exception): pass class NoneDotError (Exception): pass class NoneUsernameError (Exception): pass class NoneDomainZoneError (Exception): pass class InvalidUsernameError (Exception): pass def validate_emails(emails: list): valid = [] validSymbols = "1234567890-_.qwertyuiopasdfghjklzxcvbnm" for email in emails: try: parts = email.split("@") if len(parts) < 2: raise NoneDogError if len(parts) > 2: raise MuchDogError domainParts = parts[1].split(".") if len(domainParts) < 2: raise NoneDotError if len(parts[0]) == 0: raise NoneUsernameError if len(domainParts[-1]) == 0: raise NoneDomainZoneError for symbol in parts[0].lower(): if validSymbols.find(symbol) == -1: raise InvalidUsernameError except NoneDogError: print(f"Невалидный email: {email}. Отсутствует разделяющий символ @") except MuchDogError: print(f"Невалидный email: {email}. Слишком много разделяющих символов @") except NoneDotError: print(f"Невалидный email: {email}. Отсутствует точка в домене") except NoneUsernameError: print(f"Невалидный email: {email}. Отсутствует username часть email'a") except NoneDomainZoneError: print(f"Невалидный email: {email}. Отсутствует доменная зона") except InvalidUsernameError: print(f"Невалидный email: {email}. Username состоит из запрещенных символов") else: valid.append(email) return valid print(validate_emails(["asd@asd.asd", "asd_asd.asd", "asd@a@asd.asd", "asd@asd_asd", "@asd.asd", "asd@asd", "a&*(sd@asd.asd"])) lesson3_3() # 1, 2, 4, 5 # 3, 4 # 1, 2, 3