Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 14.08.2023
Сообщений: 21

Вернуть True, если дата есть в нашем календаре, и False иначе

21.08.2023, 17:54. Показов 3676. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написать функцию date, принимающую 3 аргумента — день, месяц и год. Вернуть True, если такая дата есть в нашем календаре, и False иначе.
Я не понимаю что именно я сделал не так
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def check_date(d, m, y):
    if d < 0 or m < 0 or n < 0:
     return False
    mon = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    if y % 400 == 0:
        mon[1] = 29
    if m >= 1 and m <= 12:
      if d > 0 and d <= mon[m-1]:
        return True
    return False
d = int(input('Date: '))
m = int(input('Month: '))
y = int(input('Year: '))
print(check_date(d, m, y))
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.08.2023, 17:54
Ответы с готовыми решениями:

Вернуть TRUE, если строка панграмма, иначе FALSE
Панграмма (с греч. — «все буквы»), или разнобуквица, — короткий текст, использующий все или почти все буквы алфавита, по возможности не...

Вернуть true если строка это панграмма, иначе false
Панграмма (с греч. — «все буквы»), или разнобуквица, — короткий текст, использующий все или почти все буквы алфавита, по возможности не...

Переменной t присвоить значение true , если дата m,d,y предшествует дате m1,d1,y1, иначе t=false
Переменной t присвоить значение true , если дата m,d,y предшествует дате m1,d1,y1, иначе t=false. (m -месяц d-день y-год ) Требуется...

20
 Аватар для TimutGin
515 / 339 / 146
Регистрация: 16.02.2021
Сообщений: 626
21.08.2023, 18:03
Лучший ответ Сообщение было отмечено SimpletoniX как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def check_date(d, m, y):
    if d < 0 or m < 0 or y < 0:
        return False
    mon = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    if y % 400 == 0:
        mon[1] = 29
    if m >= 1 and m <= 12:
        if d > 0 and d <= mon[m-1]:
            return True
        return False
    
d = int(input('Day: '))
m = int(input('Month: '))
y = int(input('Year: '))
 
print(check_date(d, m, y))
0
0 / 0 / 0
Регистрация: 14.08.2023
Сообщений: 21
21.08.2023, 18:10  [ТС]
mon[m - 1]: - А это что означает?
0
 Аватар для TimutGin
515 / 339 / 146
Регистрация: 16.02.2021
Сообщений: 626
21.08.2023, 18:23
В списке mon имеется 12 элементов(дней в месяце) , но индексы этих элементов начинаются с нуля,поэтому m-1(1 месяц это 0 элемент,2й это 1,3й это 2 и т.д.)
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
21.08.2023, 18:25
Python
1
2
3
4
5
6
def check_date(d, m, y):
    try:
        d = datetime.date(y, m, d)
        return True
    except ValueError:
        return False
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
21.08.2023, 19:18
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
def check_date(d, m, y):
    is_leap = y % 4 == 0 and y % 100 != 0 or y % 400 == 0
    if not 1 <= m <= 12 and 1582 <= y <= 3000:
        return False
    if m in [4,6,9,11]:
        return 1 <= d <= 30
    elif m == 2:
        return 1 <= d <= 28 + is_leap
    else:
        return 1 <= d <= 31
 
d, m, y = [int(x) for x in input('d,m,y->').split()]
print(check_date(d,m,y))
Добавлено через 3 минуты
TimutGin, что-то у вас високосный год неправильно посчитан.
0
 Аватар для TimutGin
515 / 339 / 146
Регистрация: 16.02.2021
Сообщений: 626
21.08.2023, 20:56
idealist, Ок, но это не моё решение, я просто расставил отступы и заменил несколько символов чтоб сообщения об ошибке небыло.
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
21.08.2023, 21:23
TimutGin, не знаю, мне кажется и автору темы полезнее было бы почитать ваши хорошие решения, а вот нам с вами от чтения их плохих решений точно никакой пользы!

Добавлено через 16 минут
Пардон, ошибочка просочилась. Вот так правильно:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
def check_date(d, m, y):
    is_leap = y % 4 == 0 and y % 100 != 0 or y % 400 == 0
    if not (1 <= m <= 12 and 1582 <= y <= 3000):
        return False
    if m in [4,6,9,11]:
        return 1 <= d <= 30
    elif m == 2:
        return 1 <= d <= 28 + is_leap
    else:
        return 1 <= d <= 31
 
d, m, y = [int(x) for x in input('d,m,y->').split()]
print(check_date(d,m,y))
0
 Аватар для TimutGin
515 / 339 / 146
Регистрация: 16.02.2021
Сообщений: 626
21.08.2023, 21:58
Цитата Сообщение от idealist Посмотреть сообщение
автору темы полезнее было бы почитать ваши хорошие решения,
Я думаю он бы не понял этого
Python
1
2
3
4
5
def check_date(d, m, y):
    return (1 <= d <= [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][m-1]+(y % 4 == 0 and y % 100 != 0 or y % 400 == 0)) if 1 <= m <= 12 else False
    
d, m, y = [int(input(x)) for x in ('Day: ', 'Month: ', 'Year: ')] 
print(check_date(d, m, y))
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
21.08.2023, 23:30
Цитата Сообщение от TimutGin Посмотреть сообщение
Я думаю он бы не понял этого
Ну, вообще-то специалисты считают, что при оценке качества кода понятность и удобочитаемость стоят на первом месте, а уже потом быстродействие и все остальное. Так что заумность кода - это недостаток скорее.
Кстати, там у вас ошибочки просочились.

Кстати, мой вариант тоже можно подсократить:
Python
1
2
3
4
5
6
7
def check_date(d, m, y):
    is_leap = y % 4 == 0 and y % 100 != 0 or y % 400 == 0
    d_max = 30 if m in [4, 6, 9, 11] else 28 + is_leap if m == 2 else 31
    return 1 <= d <= d_max and 1 <= m <= 12 and 1582 <= y <= 3000
 
d, m, y = [int(x) for x in input('d,m,y->').split()]
print(check_date(d, m, y))
1
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
22.08.2023, 15:22
iSmokeJC

Python
1
2
3
4
5
6
def check_date(d: int, m: int, y: int) -> bool:
    try:
        _ = datetime.date(y, m, d)
    except ValueError:
        return False
    return True
Добавлено через 3 минуты
Цитата Сообщение от idealist Посмотреть сообщение
def check_date(d, m, y):
    is_leap = y % 4 == 0 and y % 100 != 0 or y % 400 == 0
Зачем вычислять значение переменной is_leap, если она используется только в одной из веток?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
22.08.2023, 15:48
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
iSmokeJC
А какая разница-то?
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
22.08.2023, 15:59
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Зачем вычислять значение переменной is_leap, если она используется только в одной из веток?
Ну, для удобочитаемости.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
22.08.2023, 16:02
Цитата Сообщение от idealist Посмотреть сообщение
Ну, для удобочитаемости.
Вычислить выражение, которое не будет использоваться, ага.
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
22.08.2023, 16:06
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Вычислить выражение, которое не будет использоваться, ага.
Цитата Сообщение от idealist Посмотреть сообщение
Ну, вообще-то специалисты считают, что при оценке качества кода понятность и удобочитаемость стоят на первом месте, а уже потом быстродействие и все остальное.
фывфывффысв
0
Вирусоборец
 Аватар для thyrex
14445 / 7486 / 1580
Регистрация: 06.09.2009
Сообщений: 27,129
23.08.2023, 11:33
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Вычислить выражение, которое не будет использоваться, ага.
так используется же
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
23.08.2023, 11:43
Цитата Сообщение от thyrex Посмотреть сообщение
так используется же
Только в одной из веток.

Python
1
2
3
4
5
6
7
8
9
10
11
def check_date(d, m, y):
    # is_leap = y % 4 == 0 and y % 100 != 0 or y % 400 == 0
    if not (1 <= m <= 12 and 1582 <= y <= 3000):
        return False
    if m in [4,6,9,11]:
        return 1 <= d <= 30
    elif m == 2:
        is_leap = y % 4 == 0 and y % 100 != 0 or y % 400 == 0
        return 1 <= d <= 28 + is_leap
    else:
        return 1 <= d <= 31
Добавлено через 33 секунды
Цитата Сообщение от idealist Посмотреть сообщение
фывфывффысв
*фыр-фыр-фыр*
1
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
23.08.2023, 12:41
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
*фыр-фыр-фыр*
Это не вам, а просто заглушка, цитаты без текста не пропускает.
А как вы это прочитали, оно же белым шрифтом напечатано?
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Только в одной из веток.
Слушайте, вы так заморачиваетесь, как будто это выражение какое-то существенное время вычисляется...
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
23.08.2023, 12:44
Цитата Сообщение от idealist Посмотреть сообщение
А как вы это прочитали
Внезапно...

0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
23.08.2023, 12:45
Цитата Сообщение от idealist Посмотреть сообщение
А как вы это прочитали, оно же белым шрифтом напечатано?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.08.2023, 12:45
Помогаю со студенческими работами здесь

Вывести true если в списке есть повторяющиеся символы. Иначе false
Вывести true если в списке есть повторяющиеся символы. Иначе false

Программа должна вернуть результат True в том случае, если введённое число состоит из уникальных цифр, иначе False
Задача 7. Уникальные числа. Уровень 3 Создать алгоритм, который попросит пользователя ввести число. Программа должна вернуть...

Если среди чисел есть хотя бы одно отрицательное число, то присвоить значение True, иначе False
Доброго времени суток, помогите исправить код, не пойму в чём ошибка! Задание таково: Если среди чисел sin{X}^{n} (n=1, 2,…,...

Если число является степенью числа 3, то вывести true, иначе false
У меня есть код паскаля uses crt; var n,k:integer; begin clrscr; repeat write('Введите натуральное число, проверить на степеь...

Если число - куб натурального числа то возвращать true, иначе false
Из задачника. Если данное число n - куб натурального числа то возвращать true,или же false; То есть если n=27 и 27=3^3 то t=true ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru