>我在打印替代模式时遇到问题,输出应该如下所示:
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):
.
看起来您需要弄清楚如何在每行上的两个不同填充值之间切换。我建议:
- 打印前每行累积到一个字符串
- 您将了解如何使用序列(列表或元组)循环浏览值。您还可以使用
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 进行修改之前,我是如何添加 level
和 x
的。
更改:
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:]
做