【问题标题】:Not printing a string if I have an empty list如果我有一个空列表,则不打印字符串
【发布时间】:2013-05-21 21:01:18
【问题描述】:

所以我有一些代码,我在开始时创建一个列表,然后询问用户是否想要制作一个对象(乌龟),在这种情况下,它会将其添加到列表中,或者他是否想移动乌龟(X)。如果用户尚未创建对象,我希望它打印“需要创建对象”。但它似乎没有打印。我知道代码会自行打印出来,所以我想知道为什么这在函数中不起作用。所以本质上,如果我有一个空列表,我只想让代码打印“需要创建对象”。

adventurousch = []

def RoamingTurtles(): 
   command = raw_input("---> ")
   if command == 'A':
     newAdventureTurtle()
     RoamingTurtles() 
  if command == 'X':
    if adventurousch == []:
      print "Need to create object"
    else:
      for i in adventurousch:
        i.drawSquare()
        print "test2

【问题讨论】:

  • 如果条件是:如果不是adventurousch: ... print "需要创建对象"

标签: python list printing


【解决方案1】:

这应该可以解决问题:

...
if not adventurousch:
      print "Need to create object"
...

另请参阅:Best way to check if a list is empty

【讨论】:

  • 那行得通。我现在的问题是,当我尝试通过在打印后输入 RoamingTurtles() 来反馈函数时,它会停止打印?
【解决方案2】:

代码adventurousch == [] 正在测试adventurousch 是否等于那个特定的空列表,而不是它是否为空。要检查adventurousch 是否为空,请使用if not adventurousch:

【讨论】:

  • 这样行得通,但是当我尝试通过在打印后添加 RoamingTurtles() 让它反馈到函数时,它不会打印,只是通过函数?
  • 没有看到你的其余代码,很难说,但如果递归调用RoamingTurtles() 会达到你希望达到的效果,我会感到惊讶。作为替代方案,我建议在RoamingTurtles() 中使用循环来允许用户创建他/她想要的任意数量的海龟。此外,使用像adventurousch 这样的全局变量,newAdventureTurtle() 可能会附加一个海龟,这会使程序难以理解。我建议从函数中返回新的海龟,这样你就可以说adventurousch.append(newAdventureTurtle())
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-05
  • 2021-02-24
相关资源
最近更新 更多