def calculate(expression):
try:
# Используем eval() для вычисления выражения
result = eval(expression)
return result
except:
return "Ошибка в выражении"
# Имя файла
filename = "test.txt"
try:
# Открываем файл для чтения
with open(filename, 'r') as file:
# Читаем выражение из файла
expression = file.read().strip()
# Вычисляем результат
result = calculate(expression)
# Открываем файл для записи
with open(filename, 'w') as file:
# Записываем исходное выражение и результат
file.write(f"{expression} = {result}")
print(f"Результат записан в файл {filename}")
except FileNotFoundError:
print(f"Файл {filename} не найден")
except Exception as e:
print(f"Произошла ошибка: {e}")
import ast
import operator
def safe_eval(expr):
allowed_operators = {
ast.Add: operator.add,
ast.Sub: operator.sub,
ast.Mult: operator.mul,
ast.Div: operator.truediv,
ast.Pow: operator.pow,
ast.BitXor: operator.xor,
}
def eval_node(node):
if isinstance(node, ast.Expression):
return eval_node(node.body)
elif isinstance(node, ast.Num): # Для Python 3.7 и ниже
return node.n
elif isinstance(node, ast.Constant): # Для Python 3.8 и выше
return node.value
elif isinstance(node, ast.BinOp):
left = eval_node(node.left)
right = eval_node(node.right)
return allowed_operators[type(node.op)](left, right)
else:
raise ValueError("Недопустимый узел в выражении")
tree = ast.parse(expr, mode='eval')
return eval_node(tree.body)
def calculate_expressions(file_path):
try:
with open(file_path, 'r') as file:
expressions = file.readlines()
results = []
for expression in expressions:
expression = expression.strip()
if expression:
result = safe_eval(expression)
results.append(f"{expression} = {result}")
with open(file_path, 'w') as file:
file.write("\n".join(results) + "\n")
print("Результаты записаны в файл:")
for result in results:
print(result)
except Exception as e:
print(f"Произошла ошибка: {e}")
file_path = 'test.txt'
calculate_expressions(file_path)
Есть файл, например, test.txt. В нем записан пример 2+4 (или какой-то другой несложный). Нужно написать программу, которая будет брать из файла эти числа и ответ записывать в этот же файл. Типо калькулятор