首页 > 解决方案 > 如何在 Python 的控制流语句中使用列表

问题描述

所以我一直在使用 Python 3.7 开发一个基本的机器人,并且正在开发一个关闭功能。当用户键入单词“shutdown”或“Shutdown”时,机器人会确认您是否真的要关闭程序。

对于“是:”和“否”命令,我将所有命令存储在一个列表中。现在,当我使用我创建的程序时,它只适用于列表中的第一项,而不适用于其他项目。给出的例子以下:

import time


shutdownAnswerYes = ["Yes", "yes", "Ye", "ye", "Y", "y"]
shutdownAnswerNo = ["No", "no", "nah", "nope", "N", "n"]

shutdown = "shutdown"

while True:
    question = input("What do you want to do?: ")

    if question == shutdown:
        shutdownAnswer = input("Are you sure you want to shutdown?: ")
        if shutdownAnswer == shutdownAnswerNo[0]:
            print("Got it! Resuming back to normal mode.")
        elif shutdownAnswer == shutdownAnswerYes[0]:
            print("Got it! Shutting down.")
            time.sleep(1)
            exit("Shutdown Complete.")

如果您尝试运行此代码,您会注意到,如果您键入列表中的第一项“是”或“否”,程序将正常运行。但是,如果您在列表中键入任何其他项目,例如“是”或“否”,它将不起作用。

我也通过更改 [] 括号中的数字来尝试此代码,但它不起作用。

标签: pythonpython-3.xpycharm

解决方案


您刚刚检查了索引为 0 的第一个元素。

import time


shutdownAnswerYes = ["Yes", "yes", "Ye", "ye", "Y", "y"]
shutdownAnswerNo = ["No", "no", "nah", "nope", "N", "n"]

shutdown = "shutdown"

while True:
    question = input("What do you want to do?: ")

    if question == shutdown:
        shutdownAnswer = input("Are you sure you want to shutdown?: ")
        if shutdownAnswer in shutdownAnswerNo:
            print("Got it! Resuming back to normal mode.")
        elif shutdownAnswer in shutdownAnswerYes:
            print("Got it! Shutting down.")
            time.sleep(1)
            exit("Shutdown Complete.")

推荐阅读