Python 我能';如果while条件为True,则似乎无法使此函数自身重复

Python 我能';如果while条件为True,则似乎无法使此函数自身重复,python,python-3.x,Python,Python 3.x,我的代码应该接受用户输入的“n”值,该值必须是正整数,如果它不是正整数,或者如果它是字符串而不是整数,则应该重复输入过程。这是我的密码: def input_n(): """obtains n value from user""" while True: print("Input number of terms n (must be > 0):") n = input("> ") if not n.isdigit():

我的代码应该接受用户输入的“n”值,该值必须是正整数,如果它不是正整数,或者如果它是字符串而不是整数,则应该重复输入过程。这是我的密码:

def input_n():
    """obtains n value from user"""
    while True:
        print("Input number of terms n (must be > 0):")
        n = input("> ")
        if not n.isdigit():
            print("Not a usuable n value")
            return None
            continue
        else:
            n = int(n)
            if n < 1:
                print("Not a usuable n value")
                return None
            else:
                return n 
def input_n():
“”“从用户处获取n个值”“”
尽管如此:
打印(“输入术语数量n(必须大于0):”)
n=输入(“>”)
如果不是,则n.isdigit():
打印(“非可使用的n值”)
一无所获
持续
其他:
n=int(n)
如果n<1:
打印(“非可使用的n值”)
一无所获
其他:
返回n

我尝试过在第一个if循环结束时使用continue语句和不使用continue语句。如果输入负数或字符串,它似乎永远不会重复。它将转到代码的下一部分(未显示或不需要)。既然while循环保持为真,有人知道它为什么不重复吗?

如果n不是数字,则返回该函数。

如果n不是数字,则返回该函数。

如果n不是数字,则返回该函数。语句结束该函数。 因此,当您执行
return None
时,它不能在循环中重复自己,因为它已经退出了循环。
您可能希望使用
continue
而不是
returnnone

语句来结束函数。
def input_n():
    """obtains n value from user"""
    print("Input number of terms n (must be > 0):")

    while True:
        n = input("> ")

        if not n.isdigit():
            print("Not a usable value - must be a number!")
            continue

        n = int(n)
        if n < 1:
            print("Not a usable value - too low!")
            continue

        return n
因此,当您执行
return None
时,它不能在循环中重复自己,因为它已经退出了循环。 您可能希望使用
continue
而不是
return None

def input\u n()
def input_n():
    """obtains n value from user"""
    print("Input number of terms n (must be > 0):")

    while True:
        n = input("> ")

        if not n.isdigit():
            print("Not a usable value - must be a number!")
            continue

        n = int(n)
        if n < 1:
            print("Not a usable value - too low!")
            continue

        return n
“”“从用户处获取n个值”“” 打印(“输入术语数量n(必须大于0):”) 尽管如此: n=输入(“>”) 如果不是,则n.isdigit(): 打印(“不是可用值-必须是数字!”) 持续 n=int(n) 如果n<1: 打印(“不是可用值-太低!”) 持续 返回n
def input\u n()
“”“从用户处获取n个值”“”
打印(“输入术语数量n(必须大于0):”)
尽管如此:
n=输入(“>”)
如果不是,则n.isdigit():
打印(“不是可用值-必须是数字!”)
持续
n=int(n)
如果n<1:
打印(“不是可用值-太低!”)
持续
返回n
试试这个

def input_n():
    print("Input number of terms n (must be > 0):")
    while True:
        n = raw_input("> ")
        if not n.isdigit() or n < 1:
            print("Not a usuable n value")
            continue
        else:
            return n
def input_n():
打印(“输入术语数量n(必须大于0):”)
尽管如此:
n=原始输入(“>”)
如果不是n.isdigit()或n<1:
打印(“非可使用的n值”)
持续
其他:
返回n
试试这个

def input_n():
    print("Input number of terms n (must be > 0):")
    while True:
        n = raw_input("> ")
        if not n.isdigit() or n < 1:
            print("Not a usuable n value")
            continue
        else:
            return n
def input_n():
打印(“输入术语数量n(必须大于0):”)
尽管如此:
n=原始输入(“>”)
如果不是n.isdigit()或n<1:
打印(“非可使用的n值”)
持续
其他:
返回n

当您执行
返回None
时,它已经返回到调用函数。您需要将其删除,如果代码中的
引导您,则始终会有
返回。另外,
contiue
不能执行,因为前面有一个
返回值
。@kart谢谢!它成功了:)我现在明白了,因为条件为真,我不需要返回None,因为它将启动while循环!当您执行
返回None
时,它已经返回到调用函数。您需要将其删除,如果代码中的
引导您,则始终会有
返回。另外,
contiue
不能执行,因为前面有一个
返回值
。@kart谢谢!它成功了:)我现在明白了,因为条件为真,我不需要返回None,因为它将启动while循环!