【问题标题】:How can I exclude the quotation marks from my output?如何从输出中排除引号?
【发布时间】:2019-10-11 09:12:51
【问题描述】:

我需要编写一个函数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))

【问题讨论】:

  • 你能告诉我们输出的样子吗?你了解函数返回的数据类型吗?

标签: python-3.x function primes


【解决方案1】:

你的问题是当你应该返回一个字符串时你返回一个列表,你应该使用 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))

【讨论】:

    【解决方案2】:

    不要在 return 语句中使用逗号 (,),而是将其替换为加号 (+) 并使用 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))
    

    【讨论】:

      猜你喜欢
      • 2021-10-06
      • 1970-01-01
      • 2021-11-20
      • 2014-03-19
      • 1970-01-01
      • 2015-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多