Así que he estado trabajando en un bot básico en Python 3.7 y estaba trabajando en una función de apagado. Cuando el usuario escribe la palabra "shutdown" o "Shutdown", el bot confirma si realmente desea cerrar el programa.

Para los comandos "Sí: y" No ", almacené todos los comandos en una lista. Ahora, cuando uso el programa que creé, solo funciona para el primer elemento de la lista, pero no para los otros elementos. El ejemplo se da abajo:

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.")

Si intenta ejecutar este código, notará que si escribe "Sí" o "No", que es el primer elemento de la lista, el programa funcionará bien. Pero si escribe cualquier otro elemento en la lista, como "sí" o "no", no funcionará.

He intentado este código cambiando también los números entre corchetes [] pero no funciona.

0
Haris Usmani 6 oct. 2019 a las 17:50

4 respuestas

La mejor respuesta

Acaba de comprobar el primer elemento con índice 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
PySeeker 6 oct. 2019 a las 14:55

En la lista de Python, lo siguiente funcionará y comprobará si las entradas del usuario coinciden o no:

if shutdownAnswer in shutdownAnswerNo:

O

if shutdownAnswer in shutdownAnswerYes:
2
Varun Singh 6 oct. 2019 a las 14:55

Debería reescribir su código de bloque If así:

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.")
1
Omid Esmaelbeyg 6 oct. 2019 a las 14:57

Cambie '==' a 'en'

if shutdownAnswer in shutdownAnswerNo:
if shutdownAnswer in shutdownAnswerYes:
0
misha 6 oct. 2019 a las 15:08
58258410