python - 如何检查输入是否超出字典列表的范围?

标签 python list dictionary

我有一个名为“periodic_table”的文件。这个文件里面有多行。每行的边上有一个原子序数,右边有一个相应的元素名称,如下所示:

1 Hydrogen
2 Helium
3 Lithium
4 Beryllium
5 Boron
6 Carbon
7 Nitrogen
8 Oxygen
9 Fluorine
10 Neon
11 Sodium
12 Magnesium
13 Aluminium
14 Silicon
etc...

我编写了一个程序,要求输入元素名称或编号,然后打印出字典中的相应值。如果用户输入 1,它将打印氢,类似地,如果用户输入硅,它将输出 14。但是-我希望程序在用户输入不存在的原子序数(例如 150)或不存在的元素(例如毯子或任何其他字符串)。我尝试使用 if 但它打印出一个无限循环:

element_list = {}
name = input("Enter element number or element name: ")
while name:
    with open("periodic_table.txt") as f:
        for line in f:
           (key, val) = line.split()
           element_list[int(key)] = val
           if name == key:
               print(val)
           elif name == val:
               print(key)
    name = input("Enter element number or element name: ")

最佳答案

为了对现有代码进行最少的更改,您可以在找到该元素时设置一个标志 found,并据此采取行动。所以:

    found = False
    for line in f:
        # ....
        if name == key:
            print(val)
            found = True
        elif ...
    if not found:
        print("Not an element or atomic number: {}".format(name))

关于python - 如何检查输入是否超出字典列表的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18545221/

相关文章:

python - 使用 pydbgen 模块时出现 TypeError

python - 为什么赋值会默默地失败或做错误的事情,我怎样才能阻止它这样做

Python - 检查列表中的数字是否是数字的因子

python - 添加一个数字到指定索引范围内的列表

python - 在 Python 中连接压缩值

python - 为什么对 tensorflow 张量进行 pickle 会失败?

r - 展开矩阵列表的维数

python - 过滤字典的值

python 映射与字符串

python - 使用不同的 map 同时映射多个列