Python 为什么我的函数被无限调用?

Python 为什么我的函数被无限调用?,python,function,Python,Function,它应该运行代码,如果决策三的inout不是Yes或No,那么用户应该重新输入输入。每当我运行代码时,它都会无限地询问decision3。I的值永远不会改变,因此main3会被永久调用 i = 1 while i != 3: if i == 1: def main3(): decision3 = str(input("Do you accept? (Yes or No)")) if decision3 == 'No': print("narr

它应该运行代码,如果决策三的inout不是Yes或No,那么用户应该重新输入输入。每当我运行代码时,它都会无限地询问decision3。

I的值永远不会改变,因此main3会被永久调用

i = 1
while i != 3:
  if i == 1:
    def main3():
      decision3 = str(input("Do you accept? (Yes or No)"))
      if decision3 == 'No':
          print("narration")
      elif decision3 == 'Yes':
          print("narration")
          i = 2
      else:
          print("Sorry, that is an invalid input. Please re-enter.")
          main3()
    main3()
  else:
      i = 3
      print("narration")
i仅在main3的范围内更改,而不是在全球范围内更改


请注意,不要将输入的返回转换为字符串。它已经是一个了。

i=2被设置在不同的范围内,它不会改变你在main3之外检查的值。你为什么一遍又一遍地重新定义你的函数。。。。再次?您可以将全局i添加到main3@itay这是一个非常糟糕的解决方案来修复这个复杂的代码
if i == 1:
    def main3():
      decision3 = str(input("Do you accept? (Yes or No)"))
      if decision3 == 'No':
          print("narration")
      elif decision3 == 'Yes':
          print("narration")
          i = 2  # <-- This does nothing to i outside of main3()!
      else:
          print("Sorry, that is an invalid input. Please re-enter.")
          main3()
    main3()  # <-- This is the problem!