首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基本Python算法应力测试

基本Python算法应力测试
EN

Stack Overflow用户
提问于 2018-01-04 09:32:15
回答 1查看 7.5K关注 0票数 0

嗨,我正在学习使用python算法的基础知识,这是我的第一个压力测试脚本(我对python还不熟悉)。

当我运行测试时,变量快速和结果都打印为0,我包含的随机数生成器似乎没有为mpp和mppf函数创建数字,或者它们没有将结果赋值给相关变量,因此变量保持为0,循环继续打印'0 0 OK‘。

我没有收到任何错误,除了我的脚本没有做我想做的事情!

代码语言:javascript
复制
  import random
    result = 0
    fast = 0

    while result == fast:
        if __name__ == '__main__':
            n = (random.randint(2, 11))
            a = list(random.randint(0, 99999) for r in range(n))
            assert (len(a) == n)

            def max_pairwise_product(n, a):
                global result
                for i in range(0, n):
                    for j in range(i + 1, n):
                        if a[i] * a[j] > result:
                            result = a[i] * a[j]
                return result


            def max_pairwise_product_fast(n, a):
                global fast
                max_index1 = -1
                for i in range(n):
                    if max_index1 == -1 or a[i] > a[max_index1]:
                        max_index1 = i

                max_index2 = -1
                for i in range(n):
                    if i != max_index1 and (max_index2 == -1 or a[i] > a[max_index2]):
                        max_index2 = i
                fast = a[max_index1] * a[max_index2]
                return fast

            print(fast, result, "OK")
    else:
        print("Wrong Answer")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-04 11:34:23

我认为这似乎是可行的:

代码语言:javascript
复制
import random
def max_pairwise_product_fast(n, a):
      global fast
      max_index1 = -1
      for i in range(n):
          if max_index1 == -1 or a[i] > a[max_index1]:
              max_index1 = i

      max_index2 = -1
      for i in range(n):
          if i != max_index1 and (max_index2 == -1 or a[i] > a[max_index2]):
              max_index2 = i
      fast = a[max_index1] * a[max_index2]
      return fast

def max_pairwise_product(n, a):
            global result
            for i in range(0, n):
                for j in range(i + 1, n):
                    if a[i] * a[j] > result:
                        result = a[i] * a[j]
            return result

result = 0
fast = 0

while result == fast:
    if __name__ == '__main__':
        n = (random.randint(2, 11))
        result=0;fast=0
        a = list(random.randint(0, 99999) for r in range(n))
        assert (len(a) == n)
        result = max_pairwise_product(n, a)

        fast=max_pairwise_product_fast(n, a)
        print(fast, result, "OK")
    else:
        print("Wrong Answer")

我不知道您的代码应该做什么,但现在它似乎正在运行。不应将已定义的函数保留在循环中。

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48092288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档