【问题标题】:How to solve the weekday function problem PythonPython如何解决工作日函数问题
【发布时间】:2020-09-01 02:17:30
【问题描述】:

我对 Python 很陌生,我们被告知要编写工作日函数,而不需要任何模块,例如白天等 但它不起作用,我不确定问题出在哪里

def weekDay (day,month,year):
    global y0
    global m0
    global x
    y0 = 0
    m0 = 0
    day,month,year = int(input("Enter a day: "))
    month = int(input("Enter a month: "))
    year = int(input("Enter a year:"))
    a = (day + x + (31 * m0) // 12) % 7
       for m0 in a:
          m0 = month + 12 * ((14 - month) // 12) - 2
       for x in a:
          x = y0 + y0 // 4 - y0 // 100 + y0 // 400
          for y0 in x:
             y0 = year - ((14 - month) // 12)
    if a == 0:
        print("Sunday")
    elif a == 1:
        print("Monday")
    elif a == 2:
        print("Tuesday")
    elif a == 3:
        print("Wednesday")
    elif a == 4:
        print("Thursday")
    elif a == 5:
        print("Friday")
    else:
        print("Error")

    return weekDay(a)

'''
here is the formula we were given:
[![formula][1]][1]


  [1]: https://i.stack.imgur.com/iBv30.png

【问题讨论】:

  • x, m0, y0 没有在任何地方定义,而是在代码中使用
  • 请提供有关问题的更多详细信息

标签: python weekday


【解决方案1】:

这应该会有所帮助:

>>> import datetime
>>> now = datetime.datetime.now()
>>> now.strftime('%A')
'Friday'
>>> 

【讨论】:

  • 这个答案对帖子没有帮助。他说他不能使用任何模块,您的解决方案仅适用于今天的情况,而不是通用日期。
  • @JoãoCastilho 你在使用打印Fridaydatetime.datetime(2020,5,15).strftime('%A') 有什么问题吗?或任何其他“通用”日期?
  • @JoãoCastilho 至少,现在他/她可以将结果与......
【解决方案2】:

全局变量未在任何地方定义,我无法理解您尝试编写的逻辑。所以写了一个基于 aptitude 技巧的函数。

def weekday(day,month,year):
    """
    This function is written based upon aptitude trick 
    to obtain day from given a date.
    Input date example : 15-5-2020
    Link for logic : https://www.youtube.com/watch?v=rJ0_GWDTdD4
    """
    # for different months we are assigning specific number to that month
    months = {1:1, 2:4, 3:4, 4:0, 5:2, 6:5, 7:0, 8:3, 9:6, 10:1, 11:4, 12:6}

    # assigning days to a number
    day_name = {1:'Sunday', 2:'Monday', 3:'Tuesday', 4:'Wednesday', 5:'Thursday',
                6:'Friday', 0:'Saturday'}

    # to get the year in between 1600 and 2000. since we are assiging values
    # for the years also
    while year not in range(1600,2000):
        if year>2000:
            year-=400
        if year<1600:
            year+=400
    # assigning values to years
    if year in range(1600,1700):
        yr = 6 
    if year in range(1700,1800):
        yr = 4
    if year in range(1800,1900):
        yr = 2
    if year in range(1900,2000):
        yr = 0

    # assigning last two numbers of year to last
    first = year//100
    last = year - (first * 100)

    # obtaining remainder 
    res = (day + months[month] + yr + last + (last//4))%7

    #returning the day_name
    return day_name[res]

day,month,year = list(map(int,input("Enter date in format dd-mm-yyyy : ").split('-')))
print(weekday(day,month,year))

希望你对逻辑感到满意。

【讨论】:

  • NameError: 未定义全局名称“first”
  • @lenik first 现在定义了。感谢您的关注。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-08
  • 1970-01-01
  • 2021-10-14
  • 1970-01-01
  • 2018-11-10
  • 2023-03-08
  • 1970-01-01
相关资源
最近更新 更多