Получить день за днем ​​номер года? - PullRequest
0 голосов
/ 24 мая 2019

Как написать программу, которая запрашивает у пользователя номер дня в году в диапазоне от 2 до 365 и спрашивает первый день года - воскресенье, понедельник или вторник и т. Д. Затем программа должна отобразить введенный номер дня..

Например:

Input year = 2019

Input of day number = 144

First day of year = 'Tuesday'

Output = 'Friday' (-> 144th day of year 2019 = Friday)

Примечание: - вы не можете использовать «Дата» и «Месяц» этого конкретного года

Из этой ссылки алгоритма, я попытался выяснить день, используя это как ссылку, но не смог найти конкретное решение:

def day_of_week(year, month, day):
    t = [0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4]
    year -= month < 3
    return (year + int(year/4) - int(year/100) + int(year/400) + t[month-1] 
            + day) % 7

day = 28

month = 4

year = 2019


print(day_of_week(year, month, day))

Ответы [ 2 ]

0 голосов
/ 25 мая 2019

Но согласно условию 'dayNumber', оно должно быть в диапазоне от 2 до 365. Я думаю, что это может быть работой ...

# Solution - 2 With dayNumber in the Range betwwen 2 to 365...


import sys
def numberedDay(firstDay, dayNumber):
   #firstDay = 'Wednesday'
   #dayNumber = 319

   # Made weekly days dictionary 
   days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 
   'Sunday']
   # Automatically generate first index of days dictionary.. For example if firstDay 
   = 'Wednesday' then it will return firstDay=2
   firstIndex = days.index(firstDay)
   # Generating endIndex....
   endIndex = (firstIndex + int(dayNumber) - 1) % 7
   # endIndex = (2 + int(dayNumber) - 1) % 7
   # endIndex = (2 + 319 - 1) % 7
   # endIndex = (320) % 7
   # endIndex =  5

   return days[endIndex]
   # return 5th element of days list which is = Saturday

# Input Year = 1997
year = input("Year: ")
# Input firstDay = Wednesday
firstDay = input("First day of the year (e.g. 'Monday'): ")
# Input dayNumber = 319
dayNumber = input("Day number: ")

#if int(dayNumber) > 365:
#    raise sys.exit()


if int(dayNumber) in range(2,365): 
   # printing dayNumber given by user
   dayNumber = int(dayNumber)

else:
   # if dayNumber is greater than 365 then system will be exit.
   raise sys.exit()

# printing output
print(numberedDay(firstDay, dayNumber))
0 голосов
/ 24 мая 2019

Давайте посмотрим, правильно ли я вас понимаю ... программа берет год, первый день года (например, «вторник») и число (например, 144), и выводит только день недели, соответствующий на этот числовой день в году (например, «пятница - 144-й день 2019 года)?

Если это проблема, просто используйте mod на 7, чтобы найти ответ, например:

def numberedDay(firstDay, dayNumber):
    days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
    firstIndex = days.index(firstDay)
    endIndex = (firstIndex + int(dayNumber) - 1) % 7
    return days[endIndex]


year = input("Year: ")
firstDay = input("First day of the year (e.g. 'Monday'): ")
dayNumber = input("Day number: ")

print(numberedDay(firstDay, dayNumber))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...