вывод в текстовый файл

надо сделать вывод в текстовый файл. Но почему-то не работает данный вариант. подскажите в чём ошибка.

import calendar
import random
input('введите имя ученика: ')
m1=calendar.monthrange(2021,11)[1]
m2=calendar.monthrange(2021,12)[1]
s1=list(range(1,m1+1))
s2=list(range(1,m2+1))
s=s1+s2
#открываем текстовый файл для записи
f=open("output.txt","w")
a=random.randint(10,13)
b=random.choices(s,k=a)
print('Количество полученных оценок: ',a)
print('В эти дни ученик получил отметку: ',b)
f.close()
for i, elem in enumerate(b):
    
    if elem % 2 == 0:
        b[i] = 4
    else:
        b[i]=3
#открываем текстовый файл для дозаписи
ff=open("output.txt","a+")
sa=sum(b)/len(b)
print('Средняя оценка ученика ',sa)
ff.close()
print(f,ff)

Ответы (1 шт):

Автор решения: SergFSM

Если хотите использовать именно print для вывода в файл, то попробуйте заменить такой ваш вывод:

f=open("output.txt","w")
a=random.randint(10,13)
b=random.choices(s,k=a)
print('Количество полученных оценок: ',a)
print('В эти дни ученик получил отметку: ',b)
f.close()

на такой:

a = random.randint(10,13)
b = random.choices(s,k=a)

with open("output.txt","w") as f:
    print(f'Количество полученных оценок: {a}', file=f)
    print(f'В эти дни ученик получил отметку: {b}', file=f)

как работает print() документация

→ Ссылка