Если elif с функцией input()

Я пытаюсь сделать бота для эмулятора, но прежде чем внедрить в него ИИ, я хотел, чтобы он выполнил некоторые команды, которые будут даны в окне консоли. Я сделал оператор if elif и внутри него определил функции для взаимодействия с эмулятором.

if input() == 'Triple Jump':
    def triple_jump():
        print("Executing command", end = "")
        for i in range(0, 5):
            print(".", end = "")
            time.sleep(1)
        time.sleep(5)
        print(" ")
        print("Done")
        presskey(W_KEY)
        time.sleep(0.1)
        presskey(E_KEY)
        time.sleep(0.2)
        releasekey(E_KEY)
        time.sleep(0.6)
        presskey(E_KEY)
        time.sleep(0.1)
        releasekey(E_KEY)
        time.sleep(0.6)
        presskey(E_KEY)
        time.sleep(0.1)
        releasekey(E_KEY)
        time.sleep(0.1)
        releasekey(W_KEY)
        time.sleep(0.1)
    if __name__ == "__main__":
        triple_jump()

elif input() == 'Walk':
    def walk():
        print("Executing command", end = "")
        for i in range(0, 5):
            print(".", end = "")
            time.sleep(1)
        time.sleep(5)
        print("")
        print("Done")
        presskey(W_KEY)
        time.sleep(2)
        releasekey(W_KEY)
        time.sleep(0.2)

    if __name__ == "__main__":
        walk()

else:
    print("Could not execute command")

Проблема в том, что если я ввожу «Прогулка», он ничего не сделает, а если я нажму еще один или два раза, он перейдет к оператору else.

Input() возвращается немедленно. поэтому его можно использовать только в том месте, где вы его объявили. Поскольку вы не сохраняете ввод, а вместо этого снова используете input() позже, это будет НОВЫЙ ввод (отсюда несколько дополнительных возвратов, которые вам нужно нажать)

Kraay89 24.12.2020 14:01
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
153
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это должно работать:

userValue = input("Enter your desired word: ")

if userValue == 'Triple Jump':
    def triple_jump():
        print("Executing command", end = "")
        for i in range(0, 5):
            print(".", end = "")
            time.sleep(1)
        time.sleep(5)
        print(" ")
        print("Done")
        presskey(W_KEY)
        time.sleep(0.1)
        presskey(E_KEY)
        time.sleep(0.2)
        releasekey(E_KEY)
        time.sleep(0.6)
        presskey(E_KEY)
        time.sleep(0.1)
        releasekey(E_KEY)
        time.sleep(0.6)
        presskey(E_KEY)
        time.sleep(0.1)
        releasekey(E_KEY)
        time.sleep(0.1)
        releasekey(W_KEY)
        time.sleep(0.1)
    if __name__ == "__main__":
        triple_jump()

elif userValue == 'Walk':
    def walk():
        print("Executing command", end = "")
        for i in range(0, 5):
            print(".", end = "")
            time.sleep(1)
        time.sleep(5)
        print("")
        print("Done")
        presskey(W_KEY)
        time.sleep(2)
        releasekey(W_KEY)
        time.sleep(0.2)

    if __name__ == "__main__":
        walk()

else:
    print("Could not execute command")

У меня нет некоторых библиотек, которые вы используете, но я могу получить оператор elif

Спасибо за помощь. К сожалению, когда я это сделаю, он просто напечатает слово, которое я присвоил «userValue», в качестве теста я создал новый py-файл, чтобы увидеть, влияет ли одна из библиотек на другие, но это не сработало. Я назначил input("Triple Jump") для userValue1 и input("Walk") для userValue2 и поместил их в код. Можете ли вы сказать мне, если я сделал что-то не так?

Keanu 24.12.2020 14:11

Почему вы определяете два userValues? Вам просто нужно определить 1 вход userValue, а затем позволить сценарию сделать все остальное. Кроме того, userValue1 = input("Triple Jump") не означает, что вы назначаете ему Тройной прыжок, это означает, что на консоли при получении ввода от пользователя будет напечатан Тройной прыжок и ожидается, что пользователь введет свой ввод. Строка внутри input() — это инструкция, как я попросил пользователя Enter your desired word: Она напечатает это в CL, и вы введете желаемое слово напротив этого.

Prateek Jain 24.12.2020 14:14

Окей, большое спасибо. Наконец-то я заработал.

Keanu 24.12.2020 14:20

Я понимаю ваши чувства, стоящие за этим, но это не решит вашу проблему, скорее, так это не сработает. потому что вы не можете ожидать, что пользователь предоставит два входа, если это абсолютно необходимо для вашего кода. Если вы хотите использовать оба входа для одной и той же цели, то можете также определить один вход и перебирать циклы if elif else. Попробуйте пройти код, на который я ответил выше, я уверен, что он вам поможет.

Prateek Jain 24.12.2020 14:22

Я прошел через это, подумал о ваших комментариях и немного изменил свой код, и теперь он работает нормально. Большое спасибо.

Keanu 24.12.2020 14:25

Добро пожаловать, не забудьте проголосовать и принять ответ :)

Prateek Jain 24.12.2020 14:26

Другие вопросы по теме

Ошибка Tensorflow Keras: неизвестный формат файла изображения. Требуется один из форматов JPEG, PNG, GIF, BMP
Переменное содержимое не отображается, когда я использую его в HTML (из Python, Flask)
Как преобразовать строку, описывающую время, в секунды?
Добавление пары ключ/значение в элемент массива в pymongo
Как сопоставить и извлечь номер и заголовок раздела в python?
Показать первые n строк для каждого столбца в фрейме данных Pandas
Выберите случайную строку в текстовом файле с помощью Python
Как установить заголовки столбцов при преобразовании dict в pandas DataFrame (где имена столбцов не соответствуют ключам dict)?
Python, выход из цикла While с пользовательским вводом с использованием многопоточности (cntrl+c не работает)
Столбец кадра данных pandas для передачи в качестве аргумента функции уровня строки для применения каждого значения столбца к соответствующей строке