Python 我想不出我的方法有什么问题

Python 我想不出我的方法有什么问题,python,Python,我有一个列表/字典,其中存储了一个与数字对应的单词,如下所示: MSG1 3027 MEMORYSPACE 3036 NEWLINE 3037 NEG48 3038 如果用户输入以下单词,“我的方法”将检索一个数字: def retrieve_data(): insert_data() nb = input('Choose a label: ') for j in data: a=j[0] b=j[1]

我有一个列表/字典,其中存储了一个与数字对应的单词,如下所示:

MSG1        3027
MEMORYSPACE 3036
NEWLINE     3037
NEG48       3038
如果用户输入以下单词,“我的方法”将检索一个数字:

def retrieve_data():
    insert_data()
    nb = input('Choose a label: ')
    for j in data:
        a=j[0]
        b=j[1]
        if a == nb:
            print(b)
        else:
            print('Label not in list!')
所以我应该得到3036,但这是我调用该方法时得到的输出:

Choose a label: MEMORYSPACE
Label not in list!
3036
Label not in list!
Label not in list!

知道它为什么这么做吗?谢谢

您正在循环数据中的每个条目,因此它正在为数据中的每个条目打印。这个问题对于字典来说是完美的:

data = {'MSG1': 3027, 'MEMORYSPACE': 3036, 'NEWLINE': 3037, 'NEG48': 3038}
nb = input('Choose a label: ')
print(data.get(nb, 'Label not in list!'))

根据下面的注释进行编辑,如果您仍然希望它不在列表中打印,那么您将遍历数据中的每个条目,因此它将针对数据中的每个项目进行打印。这个问题对于字典来说是完美的:

data = {'MSG1': 3027, 'MEMORYSPACE': 3036, 'NEWLINE': 3037, 'NEG48': 3038}
nb = input('Choose a label: ')
print(data.get(nb, 'Label not in list!'))

根据下面的注释进行编辑,如果您仍然希望它不在列表中打印,那么您可以在dict的每个项目上循环,并且只有一个匹配项,以便它打印出不在列表中的标签!为了其他人。您想从else中删除一个缩进级别,并在printb之后中断

def retrieve_data():
    insert_data()
    nb = input('Choose a label: ')
    for j in data:
        a=j[0]
        b=j[1]
        if a == nb:
            print(b)
            break
    else:
        print('Label not in list!')

好吧,你们循环了dict的每个项目,只有一个匹配,所以它打印出的标签不在列表中!为了其他人。您想从else中删除一个缩进级别,并在printb之后中断

def retrieve_data():
    insert_data()
    nb = input('Choose a label: ')
    for j in data:
        a=j[0]
        b=j[1]
        if a == nb:
            print(b)
            break
    else:
        print('Label not in list!')

另一种方法是

dic={"MSG1":3027,"MEMORYSPACE":3036,"NEWLINE":3037,"NEG48":3038}


def retrieve_data():
    nb=raw_input("Choose a label: ")

    if nb in dic.keys():
        print dic[nb]
    else:
        print "Label not in list!"

另一种方法是

dic={"MSG1":3027,"MEMORYSPACE":3036,"NEWLINE":3037,"NEG48":3038}


def retrieve_data():
    nb=raw_input("Choose a label: ")

    if nb in dic.keys():
        print dic[nb]
    else:
        print "Label not in list!"

这是因为在foorloop的每一个循环中,你们都会调用一个if/else语句,它会打印出这样或那个样的内容。只需一圈,你就能得到“正确”的答案

有更好的方法可以满足您的需求,但我会尽可能地为您编写一段代码:

def retrieve_data():
    found = False
    insert_data()
    nb = input('Choose a label: ')
    for j in data:
        a=j[0]
        b=j[1]
        if a == nb:
            found = True
            print(b)
    if not found:
        print('Label not in list!')


这是因为在foorloop的每一个循环中,你们都会调用一个if/else语句,它会打印出这样或那个样的内容。只需一圈,你就能得到“正确”的答案

有更好的方法可以满足您的需求,但我会尽可能地为您编写一段代码:

def retrieve_data():
    found = False
    insert_data()
    nb = input('Choose a label: ')
    for j in data:
        a=j[0]
        b=j[1]
        if a == nb:
            found = True
            print(b)
    if not found:
        print('Label not in list!')


这里只是一个小改进:printdata.getnb,“标签不在列表中!”这里只是一个小改进:printdata.getnb,“标签不在列表中!”