22 - python & all web labs

This commit is contained in:
2026-05-02 20:27:02 +05:00
parent ef77f101fa
commit 19af922baf
5781 changed files with 770492 additions and 96 deletions

View File

@@ -1,37 +1,75 @@
print("task: 6r\nВставка + и - между цифрами для получения числа N")
# task: Счастливый билет
# Дано шестизначное число и число N. Между цифрами можно вставлять +, -, ничего.
# Нужно вывести все выражения, равные N, либо сообщение об отсутствии решений.
import itertools
def generate(s, pos, expr, target, results):
if pos == len(s):
try:
if eval(expr) == target:
results.append(expr + "=" + str(target))
except:
pass
return
generate(s, pos + 1, expr + "+" + s[pos], target, results)
generate(s, pos + 1, expr + "-" + s[pos], target, results)
generate(s, pos + 1, expr + s[pos], target, results)
def generate_expressions(digits):
ops = ["+", "-", ""]
for comb in itertools.product(ops, repeat=5):
expr = digits[0]
for i in range(5):
expr += comb[i] + digits[i + 1]
yield expr
def safe_eval(expr):
try:
return eval(expr)
except:
return None
def solve(ticket, target):
results = []
digits = list(ticket)
for expr in generate_expressions(digits):
val = safe_eval(expr)
if val == target:
results.append(f"{expr}={target}")
return results
def is_valid_ticket(ticket):
return ticket.isdigit() and len(ticket) == 6 and int(ticket) > 0
def is_valid_target(target):
return target.isdigit() and 0 < int(target) < 10**9
while True:
print("\n1 - решить\n0 - выход")
try:
c = input("Выбор: ")
if c == "1":
s, target = input("Введите число и N: ").split()
target = int(target)
results = []
generate(s, 1, s[0], target, results)
with open("result.txt", "w") as f:
if results:
for r in results:
print(r)
f.write(r + "\n")
else:
print("Решение не существует")
f.write("Решение не существует")
elif c == "0":
break
except:
print("Ошибка ввода")
print("\nВыберите действие:")
print("1 - Ввести данные")
print("2 - Выход")
choice = input("Ваш выбор: ").strip()
if choice == "2":
print("Выход из программы.")
break
elif choice == "1":
ticket = input("Введите шестизначный номер билета: ").strip()
target = input("Введите число N (0 < N < 1e9): ").strip()
if not is_valid_ticket(ticket):
print("Ошибка: билет должен быть шестизначным натуральным числом.")
continue
if not is_valid_target(target):
print("Ошибка: N должно быть натуральным числом (0 < N < 1e9).")
continue
target = int(target)
solutions = solve(ticket, target)
if solutions:
print("\nНайденные решения:")
for s in solutions:
print(s)
else:
print("Решение не существует.")
else:
print("Некорректный выбор. Попробуйте снова.")