有更聪明的方法来执行此代码吗?

时间:2016-12-23 01:38:21

标签: python while-loop

我是编程的新手,而且我正在练习使用while循环,我觉得我已经习惯了这项工作的逻辑,即代码要求添加名称到家谱列表然后打印它是笨拙的。

虽然我可以看到代码有效,但是有没有一种更简洁的方法来违反添加更多家庭成员的请求而不在while循环中再次调用add_member函数?

编辑:我知道理想情况下我会添加一个参数来检查用户是否输入了" no"停止添加会员等,但这不是我挣扎的部分。

family_tree = []
family_tree.append("Husband")
print("This family includes" + str(family_tree))



def newbie(name):
  family_tree.append(name)

def add_member():
  return input("Would you like to add a new member?").lower()


while add_member() == "yes":
  new_member = input("Enter the name of the Family member")
  newbie(new_member)
  continue 
  add_member()
  break
else:
  print(family_tree)

2 个答案:

答案 0 :(得分:2)

一个简单的修改就是:

while True:
  new_member = input("Enter the name of the Family member")
  newbie(new_member)
  if add_member() != "yes":
      break

print(family_tree)

或者:

keep_going = True
while keep_going:
  new_member = input("Enter the name of the Family member")
  newbie(new_member)
  keep_going = (add_member() == "yes")
else:
  print(family_tree)

等等。有很多方法可以重写它。

答案 1 :(得分:2)

你的逻辑大多是正确的,但你有一些问题。

continue语句跳过循环体的其余部分,然后返回循环的开头。它通常仅在if内有用,因此您可以有条件地跳过部分循环。它只是将它直接放在循环体中,它只是意味着将忽略循环体的其余部分,因此您可以简单地删除所有这些语句和continue

所以它应该是:

while add_member() == "yes":
    new_member = input("Enter the name of the Family member")
    newbie(new_member)
else:
    print(family_tree)

在这里使用else:也没什么意义。您可以在循环完成后执行该语句。

while add_member() == "yes":
    new_member = input("Enter the name of the Family member")
    newbie(new_member)

print(family_tree)

else:循环中while语句的目的是在循环完成时执行代码,除非由于break语句而退出。但是由于代码中没有break语句,因此永远不会发生该异常,并且始终会调用print函数。