我没有在我的代码中使用递归,所以我不明白为什么我收到关于递归的错误。 .................................................. .........................................
代码是:
from os import system
from time import sleep
import msvcrt
player_location = [0, 0]
player_dir = [0, 0]
width = int(raw_input('Width:'))
height = int(raw_input('Height:'))
def get_input():
if msvcrt.kbhit():
return msvcrt.getch()
else:
return ''
def update_screen():
global player_location
system('cls')
for i in range(0, (height-1)):
if i == player_location[0]:
print (' ' * (player_location[1] - 1)) + 'X' + (' '*(width*2 - player_location[1] - 1)) + '|'
else:
print (' ' * width * 2) + '|'
print ('-' * width * 2) + '+'
def get_input():
global player_dir
player_dir = [0, 0]
inp = get_input()
if inp == 'q':
exit()
elif inp == 'w':
player_dir[0] = -1
elif inp == 's':
player_dir[0] = 1
elif inp == 'd':
player_dir[1] = 1
elif inp == 'a':
player_dir[1] = -1
def actions():
global player_dir, player_location
player_location[0] += player_dir[0]
player_location[1] += player_dir[1]
if __name__ == '__main__':
while True:
update_screen()
sleep(10)
get_input()
actions()
错误是这样的:
Traceback (most recent call last):
然后这一行很多次:
File "C:\Python\txtpltfrmr.py", line 29, in get_input
inp = get_input()
然后这一行:
RuntimeError: maximum recursion depth exceeded
答案 0 :(得分:7)
def get_input():
if msvcrt.kbhit():
return msvcrt.getch()
else:
return ''
def get_input():
global player_dir
player_dir = [0, 0]
inp = get_input() # INFINITE RECURSION, CALLS ITSELF
有你的问题。您有两个名为get_input
的函数,它们具有匹配的签名。重命名其中一个,可能是第一个像get_character
。