dimanche 15 juillet 2018

How to avoid used many if statements in definition?

I have a function which create list of url. Function works fine. But I do not like what this function looks like:

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

Code looks awful as I mention.I used many if statements and want to simplify this. Can you suggest more elegant ways of writing this definition, avoiding the use of if statements?

Aucun commentaire:

Enregistrer un commentaire