首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python for loop cs50 pset6的效率

python for loop cs50 pset6的效率
EN

Stack Overflow用户
提问于 2020-07-19 18:43:36
回答 3查看 348关注 0票数 0

我正在参加一门免费的edx在线课程,内容是cs50计算机科学入门。我的意思是,我是这方面的初学者。现在,当他们引入python编程语言时,我已经遇到了问题6。这是一个非常简单的问题。

问题是我觉得我的代码看起来很愚蠢。根据视频课程,python应该会提高我的编码时间效率,因为用c编写代码是他们在上一课中教给我们的语言。现在这并不是那么重要。只是我认为我会经常使用这个函数,所以我希望有人能帮我解释一下如何改进这个代码。

代码语言:javascript
复制
from cs50 import get_int

while True:
    height = get_int("height: ")
    if height > 0 and height < 9:
        break
n = height -1
m = 1
for i in range(height):
    for j in range(n):
        print(" ", end="")
    n -= 1
    for k in range(m):
        print("#", end="")
        if m > height:
            break
    m += 1

    print("")

我应该会收到这样的输出:

代码语言:javascript
复制
$ ./mario
Height: 4
   #
  ##
 ###
####

正如你所看到的,我的for循环看起来真的很愚蠢,至少在我看来是这样。我认为我用c编写的代码比这个更好,这就是问题所在。

EN

回答 3

Stack Overflow用户

发布于 2020-07-19 18:56:46

如果你对一种语言和对另一种语言一样熟悉,那么用python编写程序肯定会比用C更快。

原因是python有更多的抽象。

您可以在python中为此问题编写一个解决方案:

代码语言:javascript
复制
from cs50 import get_int

while True:
    height = get_int("height: ")
    if height > 0 and height < 9:
        break

print('\n'.join([' ' * (height - i) + '#' * i for i in range(1, height + 1)]))

这比你的代码好多了吗?可能不会。有时,试图将所有代码压缩到尽可能少的几行中并不是最好的主意。

如果您正在编写一个包含数万行代码的复杂系统,您肯定会注意到,与C相比,python使编写代码变得容易得多,因为您需要担心的事情更少。但是,当你写一个小练习的解决方案时,差别就不会那么明显了。

票数 1
EN

Stack Overflow用户

发布于 2020-07-19 18:56:46

你可以用下面的代码实现你想要的(不需要双循环):

代码语言:javascript
复制
height = 4
n = height-1
m = 1

print("Result")
for i in range(height):
    print((height-i-1)*" "+(i+1)*"#")

结果:

代码语言:javascript
复制
Result
   #
  ##
 ###
####

请记住,一般来说,C是一种速度更快的编程语言。但是,如果您习惯了Python的工作方式,就可以在Python中实现更高的性能。它也更容易编码。

票数 1
EN

Stack Overflow用户

发布于 2020-07-19 18:58:06

当然,可以缩短您提供的代码,并可能使其更清晰。例如。

代码语言:javascript
复制
from cs50 import get_int

while True:
    height = get_int("height: ")
    if height > 0 and height < 9:
        break

for i in range(1, height + 1):
    print(" " * (height - i), end="")
    print("#" * i)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62979218

复制
相关文章

相似问题

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