Python 模式循环



>我在打印替代模式时遇到问题,输出应该如下所示:

input height: 7
22
1122
221122
11221122
2211221122
112211221122
22112211221122

但结果却是这样的:

input height: 7
22
1111
222222
11111111
2222222222
111111111111
22222222222222

法典:

height = int (input ("input height: "))
for level in range (1, height+1):
    num = level
    for x in range (num):
        if( level%2==0): #Even row starts with "11" first
            print ("11",end = "")
        else:
            print ("22",end = "")
    print()
通过使用循环,

而对于循环,没有列表。我该怎么做?

它不像你想要的那样出现,因为你选择每行只使用一种类型的填充字符和if(level%2==0):.

看起来您需要弄清楚如何在每行上的两个不同填充值之间切换。我建议:

  1. 打印前每行累积到一个字符串
  2. 您将了解如何使用序列(列表或元组)循环浏览值。您还可以使用itertools中的工具。

您可以通过从左侧插入新字符来添加到每次迭代中

s = ""
for i in range(height):
    s = ('22', '11')[i % 2] + s
    print(s)

或者只是在每次迭代中构建整个字符串:

for i in range(height):
    print ''.join(('11', '22')[j % 2] for j in range(i + 1, 0, -1))

或者预先计算最后一行并从右侧切片:

s = '1122' * (height / 2 + 1)
for i in range(height):
    print s[(i+1) * -2:]

对于x循环中的所有内容,level永远不会改变。您需要根据x进行交替,同时根据level选择开始。

height = int (input ("input height: "))
for level in range (1, height+1):
    num = level
    for x in range (num):
        if( (level+x)%2==0): #Even row starts with "11" first
            print ("11",end = "")
        else:
            print ("22",end = "")
    print()

请注意,在针对 2 进行修改之前,我是如何添加 levelx 的。

更改:

if( level%2==0): #Even row starts with "11" first

if( (level+x) %2==0): #Even row starts with "11" first

蟒蛇 2.7:

for level in range(1,height+1):
     for x in range(level):                                                   
        if((level+x)%2==0):                                                  
            print "11",                                                      
        else:                                                                
            print "22",
height = int (input ("input height: "))
for level in range (1, height+1):
   # Starting at level gives the proper oddity, while 2* level give the proper loop length
    for x in range (level, 2 * level):
        if( x%2==0): #Even row starts with "11" first
            print ("11",end="")
        else:
            print ("22",end="")
    print()
tmp = "1122" * height
for tail in range(1, height+1):
    print tmp[-2*tail:]

最新更新