Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 当我输入超出范围的数字时,为什么它不返回任何类型?_Python 3.x_Nonetype - Fatal编程技术网

Python 3.x 当我输入超出范围的数字时,为什么它不返回任何类型?

Python 3.x 当我输入超出范围的数字时,为什么它不返回任何类型?,python-3.x,nonetype,Python 3.x,Nonetype,当我输入number-program-expect时,一切都会顺利运行,但如果我输入number-out-of-range,然后输入number-program-expect,它将返回None。有人能给我解释一下吗? 谢谢 这里的问题是对函数的递归调用,您不会返回从中获得的值 def zadani_x(): x=int(input("Turn for \"x\"(0-19): ")) if x not in xx and x in yy: xx.append(x)

当我输入number-program-expect时,一切都会顺利运行,但如果我输入number-out-of-range,然后输入number-program-expect,它将返回None。有人能给我解释一下吗? 谢谢


这里的问题是对函数的递归调用,您不会返回从中获得的值

def zadani_x():
    x=int(input("Turn for \"x\"(0-19): "))
    if x not in xx and x in yy:
        xx.append(x)
        return x
    else:
        print ("Try again")
        return zadani_x()   #here was the problem
在这种特殊情况下,如果您想反复执行相同的代码,最好在while循环中编写此代码,因为调用函数比调用循环花费更多,使用循环更明确您的意图:

def zadani_x():
    while True:
        x=int(input("Turn for \"x\"(0-19): "))
        if x not in xx and x in yy:
            xx.append(x)
            return x
        else:
            print ("Try again")

我不知道你对这个函数的意图是什么,但是在任何版本中,当xx拥有yy的所有元素时,如果你调用这个函数,你将陷入一个无限循环…

谢谢你的解释,所以每次使用递归都不是个好主意。循环只是为了一个只有5圈的简单游戏。
def zadani_x():
    while True:
        x=int(input("Turn for \"x\"(0-19): "))
        if x not in xx and x in yy:
            xx.append(x)
            return x
        else:
            print ("Try again")