使用简单循环创建模式?

时间:2016-10-04 16:22:53

标签: python python-2.7 loops

我试图在python中创建这个模式:

int orientation = getResources().getConfiguration().orientation;
if(orientation == Configuration.ORIENTATION_LANDSCAPE) {
    mAutoFitTextureView.setAspectRatio(width, height);
} else {
    mAutoFitTextureView.setAspectRatio(width, width);
}

到目前为止,这是我的计划,我已经提出:

    *
   * *
  * * *
   * *
    * 

我做错了什么?

3 个答案:

答案 0 :(得分:2)

好的,首先你可以创建一个数字列表,代表每行中的星数。

number_of_stars = 5

i_list = list(range(number_of_stars))
# extend the list by its inverse i_list[::-1]
# but exclude the first item
i_list.extend(i_list[::-1][1:])

print(i_list) # prints: [0, 1, 2, 3, 4, 3, 2, 1, 0]

现在您可以通过列表并打印*

的倍数
for i in i_list:
    print('* ' * i)

但这没有正确对齐。通过在左侧添加多个空格,可以归档解决方案:

for i in i_list:
    print(' ' * (number_of_stars - i) + '* ' * i)

请注意,在python中,可以使用乘法符号重复一个字符串:

print('a'*5) # prints: aaaaa

答案 1 :(得分:2)

感谢您的帮助,我为该问题编写了一个功能代码。它应该使用while循环。 这就是我所做的:

width = int(input("Width: "))

i = 1
while i < width*2:
   if i < width:
       print " " * (width-i) + "* " * i
   else:
       print " " * (i-width) + "* " * (2*width-i)

   i = i + 1

答案 2 :(得分:1)

注意你有

  • 1个星级的3个空格
  • 2个星星的空间
  • 1个3星空间。

对于钻石的直立三角形部分(包括大部分)。那你有

  • 2个星星的空间
  • 1个星级的3个空格

在不抛弃答案的情况下,尝试分析我刚刚指出的某种模式。它可以通过2个循环实现(for或while,具体取决于您的喜好)。