Python:可选参数default取决于传递的参数值

时间:2016-02-09 15:07:33

标签: python recursion

我编写了这个简单的函数,使用递归来测试给定数字n是否为素数:

def is_prime2(n, div):
    """Recursive primality test"""
    while div >= 2:
        if n % div == 0:
            print 'No, {number} is not prime.'.format(number = n, div = div)
            return False
        else:
            return is_prime2(n, div-1)
    else:
        print 'Yes, {number} is prime indeed.'.format(number = n)
        return 'True'

is_prime2(4,3)
is_prime2(5,4)
is_prime2(6,5)

它有效,但我包含的div参数困扰着我。它只适用于递归步骤,但我不能为我的生活找出如何删除它而不必更改整个函数。我更喜欢这个函数只有一个参数:正在测试的数字。

我想有一种简单的方法:你能指出我正确的方向吗?

谢谢。

1 个答案:

答案 0 :(得分:2)

以下是如何使用默认参数来实现目标:

def is_prime2(n, div = None):
    """Recursive primality test"""
    if div is None:
        div = n - 1
    while div >= 2:
        if n % div == 0:
            print 'No, {number} is not prime.'.format(number = n, div = div)
            return False
        else:
            return is_prime2(n, div-1)
    else:
        print 'Yes, {number} is prime indeed.'.format(number = n)
        return 'True'

is_prime2(4)
is_prime2(5)
is_prime2(6)