Уведомления

Группа в Telegram: @pythonsu

#1 Июль 18, 2012 20:12:57

artem-droshnev
Зарегистрирован: 2012-07-18
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

ПОМОГИТЕ С ЗАДАЧЕЙ ОПРЕДЕЛИТЬ ВИСОКОСНЫЙ ГОД ИЛИ НЕТ !!!!

fata1ex
Деление проходят в третьем классе. Если вы не понимаете, что такое остаток от деления, советую взять учебник за третий класс. Например, Петерсона.


ок спасибо я все понял, только вот одно но почему если поставить not как в моем примере(там где делим на 100) тогда функция не работает почему так?



>>> year = int(input(“Ведите год”))

>>> if (year % 4 and not year % 100) or year % 400:
print('Високосный')
else:
print('Невисокосный')

Офлайн

#2 Июль 19, 2012 05:13:12

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9867
Репутация: +  853  -
Профиль   Отправить e-mail  

ПОМОГИТЕ С ЗАДАЧЕЙ ОПРЕДЕЛИТЬ ВИСОКОСНЫЙ ГОД ИЛИ НЕТ !!!!

>>> year = 2012
>>> isleap = year % 4 == 0 and year % 100 != 0 or year % 400 == 0
>>> isleap
True
>>>

оператор and имеет более высокий приоритет, чем оператор or
запись year % 4 == 0 яснее, чем запись not year % 4



Отредактировано py.user.next (Июль 19, 2012 05:26:40)

Офлайн

#3 Июль 19, 2012 10:24:00

fata1ex
От:
Зарегистрирован: 2009-07-11
Сообщения: 732
Репутация: +  52  -
Профиль   Отправить e-mail  

ПОМОГИТЕ С ЗАДАЧЕЙ ОПРЕДЕЛИТЬ ВИСОКОСНЫЙ ГОД ИЛИ НЕТ !!!!

py.user.next, согласен. Просто это настолько часто встречается, что уже привыкаешь.



Офлайн

#4 Июль 19, 2012 10:32:20

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9867
Репутация: +  853  -
Профиль   Отправить e-mail  

ПОМОГИТЕ С ЗАДАЧЕЙ ОПРЕДЕЛИТЬ ВИСОКОСНЫЙ ГОД ИЛИ НЕТ !!!!

на длинных сложных выражениях становится заметно
оно не запоминается, из-за того, что непрямое (нужно запоминать отрицания)
что-то равно чему-то запомнить проще, чем что-то не равно чему-то



Отредактировано py.user.next (Июль 19, 2012 10:33:47)

Офлайн

#5 Июль 19, 2012 12:11:00

cpu
От:
Зарегистрирован: 2011-12-29
Сообщения: 58
Репутация: +  1  -
Профиль   Отправить e-mail  

ПОМОГИТЕ С ЗАДАЧЕЙ ОПРЕДЕЛИТЬ ВИСОКОСНЫЙ ГОД ИЛИ НЕТ !!!!

а так?

from datetime import datetime as d
def is_leap(year):
    try:
        d.datetime(year,2,29)
        return True
    except ValueError:
        return False



Отредактировано cpu (Июль 19, 2012 12:12:27)

Офлайн

#6 Июль 19, 2012 12:34:49

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

ПОМОГИТЕ С ЗАДАЧЕЙ ОПРЕДЕЛИТЬ ВИСОКОСНЫЙ ГОД ИЛИ НЕТ !!!!

Да можно еще проще

import calendar
is_leap=lambda year: calendar.monthrange(year, 2)[1]>28
for i in range(1990, 2010):
  print i,is_leap(i)



Офлайн

#7 Июль 19, 2012 14:23:25

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

ПОМОГИТЕ С ЗАДАЧЕЙ ОПРЕДЕЛИТЬ ВИСОКОСНЫЙ ГОД ИЛИ НЕТ !!!!

А если надо 3000 или 666 проверить то что делать ?

Офлайн

#8 Июль 19, 2012 14:37:43

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

ПОМОГИТЕ С ЗАДАЧЕЙ ОПРЕДЕЛИТЬ ВИСОКОСНЫЙ ГОД ИЛИ НЕТ !!!!

Singularity
А если надо 3000 или 666 проверить то что делать ?
Не вижу сложности

# -*- coding:utf-8 -*-
import calendar
is_leap=lambda year: calendar.monthrange(year, 2)[1]>28
for i in range(601, 610):
  print i,is_leap(i)
  
for i in range(3001, 3010):
  print i,is_leap(i)
601 False
602 False
603 False
604 True
605 False
606 False
607 False
608 True
609 False
3001 False
3002 False
3003 False
3004 True
3005 False
3006 False
3007 False



Офлайн

#9 Июль 19, 2012 14:44:43

fata1ex
От:
Зарегистрирован: 2009-07-11
Сообщения: 732
Репутация: +  52  -
Профиль   Отправить e-mail  

ПОМОГИТЕ С ЗАДАЧЕЙ ОПРЕДЕЛИТЬ ВИСОКОСНЫЙ ГОД ИЛИ НЕТ !!!!

А если надо 4000 проверить?



Офлайн

#10 Июль 19, 2012 14:49:35

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

ПОМОГИТЕ С ЗАДАЧЕЙ ОПРЕДЕЛИТЬ ВИСОКОСНЫЙ ГОД ИЛИ НЕТ !!!!

Тролли - казлы!



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version