Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с кодом, пж!!!!!! Питон

Алексей Дементьев Ученик (124), на голосовании 1 год назад
import datetime

month = int(input("Введите месяц рождения (1-12): "))
day = int(input("Введите день рождения (1-31): "))
with open("birthday.txt", "w") as f:
f.write("Date: %02d.%02d\n" % (month, day))
for year in range(2021, 2041):
bday = datetime.date (year, month, day)
day_of_week = bday.strftime("%A")
f.write("%02d.%02d.%04d - %s\n" % (month, day, year, day_of_week))

Пользователь вводит месяц и день, а получает файл, содержащий дни недели, на которые приходится его день рождения
в ближайшие 20 лет.
Голосование за лучший ответ
омм бхх Ученик (148) 1 год назад
Фу, насколько все таки с++ понятнее
S.H.I. Оракул (73766) 1 год назад
Код, который вы предоставили, выглядит правильным. Однако в первой строке импорта не хватает пробела между `datetime` и `date`. Попробуйте заменить `import datetimemonth` на `import datetime`. Это должно исправить проблему.
Алексей ДементьевУченик (124) 1 год назад
Простите, можете объяснить? Или прислать исправленный код
Алексей Дементьев, это жпт чат бред пишет, про то, чего нет
S.H.I.Оракул (73766) 1 год назад
import datetime

month = int(input("Введите месяц рождения (1-12): "))
day = int(input("Введите день рождения (1-31): "))

with open("birthday.txt", "w") as f:
f.write("Date: %02d.%02d\n" % (month, day))
for year in range(2021, 2041):
bday = datetime.date (year, month, day)
day_of_week = bday.strftime("%A")
f.write("%02d.%02d.%04d - %s\n" % (month, day, year, day_of_week))

В первой строке я заменил `import datetimemonth` на `import datetime`. Это позволит коду правильно импортировать модуль `datetime`, который используется для работы с датами. Остальная часть кода осталась без изменений.
Сергей Просветленный (44421) 1 год назад
Ну что-то вроде такого:
 from datetime import datetime 

weekdays = ["Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота", "Воскресенье"]
day, month, year = int(input("День (1-12):\n")), int(input("Месяц (1-31)\n")), datetime.now().year
dt = datetime.strptime(f"{day}.{month}.{year}", "%d.%m.%Y")

with open("birthday.txt", "a") as f:
for d in range(year+1, year+20+1):
new_dt = dt.replace(year=d)
f.write(f"{new_dt.strftime('%d.%m.%Y')} - {weekdays[new_dt.weekday()]}\n")
f.close()
Хотя, подозреваю, посчитать все это можно и без всякого datetime для каждого года. Ежегодно ведь день недели сдвигается на 1 вперёд. С високосным годом как? Ну вот, зная хотя бы один год, можно тупо пробежаться циклом, проверить на високосность и сделать сдвиг.
Андрей Соколов Мыслитель (9440) 1 год назад
Ну и работает всё, что тебе надо то?
Похожие вопросы