Как мне разорвать этот цикл?(установка break только дает ошибку не правильно в цикле) - PullRequest
0 голосов
/ 30 апреля 2019

Мне нужно, чтобы моя программа прерывала цикл и заканчивала, когда пользователь говорит «нет».Разрыв не работает, так как он просто выдаст ошибку «Не правильно разорвать в цикле.)

import random

import time

 motiv_list = ["aaaaaaaaaaa", "frick"]

 while True:

    UserFeeling_str=raw_input("How are you feeling today?")

    if UserFeeling_str == "happy":

        print(random.choice(motiv_list))

        time.sleep(1.50)

        QuoteReplay_str=raw_input("Would you like to hear another quote?")

if QuoteReplay_str == "yes":

     print()

elif QuoteReplay_str == "no":

    # (need to know what goes here)

Ответы [ 2 ]

1 голос
/ 30 апреля 2019

У вас, похоже, проблема с отступами.

import random

import time

    motiv_list = ["aaaaaaaaaaa", "frick"]

    while True:

    UserFeeling_str=raw_input("How are you feeling today?")

    if UserFeeling_str == "happy":

        print(random.choice(motiv_list))

        time.sleep(1.50)

        QuoteReplay_str=raw_input("Would you like to hear another quote?")

        if QuoteReplay_str == "yes":

                print()

        elif QuoteReplay_str == "no":

            break

Но здесь есть несколько предостережений с неопределенным поведением:

  • что если if UserFeeling_str != "happy":
  • что если QuoteReplay_str не является ни yes, ни no?
    • вы можете иметь if QuoteReplay_str == "yes", а затем else вместо elif QuoteReplay_str == "no"
0 голосов
/ 30 апреля 2019

Ваш отступ в этом примере находится вне цикла while.

import random

import time

motiv_list = ["aaaaaaaaaaa", "frick"]

while True:

    UserFeeling_str=raw_input("How are you feeling today?")

    if UserFeeling_str == "happy":

        print(random.choice(motiv_list))

        time.sleep(1.50)

        QuoteReplay_str=raw_input("Would you like to hear another quote?")

    if QuoteReplay_str.lower() == "yes":

        print()

    elif QuoteReplay_str.lower() == "no":

        break

Должно работать. Добавление .lower () также позволяет вам принимать «НЕТ» и «ДА» в качестве допустимых ответов.

В качестве альтернативы, вы можете включить его в условие цикла while, поскольку оно находится в конце цикла действий:

QuoteReplay_str = ""

while QuoteReplay_str.lower() != "no":
    #rest of stuff
...