@owiueio

Как генерировать файлы и записывать в них информацию в цикле?

Подскажите, пожалуйста, необходимо каждый раз при выполнении кода создавать новый файл и записывать в него результат расчетов, файлы должны сохраняться в одну папку. В программе должна показываться история проведенных расчетов, которая основывается на сохраненных файлах.
Пока получается все сохранять только в один файл, как изменить код, чтобы создавались разные с теми же данными?

import csv
from datetime import datetime
 
def calculate_risk(x1, x2, x3, x4, x5):
    y = -5.5671 + 1.41664 * x1 + 1.39579 * x2 + 0.51075 * x3 + 1.14122 * x4 + 0.77389 * x5
    if y > 0.605675:
        text = f'Риск осложнений: {y}, прогнозируется наличие осложнений'
    else:
        text = f'Риск осложнений: {y}, осложнения маловероятны'
    return text
 
def save_result():
    with open('results.csv', 'a', encoding = 'UTF-8') as file:
        writer = csv.writer(file, delimiter = ",", lineterminator="\r")
        writer.writerow([f'Дата: {datetime.now()}, Пациент: {name}', f'Возраст: {age}', result]
 
while True:
    name = input('Введите ФИО пациента: ')
    age = int(input('Введите возраст пациента: '))
    x1 = int(input('Доступ несимметричный? (1 - да, 0 - нет): '))
    x2 = int(input('Была ли рестернотомия? (1 - да, 0 - нет): '))
    x3 = float(input('Индекс коморбидности Чарлсона: '))
    x4 = float(input('Риск по системе EuroScore: '))
    x5 = int(input('Пол пациента (1 - муж, 2 - жен): '))
    result = calculate_risk(x1, x2, x3, x4, x5)
    save_result()
    print(f"Результат расчета: {result}")
    another = input("Хотите выполнить еще один расчет? (да/нет): ")
    if another.lower() != "да":
        break
 
print("История расчетов:")
with open('results.csv', 'r', encoding = 'UTF-8') as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)
  • Вопрос задан
  • 81 просмотр
Пригласить эксперта
Ответы на вопрос 1
@rPman
open в качестве первого параметра принимает имя файла, сейчас у тебя там строка константа, замени ее на код, который будет формировать имя файла, например из чисел x1...x5, соответственно передавай эти числа в функцию, в которой этот open вызывается
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
SpectrumData Екатеринбург
от 150 000 до 200 000 ₽
Гринатом Москва
от 150 000 ₽
DIGITAL SECTOR Краснодар
от 150 000 до 250 000 ₽
25 июн. 2024, в 21:13
111111 руб./за проект
25 июн. 2024, в 20:57
3000 руб./за проект
25 июн. 2024, в 20:27
10000 руб./за проект