我的程序无法进入if / else语句的最后一个。 我的代码:
def main_prog():
while True:
data_dict = {'123': 'viksun', '111': ['tord'], '333': ['test']} # Data storage.
print (data_dict) # Track-print
prompt = input('Enter command >>> ').split(" ")
if prompt[0] == 'lookup':
B_value = name_lookup_return_boolean(data_dict, prompt[1])
if B_value == True:
print (prompt[1],"'s number is:", name_lookup(data_dict, prompt[1]))
else:
print("The name:" ,prompt[1], "do not exist, please try a different name")
字典的数据结构:data_dict
data_dict = {'123': ['name1'], '111': ['tord'], '333': ['test']} # Data storage.
功能描述:
- name_lookup_returns_boolean(data_dict, name)
返回一个布尔值:如果名称位于字典中,则返回True;如果名称不存在,则返回False。
- name_lookup
返回与特定名称对应的密钥。
这些功能已经与整个程序分开测试,因此它们正在运行。如果你需要它们,我也可以发布它们。
我无法让程序运行程序中的最后一个else
语句。如果字典中不存在该名称,则会运行此命令:data_dict
。
这是两个函数的实现:
def name_lookup(data_dict, name):
for key, value in data_dict.items():
if name in value:
return key
def name_lookup_return_boolean(data_dict, name):
for value in data_dict.items():
if name in value:
return True
else:
return False
这是我试图使用没有成功的变种:
def name_lookup_version_02(data_dict, name):
for value in data_dict.values():
if name in value:
return True
else:
return False
答案 0 :(得分:0)
在这一行:
if B_value == True:
我猜测B_value
包含真值,但不是True
。试试这个:
if B_value:
答案 1 :(得分:0)
问题出在您的name_lookup_return_boolean
功能中。您将为这两个条件返回True
。此外,您应该枚举key
和value
,否则将为值分配一个元组。
它应该是这样的:
def name_lookup_return_boolean(data_dict, name):
for key,value in data_dict.items():
if name in value:
return True
更新:经过测试,我意识到以前的答案是错误的 - 只匹配第一个值