为什么我得到一个无限循环 (python)?

Why did I get an infinite loop (python)?

我是编程新手。 我正在尝试编写一个包含 3 个列表的程序。 代码中没有 while 循环(见下文)。

我尝试将用户的答案保存在名为 'user_answers' 的列表中。 for 循环应该只循环 5 次(这是列表的长度),但似乎我得到了一个无限循环。 关于如何解决此问题的任何见解?

def user_answer():
     user_answers=[0, 0, 0, 0, 0]
     print('\n')
     for i in range (len(user_answers)):
         print('\nPlease enter the answer to question', i+1, ':', sep=' ', end='')
         user_answers[i]=input()

     return user_answer()

开始前无需创建列表:

def user_answer():
     user_answers=[]
     print('\n')
     for i in range(5):
         print('\nPlease enter the answer to question', i+1, ':', sep=' ', end='')
         user_answers.append(input())

     return user_answers

因为你 return 函数名 user_answer() 使它 运行 无限递归。

因此,您应该 return user_answers 而不是 return user_answer()

如果你想让数组的大小等于 5,你可以循环它 5 次而不是每次都改变数组。您也可以将用户输入的指令放在 input() 中。这将使您的代码更简单。你可以试试这个例子:

def user_answer():
     user_answers=[]
     for i in range(5):
         user_answers.append(input("Please enter the answer to question "+str(i+1)+": "))
         print()

     return user_answers
     
print(user_answer())

P.S。如果你想要 3 个列表,每个列表包含 5 个元素,你可以调用函数 user_answer() 3 次或将它放在一个循环中。

你的代码return通过调用函数,导致死循环。我猜你的意思是 return 变量 user_answers 不要 return 函数 user_answers()

 return user_answers

如果您混淆同名的函数和变量,可能会发生这种情况。您可能需要查看 function-and-variable-with-the-same-name

发生这种情况是因为您正在 return 调用函数本身,这意味着您正在创建一个无限递归函数。

def user_answer():
    user_answers=[0, 0, 0, 0, 0]
    print('\n')
    for i in range (len(user_answers)):
        print('\nPlease enter the answer to question', i+1, ':', sep=' ', end='')
        user_answers[i]=input()

    return user_answers

print(user_answer())

尝试将 return user_answer() 行更改为 return user_answers
希望您正在尝试 return 用户回答数组以进行进一步的工作。