python - 加速 Python While 循环

标签 python performance algorithm list loops

我有以下代码:

import math

print "Hey, lets solve Task 4 :)"

number1 = input ("How many digits do you want to look at? ")
number2 = input ("What would you like the digits to add up to? ")
final = []

if number1 == 1:
    cow = range(1,10)
elif number1 == 2:
    cow = range(10,100)
elif number1 == 3:
    cow = range(001,1000)
elif number1 == 4:
    cow = range(1000,10000)
elif number1 == 5:
    cow = range(10000,100000)
elif number1 == 6:
    cow = range(100000,1000000)
elif number1 == 7:
    cow = range(1000000,10000000)
elif number1 == 8:
    cow = range(10000000,100000000)
elif number1 == 9:
    cow = range(100000000,1000000000)
elif number1 == 10:
    cow = range(1000000000,10000000000)

number3 = cow[-1] + 1
number10 = number3
number8 = number3 - 1

if number1 == 1:
    test = range(1,number10)
elif number1 == 2:
    test = range(00,number10)
elif number1 == 3:
    test = range(000,number10)
elif number1 == 4:
    test = range(0000,number10)
elif number1 == 5:
    test = range(00000,number10)
elif number1 == 6:
    test = range(000000,number10)
elif number1 == 7:
    test = range(0000000,number10)
elif number1 == 8:
    test = range(00000000,number10)
elif number1 == 9:
    test = range(000000000,number10)
elif number1 == 10:
    test = range(0000000000,number10)

if number1 == 1:
    number7 = number8
elif number1 == 2:
    number7 = number8 + 1
elif number1 == 3:
    number7 = number8 + 1
elif number1 == 4:
    number7 = number8 + 1
elif number1 == 5:
    number7 = number8 + 1
elif number1 == 6:
    number7 = number8 + 1
elif number1 == 7:
    number7 = number8 + 1
elif number1 == 8:
    number7 = number8 + 1
elif number1 == 9:
    number7 = number8 + 1
elif number1 == 10:
    number7 = number8 + 1



n = 0
while n < number7:

    a = test[n]
    a = str(a)
    print a

    number4 = sum(int(x) for x in a)

    if number4 == number2:
        final.append(number4)

    n = n + 1



print len(final)

基本上,这段代码计算出多少位数字包含整数,这些整数加起来等于特定数字。当它运行时,它会询问您想要多少位数(例如 4)以及您希望它们加起来是多少。例如,您可以选择 4 和 18,它会计算 1000 - 9999 中有多少个整数加起来为 18(例如 4545)。

问题是,最后一个问题问的是有多少个 10 位数字加起来是 39。使用这段代码,我的计算机需要很长时间才能计算出来,因为它必须从 1 一直数到最大的 10 位数字。当我尝试它时,它让我的电脑崩溃了!

有没有办法加快循环速度?

谢谢!

最佳答案

你对计算机的要求太高了,老兄 :) 像这样计算数万亿个数字。

看起来 xrange 更适合您的情况。

cow = xrange(1000, 10000)

关于python - 加速 Python While 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19536472/

相关文章:

c++ - 通过乱序执行并行化我的自定义编译器

algorithm - 在 Laravel 中自定义验证函数

c++ - 如何用等距水平线填充闭合折线?

python - 类型错误 : __init__() takes at least 4 non-keyword arguments (3 given)

python - 使用 Python 的 matplotlib 在 x 轴上绘制时间

performance - Haskell 对于游戏等软实时应用程序的 GC 性能如何?

java - 什么更快 : passing an array to a class and doing a for each loop, 或在类上为每个循环做一个

.net - LiveReload(和其他类似应用程序)在技术上是如何工作的?

python - 如何使用 telethon 仅从聊天中获取未读消息?

java - 使用四个规则之一对列表进行排序的最佳实践