0 / 0 / 0
Регистрация: 14.08.2023
Сообщений: 21

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

21.08.2023, 17:54. Показов 3660. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 31.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 30.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru