首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python:图案显示

Python:图案显示
EN

Stack Overflow用户
提问于 2015-03-11 09:47:56
回答 3查看 153关注 0票数 -1

我刚刚开始学习Python,我需要帮助来创建这个模式:

    ******
     *****
      ****
       ***
        **
         *

我现在有这样的代码:

      base = 6
      for row in range (base):
          for col in range (row+1):
              print('*', end='')
          print()

它变成了:

*
**
***
****
*****
******
EN

回答 3

Stack Overflow用户

发布于 2015-03-11 10:26:37

这里你需要的是跟踪你需要多少空间--你几乎已经有了相应的代码--以及你需要多少'*'。然后,对于每一行,您需要打印适当的行数和总宽度数。因为我猜测您希望总宽度保持不变,所以需要x ' ' of ' 'sn-x number of '*'s,其中n是您想要的行数/总宽度。

举个例子

n=6; print('\n'.join(' '*x+'*'*(n-x) for x in range(0,n)))

都会起作用的。

如果这是一个家庭作业的问题,我建议不要上交上面的解决方案。最好是用一种标准的方式写出来。

票数 0
EN

Stack Overflow用户

发布于 2018-06-18 04:48:05

由于这可能是一些家庭作业,也可能是@cge上面指定的一些东西,我只希望两年的差距就足够了,我写这个答案是为了讲述一些很多人在Python中不太了解的东西。

您正在尝试创建的模式是任何编程语言中最常见的形式之一,并且在Java或C++中很容易实现。但是,当我思考如何在Python中创建这样的模式时,同样的事情也出现在我的脑海中,因为在使用Python时,print()函数在每次使用时都会更改行。所以没有像Java中那样的特性,因为print和println是两个不同的东西。

现在有一件有趣的事情要知道。在Python3中,随着print作为一种方法的引入,它还附带了一些其他东西,默认情况下还附加了名为end="\n“的东西。这就是为什么当被调用时,print函数会在下一行结束。因此,我们需要做的就是不让默认设置起作用。

下面是代码的工作原理:

for i in range(6):
    for x in range(6):
        if i!=0:
            print(" ",end="")
            i-=1

        else:
            print("*",end="")

    print()

因此,我们可以看到,使用上面打印函数的附加功能,我们可以按照您的要求使用和创建这样的模式。

票数 0
EN

Stack Overflow用户

发布于 2015-03-11 10:25:01

我觉得你把事情搞得太复杂了

base = 6

for i in range(base, 0, -1):
    print "*"*i

然后你会得到:

******
*****
****
***
**
*

考虑一下您的范围是如何设置的。如果你想在打印“*”之前打印“*”,你需要让python知道在5之前打印6。通过倒数你的范围来实现。

我已经在这里做到了:

for i in range(base, 0, -1):

它从基数开始计算范围(设置为6),然后向下计数-1,一直到零。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28977232

复制
相关文章

相似问题

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