Строки не выбраны правильно в случае сравнения - PullRequest
0 голосов
/ 26 октября 2019

У меня есть следующий код.

while True:

    # Prompt
    command = input("> ").upper()

    if command == "WEST" or "IN":
        if adventure.move(command) == True:
            print("True")
        else:
            print("You cannot go there")
    elif command == "QUIT":
        print("Thanks for playing!")
        exit()
    else:
        print("Invalid command")

Идея состоит в том, чтобы предложить пользователю команду. Если команда имеет направление «WEST» или «IN», ее следует переместить и дать описание. Это все работает. Идея состоит в том, что приключение состоит из нескольких комнат, по которым пользователь должен перемещаться по

. Для записи: adventure.move (команда) возвращает True, если перемещение было успешным, и False, если перемещение не могло быть выполнено. Потому что, например, не было никакого направления.

Проблема в том, что если я дам команду типа QUIT или FOO, я ожидаю другого результата. Однако этого не происходит.

>WEST
True (move successful)
>QUIT
You cannot go there
>FOO
You cannot go there

Кажется, что бы я ни печатал;оно всегда будет принимать первое утверждение if.

Есть какие-либо подсказки, что я делаю неправильно?

1 Ответ

0 голосов
/ 26 октября 2019

Вам необходимо изменить первый оператор if на этот

while True:

    # Prompt
    command = input("> ").upper()

    if command == "WEST" or command == "IN":
        if adventure.move(command) == True:
            print("True")
        else:
            print("You cannot go there")
    elif command == "QUIT":
        print("Thanks for playing!")
        exit()
    else:
        print("Invalid command")

if command == "WEST" or "IN": всегда будет иметь значение true, потому что он на самом деле спрашивает, равна ли команда западу или эквиваленту bool("IN"), который онавсегда будет возвращать true, если это не пустая строка. И в операторе or, если любой из логических тестов возвращает true, тогда код будет выполнен в блоке if.

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