函数定义循环不会结束

python程序,如果我用函数定义的话,就一直循环不会结束,但是如果不用函数的话,就会自动结束,请问是什么原因呢?还有如果是定义函数,怎样结束呢?

 

因为在函数中对restart变量赋值是在函数中创建一个同名的局部变量,并不是改变全局变量restart的值。

要改变全局变量restart的值,需要在函数开头用 global restart 来声明函数内的restart为全局变量。

def game():

    global restart

作用域不对,在函数里面的变量,默认是局部变量,你这样赋值外部是不生效的。

可以看这个例子,作用域看完这个文档就明白了https://www.runoob.com/python3/python3-namespace-scope.html

因为你的代码中while循环条件一直是true,所以会一直调用函数。有多种方式可以既使用函数又能终止循环。其中一种导入sys模块在except语句块中最后一行加上sys.exit().还有可以将while循环放入函数体中,并设置退出循环条件(比如设置如输入为‘q’或回答累计达到指定次数或答案正确的话停止循环),在其后 break退出循环。

谢谢,golbal 变量解决了