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 变量解决了