我正在参加一门免费的edx在线课程,内容是cs50计算机科学入门。我的意思是,我是这方面的初学者。现在,当他们引入python编程语言时,我已经遇到了问题6。这是一个非常简单的问题。
问题是我觉得我的代码看起来很愚蠢。根据视频课程,python应该会提高我的编码时间效率,因为用c编写代码是他们在上一课中教给我们的语言。现在这并不是那么重要。只是我认为我会经常使用这个函数,所以我希望有人能帮我解释一下如何改进这个代码。
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("")我应该会收到这样的输出:
$ ./mario
Height: 4
#
##
###
####正如你所看到的,我的for循环看起来真的很愚蠢,至少在我看来是这样。我认为我用c编写的代码比这个更好,这就是问题所在。
发布于 2020-07-19 18:56:46
如果你对一种语言和对另一种语言一样熟悉,那么用python编写程序肯定会比用C更快。
原因是python有更多的抽象。
您可以在python中为此问题编写一个解决方案:
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使编写代码变得容易得多,因为您需要担心的事情更少。但是,当你写一个小练习的解决方案时,差别就不会那么明显了。
发布于 2020-07-19 18:56:46
你可以用下面的代码实现你想要的(不需要双循环):
height = 4
n = height-1
m = 1
print("Result")
for i in range(height):
print((height-i-1)*" "+(i+1)*"#")结果:
Result
#
##
###
####请记住,一般来说,C是一种速度更快的编程语言。但是,如果您习惯了Python的工作方式,就可以在Python中实现更高的性能。它也更容易编码。
发布于 2020-07-19 18:58:06
当然,可以缩短您提供的代码,并可能使其更清晰。例如。
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)https://stackoverflow.com/questions/62979218
复制相似问题