В программе «Калькулятор дат» выполните проверку на случаи, когда:
• пользователь ничего не ввел в поле ввода,
• то, что введенное не содержит двух точек
ответным сообщением: «Ошибка ввода. Введите дд.мм.рррр».
Нужно создать условную конструкцию if-else в функции calc()
Програма:
from tkinter import*
import datetime
def calc():
data = ent.get()
some_day, some_month, some_year = map(int, data.split('.'))
birthday = datetime.datetime(some_year, some_month, some_day)
current_date = datetime.datetime.today()
delta_days = (current_date - birthday).days
text_days.config(text=f'Пройшло (delta_days) днів.')
week_day = birthday .isoweekday()
week_dict = {1: 'понеділок',
2: 'вівторок',
3: 'середа',
4: 'четвер',
5: 'п\'ятниця',
6: 'субота',
7: 'неділя',}
week_d.config(text=f'День тижня: {week_dict[week_day]}.')
def clear():
ent.detele(0, END)
text_days.config(text='')
week_d.config(text='')
root = Tk()
root.title('Калькулятор дат')
root.geometry('300x400')
root.resizable(False, False)
root.config(bg='purple')
lbl = Label(root,text='Введіть дату',
font=('Comic Sans MS', 26),
bg='purple', fg='white')
lbl.pack()
ent = Entry(root, width=10, font=('Comic Sans MS', 28),
justify=CENTER, fg='green')
ent.focus_set()
ent.pack()
btn = Button(root, text='Розрахувати',
font=('Comic Sans MS', 26),
fg='purple', command=calc)
btn.pack(pady=10)
text_days = Label(root, text='',
font=('Comic Sans MS', 20, 'italic'),
bg='purple', fg='white')
Answers & Comments
from tkinter import *
import datetime
def calc():
data = ent.get()
if not data:
# Пользователь ничего не ввел
error_message = "Ошибка ввода. Введите дд.мм.гггг"
text_days.config(text=error_message)
week_d.config(text="")
return
if data.count('.') != 2:
# Введенное не содержит двух точек
error_message = "Ошибка ввода. Введите дд.мм.гггг"
text_days.config(text=error_message)
week_d.config(text="")
return
try:
some_day, some_month, some_year = map(int, data.split('.'))
birthday = datetime.datetime(some_year, some_month, some_day)
current_date = datetime.datetime.today()
delta_days = (current_date - birthday).days
text_days.config(text=f"Пройшло {delta_days} днів.")
week_day = birthday.isoweekday()
week_dict = {
1: 'понеділок',
2: 'вівторок',
3: 'середа',
4: 'четвер',
5: 'п\'ятниця',
6: 'субота',
7: 'неділя',
}
week_d.config(text=f"День тижня: {week_dict[week_day]}.")
except ValueError:
# Некорректный формат даты
error_message = "Ошибка ввода. Введите дд.мм.гггг"
text_days.config(text=error_message)
week_d.config(text="")
def clear():
ent.delete(0, END)
text_days.config(text="")
week_d.config(text="")
root = Tk()
root.title("Калькулятор дат")
root.geometry("300x400")
root.resizable(False, False)
root.config(bg="purple")
lbl = Label(
root, text="Введіть дату", font=("Comic Sans MS", 26), bg="purple", fg="white"
)
lbl.pack()
ent = Entry(
root,
width=10,
font=("Comic Sans MS", 28),
justify=CENTER,
fg="green"
)
ent.focus_set()
ent.pack()
btn = Button(
root,
text="Розрахувати",
font=("Comic Sans MS", 26),
fg="purple",
command=calc
)
btn.pack(pady=10)
text_days = Label(
root,
text="",
font=("Comic Sans MS", 20, "italic"),
bg="purple",
fg="white"
)
text_days.pack()
week_d = Label(
root,
text="",
font=("Comic Sans MS", 20, "italic"),
bg="purple",
fg="white"
)
week_d.pack()
root.mainloop()