【问题标题】:Where is my below python code failing?我下面的python代码在哪里失败?
【发布时间】:2016-10-12 04:09:44
【问题描述】:

如果函数调用是这样的:backwardsPrime(9900, 10000),那么输出应该是[9923, 9931, 9941, 9967]。向后读取素数是当以 10 为底(从右到左)向后读取时是不同的素数的素数。它是 Codewars 中的 kata 之一,在提交以下解决方案时,我收到以下错误:

Traceback:
in File "./frameworks/python/cw-2.py", line 28, in assert_equals
expect(actual == expected, message, allow_raise)
File "./frameworks/python/cw-2.py", line 18, in expect
raise AssertException(message)
cw-2.AssertException: [1095047, 1095209, 1095319] should equal [1095047, 1095209, 1095319, 1095403]

代码:

import math
def isPrime(num):
    #flag = True
        rt = math.floor(math.sqrt(num))
        for i in range(2,int(rt)+1):
            if num % i == 0:
                return False

        else:
            return True    


    def Reverse_Integer(Number):
        Reverse = 0
        while(Number > 0):
            Reminder = Number %10
            Reverse = (Reverse *10) + Reminder
            Number = Number //10
        return Reverse

    def backwardsPrime(start, stop):
        s = list()

        for i in range(start,stop):
            if i>9 and i != Reverse_Integer(i):
                if isPrime(i) and isPrime(Reverse_Integer(i)):
                    s.append(i)
            else:
                continue
         return s

Codewars 有自己的测试功能。下面的示例测试用例:

a = [9923, 9931, 9941, 9967]

test.assert_equals(backwardsPrime(9900, 10000), a)          

【问题讨论】:

    标签: python primes


    【解决方案1】:

    看起来您的代码在手动运行时通过了测试。也许他们要扫描的范围在测试中设置错误导致它错过最后一个?

     backwardsPrime(1095000, 1095405)
     [1095047, 1095209, 1095319, 1095403]
    

    例如第二个参数设置为1095400什么的。

    【讨论】:

      猜你喜欢
      • 2012-04-25
      • 2010-10-08
      • 1970-01-01
      • 2011-04-20
      • 2023-03-10
      • 1970-01-01
      • 2011-02-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多