字典python上的迭代输入和更新

时间:2016-08-17 06:53:39

标签: python dictionary while-loop

词典的键 y

我有字典 x

x = {1 :'a', 2 :'b', 3 :'c', 4 :'d', 5 :'e'}

程序将这些显示为选项。接下来,用户选择一个进行更新,然后输入值。该程序应该将此值添加到另一个字典中的运行总计 y

字典x)的

,然后

  

x

将输入字典 y 作为

示例:

$python mysc.py
1. a
2. b
3. c
4. d
5. e
choose number to input case : **1**
you choose 'a'  #now i have a as keys of dictionary *y*
input number : **5**
y = { 'a' : 5 }

1. a
2. b
3. c
4. d
5. e
choose number to input case : **1**
you choose 'a'  #now i have a as keys of dictionary *y*
input number : **6**
y = { 'a' : 11 } #values of 'a' change to 11(5+6)

1. a
2. b
3. c
4. d
5. e
choose number to input case : **5**
you choose 'e'  #now we add a new keys of dictionary *y*
input number : **6**
y = { 'a' : 11, 'e' : 5  } 

代码:

y = {}
while True:
    x = {1 :'a', 2 :'b', 3 :'c', 4 :'d', 5 :'e'}
    n = input('choose number to input keys : ')
    nn = x[n]
    print 'your choose is ',x[n]
    m = input('input number : ')
    y[nn] = m
    print y

1 个答案:

答案 0 :(得分:1)

这个程序确实有问题。首先,字典对于您的选择菜单来说太过分了。由于您永远不会更改它,您可以简单地对选项进行硬编码并每次打印列表。

您的 y 字典是五个项目的运行总和 - 累积 - 的集合。你从来没有得到过一笔款项,因为你的代码只用一个新的代替现有的价值。我添加了代码来检查项目是否已经在 y ;如果是这样,新代码会将新值添加到旧代码中。

y = {}
x = " abcde"
while True:
    for i in range(1,len(x)):
        print i, ':', x[i]
    n = input('choose the number of the key you want to update:')
    key_num = x[n]
    print 'your choice is ',x[n]
    m = input('input update quantity : ')
    if key_num in y:
        y[key_num] += m
    else:
        y[key_num] = m
    print y

输出:

$ python2.7 so.py
1 : a
2 : b
3 : c
4 : d
5 : e
choose the number of the key you want to update:4
your choice is  d
input update quantity : 5
{'d': 5}
1 : a
2 : b
3 : c
4 : d
5 : e
choose the number of the key you want to update:1
your choice is  a
input update quantity : 5
{'a': 5, 'd': 5}
1 : a
2 : b
3 : c
4 : d
5 : e
choose the number of the key you want to update:4
your choice is  d
input update quantity : 6
{'a': 5, 'd': 11}
1 : a
2 : b
3 : c
4 : d
5 : e
choose the number of the key you want to update:
-- I interrupted the program --

这会让你进入下一阶段吗?