将元素添加到具有12个用户输入的嵌套列表中

时间:2014-11-14 20:39:42

标签: python list while-loop append range

我想将12个用户的输入附加到列表中,例如每个月,我希望用户输入一个值。但是我希望这样做,以便每次循环重新循环时循环将值添加到下一个相应列表。我也受限于我可以用于我的作业。 以下是我目前编码的内容。

value_store = [[['Jan']],[['Feb']],[['Mar']],[['Apr']],[['May']],[['Jun']],[['Jul']],[['Aug']],[['Sep']],[['Oct']],[['Nov']],[['Dec']]]

def get_value():
    count = 0
    while count < 12:
        value = float(input('Enter a value between 0 and 2000: '))
        if value in range(2001):
              for k in value_store[:1]:
                    value_store[0].append(round(value,3))
                    count += 1
        else:
            print('Enter new value')
        print(value_store)
get_value()

上面的编码对其中一个列表进行了编码,并且循环了12次。 我想从列表中得到的结果是:

value_store = [[['Jan'],45],[['Feb'],54],[['Mar'],78],[['Apr'],97],[['May'],82],[['Jun'],74],[['Jul'],23],[['Aug'],23],[['Sep'],34],[['Oct'],54],[['Nov',12]],[['Dec'],120]]

以上值是用户在循环循环12次时输入的值。我希望将值插入到该格式的每个列表中,但是我对如何更改代码进行了混淆。

1 个答案:

答案 0 :(得分:0)

只需对代码进行一些注释:

if value in range(101):

你应该检查0&lt; = value&lt; = 100.否则你将为每个输入创建一个列表,检查该值是否在列表中(必须搜索整个列表)。你要求0到300之间的数字并检查100。

for k in range(value_store[:1]):

你遍历第一个元素并通过索引0对其进行地址:

value_store[0].append(round(value,3))

所以不需要迭代。

这是一个有效的例子:

value_store = [[['Jan']],[['Feb']],[['Mar']],[['Apr']],[['May']],[['Jun']],[['Jul']], [['Aug']],[['Sep']],[['Oct']],[['Nov']],[['Dec']]]

def get_value():
    global value_store
    for value_list in value_store:
        month = value_list[0][0]
        value = -1
        while not 0 <= value <= 100:
            value = float(input('Enter a value between 0 and 300 for {0}: '.format(month)))
        value_list.append(round(value, 3))
    print(value_store)
get_value()