【问题标题】:Program doesn't end after user types in "q" for quit outside the function - Python while loop用户在函数外输入“q”退出后程序没有结束 - Python while循环
【发布时间】:2018-05-03 12:45:31
【问题描述】:

我希望用户向列表中添加新项目。当用户输入“q”时,我希望程序退出,然后将此列表用作另一个函数的输入。 但我无法跳出循环,因为“Q”已添加到列表中:

base = ["item1", "item2"]

def add_item(item, base=base):
    item=item.upper()
    base.append(item)
    return base

while True:
    user_input = add_item(input("Add an item or enter q to finish: "))
    if user_input == "Q":
      break

    else:
       print(f"New item added: {user_input}")
print("Added")

另外,我以后如何使用最终输出(最终列表)作为另一个函数的输入? 我想检查该项目是否已经在列表中,然后对这个项目做一些事情。 我有一个大概的想法,也许我应该像这样使用“全局”:

def check(item):
  global base
  if item in base:
    print("in the list")
  else:
    print("not here")

有更好的方法吗?

【问题讨论】:

  • user_input 保存add_item 的返回值。 add_item 永远不会返回字符串 "Q"。您应该在调用add_item之前检查用户输入。
  • 另外,在您的代码中,您正在检查大写 Q 并且在您的问题中您说 When user enters "q"(下划线 q)。下划线 q 永远不会结束你的程序。
  • 不过我也改成大写了

标签: python python-3.x while-loop user-input


【解决方案1】:

因为 user_input 是你的函数的返回值,而不是用户输入的程序的实际输入!

in = input("Add an item or enter q to finish: ")
if in == "Q":
      break
else:
      user_input = add_item()

【讨论】:

    猜你喜欢
    • 2019-03-19
    • 2022-01-18
    • 2018-09-01
    • 2018-03-09
    • 1970-01-01
    • 2017-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多