如果while条件为True,我似乎无法使此函数重复

时间:2016-02-18 03:53:22

标签: 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():
            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 

我在第一个if循环结束时尝试使用和不使用continue语句。如果输入负数或字符串,它似乎永远不会重复。它移动到我的代码的下一部分(未显示或必要)。有谁知道为什么它不重复,因为while循环仍然是真的?

4 个答案:

答案 0 :(得分:1)

如果n不是退出该功能的数字,您似乎就会返回。

答案 1 :(得分:1)

return语句结束了该功能。 所以当你执行return None时,它不能在循环中重复,因为它已经不在了。 您可能希望使用continue代替return None

答案 2 :(得分:0)

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

答案 3 :(得分:0)

试试这个

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