如何从输出中排除引号?

时间:2019-10-11 09:12:51

标签: python-3.x function primes

我需要编写一个函数is_prime,以确定n是否为质数,否则,我必须显示以最小可能因子开头的因子。

它可以工作,但是我需要在输出中排除引号,否则我的功课不会得到任何奖励。

def is_prime(n):
    pass

    if n > 1:
       for i in range(2,n):
           if (n % i) == 0:
               return(n,'is not a prime number', '(', i,'*',n//i,'=', n, ')')

               break
       else:
           return(n,'is prime')

    else:
       return(n,'is not a prime number')

print(is_prime(12))

2 个答案:

答案 0 :(得分:0)

您的问题是,当您应返回字符串时,您正在返回列表,应使用str.format()返回字符串:

https://www.digitalocean.com/community/tutorials/how-to-use-string-formatters-in-python-3

此外,您不需要“ break”或“ else”,因为在执行return语句时,函数结束。

因此,如果找到n的除数,则进入return语句,之后的代码将不会执行。

def is_prime(n):
    if n > 1:
        for i in range(2, n):
            if (n % i) == 0:
                return('{n} is not a prime number ({i} * {q} = {n})'.format(n=n, i=i, q=n//i))
        return('{n} is prime'.format(n=n))
    return('{n} is not a prime number'.format(n=n))

print(is_prime(15))

答案 1 :(得分:0)

不要在返回语句中使用逗号(,),而是将其替换为加号(+),然后使用str()函数将所有数字值转换为字符串。

def is_prime(n):
    pass

    if n > 1:
       for i in range(2,n):
           if (n % i) == 0:
               return(str(n) + ' is not a prime number ' + '(' + str(i) + '*' + 
str(n//i) + '=' + str(n) + ')')

               break
       else:
           return(n + 'is prime')

    else:
       return(n + 'is not a prime number')

print(is_prime(12))