0

我的程序无法进入我的最后一个 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
4

2 回答 2

0

在这一行:

if B_value == True:

我猜这B_value具有真正的价值,但不是True。试试这个:

if B_value:
于 2013-05-06T15:04:49.873 回答
0

问题出在你的name_lookup_return_boolean功能上。您正在True为这两种情况返回。此外,您应该枚举两者keyvalue否则 value 将被分配一个元组。

它应该如下所示:

def name_lookup_return_boolean(data_dict, name):
  for key,value in data_dict.items():
    if name in value:
      return True

更新:经过测试,我意识到以前的答案是错误的 - 只匹配第一个值

于 2013-05-06T15:22:53.737 回答