我确定一个数字是否为素数的原始函数是:
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)
事实上我现在正在 …
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 …
我正在清理一个被重构为较小的.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语句的一部分吗?
是否可以使用由先导入的另一个模块导入的模块?