如何避免在定义中使用许多if语句?

2024-04-26 10:56:03 发布

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

我有一个创建url列表的函数。功能正常。但我不喜欢这个函数的样子:

def prepareadres(city,y,m,d):
    month = [31,28,31,30,31,30,31,31,30,31,30,31]
    d = d + 1
    d0 = 0
    m0 = 0
    if (d > month[0]):
        d = d - month[0]
        m = m + 1
    if (d > month[1]):
        d = d - month[1]
        m = m + 1
    if (d > month[2]):
        d = d - month[2]
        m = m + 1
    if (d > month[3]):
        d = d - month[3]
        m = m + 1
    if (d > month[4]):
        d = d - month[4]
        m = m + 1
    if (d > month[5]):
        d = d - month[5]
        m = m + 1
    if (d > month[6]):
        d = d - month[6]
        m = m + 1
    if (d > month[7]):
        d = d - month[7]
        m = m + 1
    if (d > month[8]):
        d = d - month[8]
        m = m + 1
    if (d > month[9]):
        d = d - month[9]
        m = m + 1
    if (d > month[10]):
        d = d - month[10]
        m = m + 1
    if (d > month[11]):
        d = d - month[11]
        m = m + 1
    if d == sum(month):    
        print("year complete")
        #print(df.iloc[0, :-2])
    if (m < 10) and (d < 10):
        adres = "https://sinoptik.ua/погода-" + city + "/" + str(y) + "-" + str(m0) + str(m) + "-" + str(d0) + str(d)
    elif (m < 10) and (d >= 10):
        adres = "https://sinoptik.ua/погода-" + city + "/" + str(y) + "-"+ str(m0) + str(m) + "-" + str(d)
    elif (m >= 10) and (d < 10):
        adres = "https://sinoptik.ua/погода-" + city + "/" + str(y) + "-" + str(m) + "-" + str(d0) + str(d)   
    else:
        adres = "https://sinoptik.ua/погода-" + city + "/" + str(y) + "-" + str(m) + "-" + str(d)
    #print(adres)
    return adres

正如我提到的,代码看起来很糟糕。我使用了许多if语句,希望简化这个过程。你能建议更优雅的方法来写这个定义吗,避免使用if语句?你知道吗


Tags: and函数httpscityif语句uaprint
1条回答
网友
1楼 · 发布于 2024-04-26 10:56:03

使用for循环遍历月份:

def prepareadres(city,y,m,d):
    months = [31,28,31,30,31,30,31,31,30,31,30,31]
    d = d + 1
    d0 = 0
    m0 = 0
    for month in months:
        if d > month:
             d = d - month
             m += 1
    if d == sum(months):    
        print("year complete")
        #print(df.iloc[0, :-2])
    if (m < 10) and (d < 10):
        adres = "https://sinoptik.ua/погода-" + city + "/" + str(y) + "-" + str(m0) + str(m) + "-" + str(d0) + str(d)
    elif (m < 10) and (d >= 10):
        adres = "https://sinoptik.ua/погода-" + city + "/" + str(y) + "-"+ str(m0) + str(m) + "-" + str(d)
    elif (m >= 10) and (d < 10):
        adres = "https://sinoptik.ua/погода-" + city + "/" + str(y) + "-" + str(m) + "-" + str(d0) + str(d)   
    else:
        adres = "https://sinoptik.ua/погода-" + city + "/" + str(y) + "-" + str(m) + "-" + str(d)
    #print(adres)
    return adres

相关问题 更多 >