【发布时间】:2014-06-09 08:14:46
【问题描述】:
打印菱形图案的python代码是:
def main():
n= input('The size of the diamond :: ')
a=n
for i in range(n):
print ' '*a,'*'*(2*i-1)
a=a-1
a=0
p=n
for i in range(n):
print ' '*a,'*'*(2*p-1)
a=a+1
p=p-1
main()
对于类似的输出,C 中的代码是 ::
#include<stdio.h>
int main()
{
int i,j;
int n;
printf("---PATTERN---\n");
printf("enter the number of rows :: \n");
scanf("%d",&n);
for(i=0;i<=n;i++)
{
for(j=n;j>i;j--)
{
printf(" ");
}
for(j=0;j<2*i+1;j++)
{
printf("*");
}
printf("\n");
}
i=0;
for(i=0;i<=n;i++)
{
for(j=0;j<i;j++)
{
printf(" ");
}
for(j=2*n-1;j>=2*i-1;j--)
{
printf("*");
}
printf("\n");
}
return 0;
}
我的问题是:我们可以说在数学上,python 中代码的时间复杂度比 C 中的要好吗? 尽管 C 程序的运行时间比 Python 少,但是 Python 中的相同程序不涉及循环嵌套,就像 C 的情况一样,我们可以说 Python 在结构上是一种更有效的语言吗? - 如果怀疑听起来很愚蠢,我深表歉意。
【问题讨论】:
-
您能否让您的python代码在语法上有效?但是不,没有什么魔法可以让 python 更“高效”。
-
print ' '*a,'*'*(2*i-1)这是你的嵌套循环。请记住,即使您将复杂性隐藏在简单的语句后面,它也不会消失。在 Python 中,您可以使用单个语句解析 XML 文件/应用正则表达式/向月球发射火箭,但这不会使其成为 O(1)。 -
在KerrekScript 2.0中,你可以说
print '*'<>n,所以复杂度是O(1)。 (事实证明,内置的菱形运算符真的将语言从默默无闻中推向了主流。) -
@KerrekSB:实际上,我看到了 HQ9+ 的潜在扩展。
-
@juanchopanza 对不起先生 jst 从 IDLE 复制了代码,所以缩进丢失了
标签: python c time-complexity