Jestem początkującym w Pythonie i mam problem z nieskończoną pętlą w moim programie. Tworzy moje instrukcje drukowania poprawnie, ale trwa w nieskończoność. Moje inne stwierdzenie na końcu również nie działa z jakiegoś powodu.

day = "Lets see how many classes you will have today."
day += "\nInput 'Finished' when you are done. What day is today? "
day = input(day)
active = True
while True:

    if day == 'Finished':
        active = False
    elif day == 'Wednesday':
        print("You should have just 1 class today!")


    elif day == 'Thursday':
        print("You should have 4 classes today!")


    elif day == 'Friday':
        print("You should have 2 classes today! ")


    elif day == 'Saturday':
        print("You should have 4 classes today! ")


    elif day == 'Sunday':
        print("You should have 4 classes today!")


    elif day =='Monday' or 'Tuesday':
        print("You don't have any classes today. Sit back and relax!")

    else:
        print("That is not a valid day dumbass!")
1
Kevin Floyd 1 kwiecień 2020, 05:41

3 odpowiedzi

Najlepsza odpowiedź

Zamiast while True powinieneś zapętlić while active

Ponadto Twój końcowy warunek elif powinien być

elif day == 'Monday' or day == 'Tuesday':

Musisz także zaakceptować dane wejściowe w pętli zgodnie z komentarzem @ dspencer

Kompletne rozwiązanie to

day = "Lets see how many classes you will have today."
day += "\nInput 'Finished' when you are done. What day is today? "

active = True
while active:
    day = input(day)

    if day == 'Finished':
        active = False
    elif day == 'Wednesday':
        print("You should have just 1 class today!")


    elif day == 'Thursday':
        print("You should have 4 classes today!")


    elif day == 'Friday':
        print("You should have 2 classes today! ")


    elif day == 'Saturday':
        print("You should have 4 classes today! ")


    elif day == 'Sunday':
        print("You should have 4 classes today!")


    elif day =='Monday' or day == 'Tuesday':
        print("You don't have any classes today. Sit back and relax!")

    else:
        print("That is not a valid day dumbass!")
4
David Stein 1 kwiecień 2020, 03:06

Zamiast używać podczas Prawdziwego użycia

active = True
while active:

Ponadto zakoduj następujące elementy wewnątrz pętli, aby akceptować dzień raz za razem, aż napotkany zostanie dzień == 'Finished'.

day = input(day)

W przeciwnym razie nigdy nie wyjdzie z pętli while i nie wejdzie w nieskończoną pętlę

Innym rozwiązaniem jest break, gdy active to false, przerwij pętlę za pomocą słowa kluczowego break

if day == 'Finished':
        active = False
        break
2
backdoor 1 kwiecień 2020, 02:56

W tym kodzie wprowadzono zbyt dużą złożoność. Powinieneś sprawdzić, używając przełącznika słownika w Pythonie.

Jest wiele sposobów na zrobienie tego, co chcesz, ale oto problemy z Twoim podejściem i sposoby ich rozwiązania:

Twój kod prawie działa, ale ma 4 problemy.

1: Nie wprowadziłeś wcięcia w pętli while

2: Nie dałeś swojemu programowi sposobu na break pętlę.

3: Instrukcja or w ostatnim elifie powinna być zapisana inaczej.

4: Musisz poprosić o inny dzień w każdej pętli if / elif / else /

Oto poprawiony kod:

day = "Lets see how many classes you will have today."
day += "\nInput 'Finished' when you are done. What day is today? "
day = input(day)
active = True
while active: #This was changed

    if day == 'Finished':
         active = False #This was changed

    elif day == 'Wednesday':
        print("You should have just 1 class today!")
        day = input("enter day: ") #This was added everywhere

    elif day == 'Thursday':
        print("You should have 4 classes today!")
        day = input("enter day: ")

    elif day == 'Friday':
        print("You should have 2 classes today! ")
        day = input("enter day: ")

    elif day == 'Saturday':
        print("You should have 4 classes today! ")
        day = input("enter day: ")

    elif day == 'Sunday':
        print("You should have 4 classes today!")
        day = input("enter day: ")

    elif day =='Monday' or day == 'Tuesday': #This was changed remember that ambiguity is your enemy!
        print("You don't have any classes today. Sit back and relax!")
        day = input("enter day: ")
    else:
        print("That is not a valid day!")
        day = input("enter day: ")
2
Ariel A 1 kwiecień 2020, 02:57