2013-05-06 114 views
0

我的程序是无法进入最后我的if/else语句的。 我的代码:字典的语言:Python(vers3.3);如果在里面语句和if语句

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)返回boolean值不存在。 - 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 

这是我曾尝试没有sucess到use_but变化:

def name_lookup_version_02(data_dict, name): 
    for value in data_dict.values(): 
     if name in value: 
      return True 
     else: 
      return False 
+0

如果这是蟒蛇,我猜从语法上讲,您可能想要在data_dict.keys():'中使用'if [1]'。你不需要定义一个单独的函数。另一方面,如果这是伪代码,那么帮助很难,因为错误通常是代码中的小错误的结果。 – Dolphiniac 2013-05-06 14:55:12

+0

您可以添加用作标签的语言吗? – 2013-05-06 14:55:14

+0

如何实现'name_lookup_return_boolean'? – 2013-05-06 14:59:16

回答

0

在这一行:

if B_value == True: 

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

if B_value: 
+0

好的,感谢您的帮助。 – VIKSUN 2013-05-08 09:27:56

0

的问题是在你的name_lookup_return_boolean功能。这两种条件都返回True。你也应该列举两个keyvalue否则值将被分配一个元组。

它应该是这样的:

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

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

+0

感谢您的回答。但是这并没有解决它。 这是一个程序运行的例子: {'111':['tord'],'123':['viksun'],'333':['test']} Enter command >>> lookup asdd asdd的号码是:无 {'111':['tord'],'123':['viksun'],'333':['test']} 输入命令>>> – VIKSUN 2013-05-08 09:37:34

+0

尝试输入'lookup 123',正如我在我的回答中所建议的那样。另外,正如我在我的回答中所说的,如果您需要更多帮助,您将需要提供name_lookup函数的定义,因为这可能是问题所在。行! – 2013-05-08 09:40:56

+0

行!发布了2个功能: – VIKSUN 2013-05-08 11:08:54