2013-04-27 58 views
1

以下是我正在尝试的内容,不知道我在哪里搞乱了。我有预期的产量在底部。任何人都可以提供什么是错误的输入?根据更改/更改状态在字典中打印列表

  1. 在字典中的每个主变化及其相关的变化

  2. 重复步骤#1创建一个列表,直到depchange状态是不是新

我的代码:

def depchange(change): 
    depchange_status='' 
    if change == "23456": 
     depchange=33456 
     depchange_status == 'NEW' 
    if change == "33456": 
     depchange="" 
     depchange_status == 'COMPLETED' 
    return (depchange,depchange_status) 


def main(): 
    master_change="23456" 
    dep={} 
    while True: 
     dep_change,depchange_status=depchange(master_change) 
     master_change = dep_change 
     dep[master_change]=dep_change 
     if depchange_status != 'NEW': 
      break 
    print dep 

if __name__ == '__main__': 
    main() 


''' 
EXPECTED OUTPUT:- 
dep = { 
    '23456': ['33456'], 
    '33456': [], 
    } 
''' 
+0

还有一些“可读”的代码,不要仅仅用一个下划线区分变量名。 – pradyunsg 2013-04-27 19:43:21

回答

1

呃,你depchange()函数,你实际上意味着以比较的depchange_status,或者你的意思是改变他们?你在那里有'=='。

就是这样,在同一个函数中,depchange从字符串切换到int。我假设你想让它保持一个字符串。

def depchange(change): 
    depchange_status='' 
    if change == "23456": 
     depchange="33456" 
     depchange_status = 'NEW' 
    if change == "33456": 
     depchange="" 
     depchange_status = 'COMPLETED' 
    return (depchange,depchange_status) 


def main(): 
    master_change="23456" 
    dep={} 
    while True: 
     dep_change,depchange_status=depchange(master_change) 
     dep[master_change]=[dep_change] 
     master_change = dep_change 
     if depchange_status != 'NEW': 
      break 
    print dep 

if __name__ == '__main__': 
    main() 
+0

@Trueerror - 我看到这些值不会被打印为列表..当前它们被打印为{'33456':'','23456':'33456'} ..如何使值作为列表? – user2125827 2013-04-28 03:33:23

0

交换这两行的顺序。您要在dep的分配中使用旧值master_change

master_change = dep_change 
dep[master_change]=dep_change 

另外你在几个任务都==,而不是=

depchange_status == 'NEW' 
depchange_status == 'COMPLETED' 
+0

固定我的问题的一部分,但while循环似乎没有工作..我仍然没有看到“'33456':[],”打印... 33456是一个独立的变化状态“新”...进一步33456没有任何依赖关系,所以while循环应该在这里停止 – user2125827 2013-04-27 19:46:59