当我输入超出范围的数字时,为什么会输入 returns none?

Why it returns none type when i entered number out of range?

当我输入 number program expect 时,一切 运行 都很顺利,但是如果我输入超出范围的数字然后输入 number program expect,它 returns 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")
        zadani_x()
xx=[]
yy=[x for x in range(20)]

这里的问题是对函数的递归调用,你没有return你从中得到的值

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 的所有元素时,如果你调用这个函数,你将陷入无限循环...