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,“标签不在列表中!”