У меня проблема с повторяющейся функцией в Python

#python #python-3.x #function #loops #if-statement

#python #python-3.x #функция #циклы #if-оператор

Вопрос:

 Traceback (most recent call last):
  File "main.py", line 217, in <module>
    prompt()
  File "main.py", line 83, in prompt
    prompt()
TypeError: 'str' 
  

Это ошибка, которую я получаю после ввода этого кода:

 def prompt():
  print("What would you like to do?")
  prompt = input("")
  if prompt.upper() == "M":
    maps()
    prompt()
  elif prompt.upper() == "D":
    print("You go down.")
    spc()
    prompt()
  elif prompt.upper() == "U":
    print("You go up.")
    spc()
    prompt()
  elif prompt.upper() == "L":
    print("You go left.")
    spc()
    prompt()
  elif prompt.upper() == "R":
    print("You go right.")
    spc()
    prompt()
  else:
    print("You cannot do that.")
    spc()
    prompt()
  

и да, я знаю, что в настоящее время нет способа выйти из цикла, но я работаю над этим, я не знаю, является ли это проблемой, надеюсь, это не так. Если у кого-нибудь есть решение, я открыт для большинства кодов. Хотя у меня всего около года опыта, так что ничего особо сложного. Спасибо!

Комментарии:

1. почему ваше function имя и variable фамилия совпадают?

2. Попробуйте разные имена для переменной fn ad

Ответ №1:

Вы можете изменить либо имя функции prompt , либо имя переменной prompt . При этом ваша проблема будет решена.

 def prmpt():
  print("What would you like to do?")
  prompt = input("")
  if prompt.upper() == "M":
    maps()
    prmpt()
  elif prompt.upper() == "D":
    print("You go down.")
    spc()
    prmpt()
  elif prompt.upper() == "U":
    print("You go up.")
    spc()
    prmpt()
  elif prompt.upper() == "L":
    print("You go left.")
    spc()
    prmpt()
  elif prompt.upper() == "R":
    print("You go right.")
    spc()
    prmpt()
  else:
    print("You cannot do that.")
    spc()
    prmpt()