Почему мой код не понимает, что game = false? - PullRequest
0 голосов
/ 28 мая 2020

У меня есть время l oop, в котором написано:

game = True
while game == True:
    shop = False
    while shop == False:
        choice = input("Press ENTER to dig. Press E(then ENTER) to end game. Press S(then enter) for shop.")
        if choice == "E" or choice == "e":
           game = False

И все же это повторяется, и я не могу понять, почему (я тоже новичок в кодировании, поэтому может быть очевидное ответ) Ссылка на код здесь: https://repl.it/@WeirdDragon / ore-digging-sim # main.py

Ответы [ 3 ]

1 голос
/ 28 мая 2020

Вам нужно вырваться из внутреннего l oop, чтобы вы могли вернуться к тесту внешнего l oop.

game = True
while game:
    shop = False
    while not shop:
        choice = input("Press ENTER to dig. Press E(then ENTER) to end game. Press S(then enter) for shop.")
        if choice == "E" or choice == "e":
            game = False
            break
0 голосов
/ 28 мая 2020

Вам нужно понять, как работают циклы while, например:

a = 5
while a == 5:
    a = 6
    print('done')

Вывод:

 done

Условие, которое мы задали while l oop, сообщает ему, когда чтобы остановить цикл, но python должен сначала снова достичь условия для сравнения, что означает, что пока нет оператора break, python сначала завершит sh текущий l oop. Но в вашем коде, из-за другого while l oop, в котором l oop никогда не заканчивается, мы никогда не давали python возможности сравнить это состояние игры.

game = True
while game == True:
    shop = False
    while shop == False:
        choice = input("Press ENTER to dig. Press E(then ENTER) to end game. Press S(then enter) for shop.")
        if choice == "E" or choice == "e":
           game = False

Чтобы исправить это , просто добавьте оператор break после game = False:

        if choice == "E" or choice == "e":
           game = False
           break
0 голосов
/ 28 мая 2020

Вам нужно shop == True, чтобы сначала вырваться из внутреннего. Затем он может понять, что game == False

...