Я пытаюсь сделать бота для эмулятора, но прежде чем внедрить в него ИИ, я хотел, чтобы он выполнил некоторые команды, которые будут даны в окне консоли. Я сделал оператор 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.
Это должно работать:
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 и поместил их в код. Можете ли вы сказать мне, если я сделал что-то не так?
Почему вы определяете два userValues? Вам просто нужно определить 1 вход userValue, а затем позволить сценарию сделать все остальное. Кроме того, userValue1 = input("Triple Jump")
не означает, что вы назначаете ему Тройной прыжок, это означает, что на консоли при получении ввода от пользователя будет напечатан Тройной прыжок и ожидается, что пользователь введет свой ввод. Строка внутри input()
— это инструкция, как я попросил пользователя Enter your desired word:
Она напечатает это в CL, и вы введете желаемое слово напротив этого.
Окей, большое спасибо. Наконец-то я заработал.
Я понимаю ваши чувства, стоящие за этим, но это не решит вашу проблему, скорее, так это не сработает. потому что вы не можете ожидать, что пользователь предоставит два входа, если это абсолютно необходимо для вашего кода. Если вы хотите использовать оба входа для одной и той же цели, то можете также определить один вход и перебирать циклы if elif else. Попробуйте пройти код, на который я ответил выше, я уверен, что он вам поможет.
Я прошел через это, подумал о ваших комментариях и немного изменил свой код, и теперь он работает нормально. Большое спасибо.
Добро пожаловать, не забудьте проголосовать и принять ответ :)
Input() возвращается немедленно. поэтому его можно использовать только в том месте, где вы его объявили. Поскольку вы не сохраняете ввод, а вместо этого снова используете input() позже, это будет НОВЫЙ ввод (отсюда несколько дополнительных возвратов, которые вам нужно нажать)