通过循环不同字典中的数字来创建列表

时间:2021-01-06 08:57:19

标签: python list loops dictionary

我正在尝试通过循环 2020 年的几天和几个月来创建一个列表,如果月 + 日 + 年 = 7,那么我需要将其添加到列表中。但是,如果月份是 11,那么程序应该执行 1 + 1 = 2(而不是 11),因此我没有使用列表,而是使用值进行了字典。但如果我遗漏了什么,我不会。

这是我目前的代码:

day = {1:1, 2:2, 3:3, 4:4, 5:5, 6:6, 7:7, 8:8, 9:9, 10:1, 11:2, 12:3, 13:4, 14:5, 15:6, 16:7, 17:8, 18:9, 19:10, 20:2, 21:3, 22:4, 23:5, 24:6, 25:7, 26:8, 27:9, 28:10, 29:11, 30:3, 31:4}
month = {1:1, 2:2, 3:3, 4:4, 5:5, 6:6, 7:7, 8:8, 9:9, 10:1, 11:2, 12:3,}
year = {20:2}
dagar_007 = []

def ordning(m,d,y):    
    for y in year.values():
        for m in month.values():
            if m == 2:
                for d in day.values():
                    if y + m + d == 7:
                        if d == 30:
                            break
                        dagar_007.append(ordning)
            elif m == 4 or 6 or 8 or 11:
                for d in day.values():
                    if y + m + d == 7:
                        if d == 31:
                            break
                        dagar_007.append(ordning)
            else:                                               
                for d in day.values():
                    if y + m + d == 7:
                        dagar_007.append(ordning)
                        if d == 32:
                            break
print(dagar_007)

# How it kind of looks like

print("List of days with sum 7:")
# 1/4/20 007

print(dagar_007, "007")

print(datetime.datetime.strftime(x,"%m/%d/%y"))

print("Sannolikheten: ", len(dagar_007) / 366 * 100, "%")
print("in other words:", len(dagar_007), "chances on 366")

1 个答案:

答案 0 :(得分:0)

试试这个代码来建立你的列表

def one_digit_nunmber(number):
return sum([int(i) for i in list(number)])

month = [str(i) for i in range(1, 13)]
year = [str(i) for i in range(20, 21)]
result = []
for y in year:
    for m in month:
        if m in ["2"]:
            day = [str(i) for i in range(1, 30)]
        elif m in ["4", "6", "8", "11"]:
            day = [str(i) for i in range(1, 31)]
        else:
            day = [str(i) for i in range(1, 32)]
        result += [(d, m, y) for d in day if one_digit_nunmber(y + m + d) == 7]

print(result)