小编dat*_*tta的帖子

检查是否为素数大

我确定一个数字是否为素数的原始函数是:

bool is_prime(int x) {
    for (int y = 2; y < x; ++y) {
        if (x % y == 0) {
            return false;
        }
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

这很复杂,O(x)因为你可能不得不去x.

我已经了解了一些优化,需要检查我的big-o.这是改进的计划:

bool is_prime(int x)
{   
    if (x % 2  == 0 && x > 2) {
        return false;
    }
    for (int y = 3; y*y <= x; y += 2) {
        if (x % y == 0) {
            return false;
        }
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

事实上我现在正在 …

c++ big-o asymptotic-complexity

7
推荐指数
1
解决办法
568
查看次数

使用print()过多会导致失败吗?

TL; DR:

print()结果不会在Windows控制台更新.在IDLE中执行罚款.即使Windows控制台未更新,程序仍在执行.

背景

我有一个文件,test.py其中包含:

编辑:包括我用来查看控制台是否正在更新的条件.最终,一系列X值永远不会再在Console中打印,并且控制台永远不会向上滚动(正如通常在底部生成输出时那样).

count = 0
while True:
    print ("True")
    count += 1
    if count == 10:
            print ("XXXXXXXXX")
            count = 0
Run Code Online (Sandbox Code Playgroud)

当我在cmd.exe其中运行它显然打印了非常大量的True.

但是,运行大约25秒后,它会停止打印,尽管程序仍在运行,可以在任务管理器中看到.

我有一个带有一些进度指标的程序,最终保持在50%,即使它们超过50%只是因为print()没有在控制台输出中显示.

编辑:真正的用例问题.

上面的代码只是一个测试文件,用于查看Console中的打印是否在所有程序中停止,而不是我正在运行的程序.在实践中,我的程序打印到控制台,看起来像:

line [10] >> Progress 05%
Run Code Online (Sandbox Code Playgroud)

哪里line [10]不是真的,但我只是在这里输入,以显示print()在控制台窗口中发送到该行.随着我的程序继续增加:

line [10] >> Progress 06%
line [10] >> Progress 11%
.
.
.
line [10] >> Progress 50%
Run Code Online (Sandbox Code Playgroud)

每次都line [10]被覆盖.我使用ANSI转义字符并相应colorama …

python windows console

6
推荐指数
0
解决办法
347
查看次数

使用从另一个导入导入的模块

我正在清理一个被重构为较小的.py文件的项目.我注意到很多模块在各种文件中一次又一次地导入.某些语句位于导入另一个语句的文件中,该文件具有导入文件使用的相同import语句.例如:

main.py

import alt
print (os.getcwd())
Run Code Online (Sandbox Code Playgroud)

alt.py

import os
Run Code Online (Sandbox Code Playgroud)

print(os.getcwd())抛出一个NameError: name 'os' is not defined.不os应该成为sys.modules在alt.py中执行import语句的一部分吗?

是否可以使用由先导入的另一个模块导入的模块?

python import python-3.x

6
推荐指数
1
解决办法
1007
查看次数