程序只会打印列表python中的第一个变量

时间:2015-02-16 22:15:23

标签: python list python-3.x input

这是我的代码:

H = Waterstof = 1.008
He = Helium = 4.003

atomen = [H, He]

vraag = raw_input("Welke atoommassa wil je weten? \n")

for vraag in atomen:
    print vraag
    break

我没有包括所有的原子,以确保它们不会让你们读起来太大。

所以问题是我的输出总是1.008(H的质量),即使我输入He作为输入。

请帮忙!

2 个答案:

答案 0 :(得分:2)

您正在循环[H, He]并打印第一个变量; break结束循环,因此永远不会打印第二个值。

不要使用单独的变量和列表,而是使用字典:

atom_weights = {'H': 1.008, 'He': 4.003}

这允许您为给定的原子缩写打印正确的原子量

print atom_weights[vraag]

如果你也想支持全名,你也必须映射它们:

atom_names = {'waterstof': 'H', 'helium': 'He'}

这会将小写的名称映射到符号,因此您可以先检查用户是否输入了全名并将其映射到符号:

symbol = atom_names.get(vraag.lower(), vraag)

这会将Waterstof翻译为waterstof,并找到H。如果名称不存在,则假定用户输入了符号。

答案 1 :(得分:0)

您重复使用vraag然后在循环的第一次迭代中中断 这应该有效:

H = Waterstof = 1.008
He = Helium = 4.003

atomen = [H, He]

vraag = raw_input("Welke atoommassa wil je weten? \n")

for v in atomen:
    if v==vraag:
        print vraag
        break

但是,为了更好地解决您的实际问题,我可能会使用字典(请参阅Martijn Pieters的回答)