名称错误:未定义名称“yearout”

2024-09-28 23:33:37 发布

您现在位置:Python中文网/ 问答频道 /正文

请告诉我哪里出了问题,还有其他需要改进的地方

def finalcalc(y, d, m):
    end = (y + d + m) % 7
    return end
def monthlook(m):
    if m == 1:
        monthout = 6
    elif m == 2:
        monthout = 2
    elif m == 3:
        monthout = 2
    elif m == 4:
        monthout = 5
    elif m == 5:
        monthout = 0
    elif m == 6:
        monthout = 3
    elif m == 7:
        monthout = 5
    elif m == 8:
        monthout = 1
    elif m == 9:
        monthout = 4
    elif m == 10:
        monthout = 6
    elif m == 11:
        monthout = 2
    elif m == 12:
        monthout = 4
print(finalcalc(yearout, dayout, monthout))    
def daysimp(d):
    dayout = d % 7
    monthlook(monthin)
def yearc(y):
    y = y % 100
    yearout = y + (y // 4)
    yearrem = y % 4
    if yearrem >= 2:
        yearout += 1
    yearout = yearout % 7
    daysimp(dayin)
dayin = int(input("What day in the Month?"))
monthin = int(input("What Month Number? - Eg. January is 1"))
yearin = int(input("What Year?"))
yearc(yearin)

错误信息是:“NameError:name‘yearout’未定义”—请给出您发现的任何其他问题的解决方案和答案,以及可以简化和/或改进的方法。在


Tags: inputifdefwhatintendeliffinalcalc
2条回答

yearout是函数yearc中定义的一个名称,当您调用finalcalc()时,该名称是不可见的,您将得到您的错误。在

你对dayoutmonthout也有同样的问题。在

在调用finalcalc()之前,您需要决定yearoutdayout和{}的值应该是。也许你想把这些名字设置成其他函数的结果?然后,这些函数需要使用return使这些值对调用者可用。在

例如,更改yearc函数以返回新的yearout值:

def yearc(y):
    y = y % 100
    yearout = y + (y // 4)
    yearrem = y % 4
    if yearrem >= 2:
        yearout += 1
    yearout = yearout % 7
    return yearout

然后以新名称存储该函数的结果:

^{pr2}$

对其他名称和函数也一样。在

你真的想再通读一遍Python tutorial on functions。在

与其从其他方法按顺序调用方法,不如从每个方法返回值,然后调用下一个方法来获取下一个值。在

因为,似乎您希望将这三个方法中计算的值传递给您的finalcalc方法,所以您需要更改方法以返回这些值yearoutdayoutmonthout,并将返回值存储在某个变量中。然后可以将这些返回值用作finalcalc方法的参数:

yearout = yearc(yearin)
monthout = monthlook(monthin)
daysout = daysimp(dayin)

print(finalcalc(yearout, dayout, monthout))

您的方法daysimp可以简单地更改为:

^{pr2}$

同样修改其他2种方法。在

相关问题 更多 >