2013-01-20 3 views
1
def get_weekday(d1, d2): 
    ''' (int, int) -> int 
    The first parameter indicates the current day of the week, and is in the 
    range 1-7. The second parameter indicates a number of days from the current 
    day, and that could be any integer, including a negative integer. Return 
    which day of the week it will be that many days from the current day. 
    >>> get_weekday(0,14) 
    7 
    >>> get_weekday(0,15) 
    1 
    ''' 
    weekday = (d1+d2) % 7 
    if weekday == 0: 
     weekday = 7 
    return weekday 

Как я могу решить это без использования оператора if?без использования заявления IF

кстати, воскресенье является 1, понедельник 2, .... СБ 7

ответ

0

использовать or условие:

weekday = (d1+d2) % 7 or 7 
return weekday 

ведомости в or состояния оценивается слева направо пока значение True не будет найдено, в противном случае возвращается последнее значение.

так вот, если первая часть 0, то возвращается 7.

In [158]: 14%7 or 7  # 14%7 is 0, i.e a Falsy value so return 7 
Out[158]: 7 

In [159]: 15%7 or 7  #15%7 is 1, i.e a Truthy value so exit here and return 15%7 
Out[159]: 1 

#some more examples 
In [161]: 0 or 0 or 1 or 2 
Out[161]: 1 

In [162]: 7 or 0 
Out[162]: 7 

In [163]: False or True 
Out[163]: True 
+0

вы могли бы объяснить немного больше PLS! я новичок в python, я не понимаю, как просто добавить или может решить мою проблему. – user1864828

+0

zero is boolean false, поэтому 0 или 7 дает 7. Если вы не можете использовать 'if', чем использовать' or', можете квалифицировать как обман :) –

3

Попробуйте это:

weekday = ((d1+d2-1) % 7) + 1 
4

Как насчет

weekday = (d1-1+d2) % 7 + 1 
Смежные вопросы