Как использовать списки в операторах потока управления в Python - PullRequest
0 голосов
/ 06 октября 2019

Итак, я работал над базовым ботом в 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.")

Если вы попытаетесь запустить этот код, вы заметите, что если вы введете «Да» или «Нет», который является первым элементом в списке, программа будетработает нормально. Но если вы введете какие-либо другие элементы в списке, такие как «да» или «нет», они не будут работать.

Я пробовал этот код, изменяя также числа в скобках [], но это не такне работает.

Ответы [ 4 ]

2 голосов
/ 06 октября 2019

Вы только что проверили первый элемент с индексом 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.")
2 голосов
/ 06 октября 2019

В списке Python будет работать следующее и проверять, совпадают ли введенные пользователем данные:

if shutdownAnswer in shutdownAnswerNo:

или

if shutdownAnswer in shutdownAnswerYes:
1 голос
/ 06 октября 2019

Вы должны переписать свой код блока If следующим образом:

if shutdownAnswer in shutdownAnswerNo:
     print("Got it! Resuming back to normal mode.")
if shutdownAnswer in shutdownAnswerYes:
     print("Got it! Shutting down.")
     time.sleep(1)
     exit("Shutdown Complete.")
0 голосов
/ 06 октября 2019

изменить '==' на 'в'

if shutdownAnswer in shutdownAnswerNo:
if shutdownAnswer in shutdownAnswerYes:
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...