【问题标题】:Break if input left blank inside of an if statement如果输入在 if 语句中留空,则中断
【发布时间】:2020-02-16 02:53:25
【问题描述】:

我有一个 Python 的学校作业,我有一个背包里的物品,需要编写代码来询问用户是否想要:a)将物品添加到背包中,b)检查背包中的物品, c) 退出程序。

对于我的代码,我想这样做,如果用户在输入时添加新项目只是点击返回并将输入留空,它将再次提示输入,而不是在没有项目时继续代码实际上是添加的。这是我目前所拥有的:

import sys

itemsInBackpack = ["book", "computer", "keys", "travel mug"]

while True:
    print("Would you like to:")
    print("1. Add an item to the backpack?")
    print("2. Check if an item is in the backpack?")
    print("3. Quit")
    userChoice = input()

    if (userChoice == "1"):
        print("What item do you want to add to the backpack?")
        itemAddNew = input()
        if itemAddNew == "":
            break
        else:
            itemsInBackpack.insert(0, itemAddNew)
            print("Added to backpack.")

在此处使用我的代码,即使我在测试中按回车键并将输入留空,代码仍会继续前进,并且不会中断以再次提示输入。是因为我已经在 if 语句中使用了 if 语句吗?我确信总的来说有更好的方法可以做到这一点,但作为一个初学者,我很难过,并且可以在正确的方向上使用。

【问题讨论】:

  • break 将转义您的 while 循环,从而结束代码。听起来你想添加另一个 while 循环?
  • 有趣,我没有考虑到这一点。我通过快速的 while True, if/else 来测试它,它让我知道我的 itemAddNew 没有定义。如何让它在第二个 while 循环之外识别 itemAddNew?
  • @cwbusacker 的回答可能会有所帮助

标签: python if-statement input break


【解决方案1】:

break 停止循环中的所有内容并导致程序结束。

如果你想在用户给你东西之前提示输入,改变这个:

        print("What item do you want to add to the backpack?")
        itemAddNew = input()
        if itemAddNew == "":
            break

到这里:

        print("What item do you want to add to the backpack?")
        itemAddNew = input()
        while itemAddNew == "":
            #Added some output text to tell the user what went wrong.
            itemAddNew = input("You didn't enter anything. Try again.\n")

当文本为空时,这将继续进行。

【讨论】:

  • 这很有意义,re:break。我误解了break,认为它会破坏代码并返回到最后一行代码。谢谢你。您的建议效果很好,但 PyCharm 表示它无法在您建议的 while 循环中定义 itemAddNew。有没有办法在循环之外识别 itemAddNew ?我知道我可以在上面定义它,例如 itemsInBackpack,但不太确定在这种情况下如何定义。
  • @ajdbnabad13 我不确定你的意思。 PyCharm 不能识别哪一行?您的代码中必须有其他东西正在使用 itemsAddNew 无法识别的地方,因为这可以正常工作。您指的是 else 语句中的内容吗?
  • 在我的 if 语句中,我定义了 itemAddNew = input()。在它的正下方,我开始您的建议,而 itemAddNew == "":。在您建议的 while 循环的 itemAddNew 中,PyCharm 用黄色下划线并指出 itemAddNew 无法定义,即使它是在您建议的循环之外定义的。我该如何补救这个下划线?尽管有下划线,但代码可以正常运行。
  • 拼写和大写完全一样吗? itemAddNewitemAddnew 不一样
  • 很难说,因为我们在循环的正上方定义了它并且变量是相同的。如果代码运行带下划线,那可能只是 PyCharm 的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 2012-11-29
  • 1970-01-01
  • 2017-01-08
  • 2019-04-17
相关资源
最近更新 更多