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

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

21.08.2023, 17:54. Показов 3598. Ответов 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,707
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,707
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,707
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
 Аватар для Рыжий Лис
5972 / 3734 / 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,707
22.08.2023, 15:59
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Зачем вычислять значение переменной is_leap, если она используется только в одной из веток?
Ну, для удобочитаемости.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
22.08.2023, 16:02
Цитата Сообщение от idealist Посмотреть сообщение
Ну, для удобочитаемости.
Вычислить выражение, которое не будет использоваться, ага.
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
22.08.2023, 16:06
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Вычислить выражение, которое не будет использоваться, ага.
Цитата Сообщение от idealist Посмотреть сообщение
Ну, вообще-то специалисты считают, что при оценке качества кода понятность и удобочитаемость стоят на первом месте, а уже потом быстродействие и все остальное.
фывфывффысв
0
Вирусоборец
 Аватар для thyrex
14440 / 7482 / 1579
Регистрация: 06.09.2009
Сообщений: 27,119
23.08.2023, 11:33
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Вычислить выражение, которое не будет использоваться, ага.
так используется же
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 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,707
23.08.2023, 12:41
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
*фыр-фыр-фыр*
Это не вам, а просто заглушка, цитаты без текста не пропускает.
А как вы это прочитали, оно же белым шрифтом напечатано?
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Только в одной из веток.
Слушайте, вы так заморачиваетесь, как будто это выражение какое-то существенное время вычисляется...
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
23.08.2023, 12:44
Цитата Сообщение от idealist Посмотреть сообщение
А как вы это прочитали
Внезапно...

0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 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
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru