import logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s'
def process_numbers(N: int) -> list[str]:
results = []
for i in range(1, N + 1):
if i % 2 == 0:
results.append(f"{i} (четное) -> {i**2}"
else:
results.append(f"{i} (нечетное) -> {i**3}"
return results
def display_results(results: list[str], to_file: bool = False) -> None:
if to_file:
with open('results.txt', 'w'
as f:
for result in results:
f.write(result + '\n'
logging.info("Результаты сохранены в файл 'results.txt'."
print("
Результаты успешно сохранены в файл 'results.txt'."
else:
print("\n? Результаты обработки:\n" + "\n".join(results))
def get_positive_integer(prompt: str) -> int:
while True:
try:
value = int(input(prompt))
if value < 1:
raise ValueError("Число должно быть больше нуля."
return value
except ValueError as e:
logging.error(f"Ошибка ввода: {e}. Пожалуйста, попробуйте снова."
def main() -> None:
print("? Добро пожаловать в программу обработки чисел!"
print("==============================================="
N = get_positive_integer("Введите число N (целое положительное): "
results = process_numbers(N)
print("\nВыберите способ вывода результатов:"
output_choice = input("Вывести в консоль (C) или сохранить в файл (F)? "
.strip().upper()
print("==============================================="
if output_choice == 'F':
display_results(results, to_file=True)
else:
display_results(results)
if __name__ == "__main__":
main()