我如何使用嵌套循环创建以下模式?
111111
11111
1111
111
11
1
到目前为止,我有这个,我似乎被卡住了。
def main():
stars = "******"
for x in range (1,7):
print(stars)
for y in range (1,1):
stars = stars.replace("*"," ")
main()
答案 0 :(得分:1)
你需要在内循环中只替换一颗星:
stars = "******"
for x in range(6):
stars = stars.replace("*","1")
print(stars)
for y in range(1): # need range(1) to loop exactly once
stars = stars.replace("1","",1)
输出:
111111
11111
1111
111
11
1
如果你真的想要明星:
stars = "******"
for x in range(6):
print(stars)
for y in range(1):
stars = stars.replace("*","",1)
输出:
******
*****
****
***
**
*
str.replace的最后一个arg是count,其中<em>只替换了第一次计数。所以每次我们只替换一个字符。
如果你必须使用星号变量并替换,那么上面的代码将起作用,如果你只需要嵌套循环并创建模式,你可以从5循环并在内部使用end=""
打印一次循环:
for x in range(5, -1, -1):
print("1" * x, end="")
for y in range(1):
print("1")
同样的输出:
111111
11111
1111
111
11
1
答案 1 :(得分:1)
def main(symbol, number):
for x in reversed(range(number)):
s = ""
for y in range(x+1):
s += symbol
print s
main("1", 6)
您可以为参数提供一个符号(示例 - &#39; 1&#39;,&#39; *&#39; )和编号(示例 - &#39; 5代表*****&#39; 开头)
答案 2 :(得分:0)
您正在使用替换方法替换字符串中的所有星号,这意味着您将在线打印一行开头。您可以使用substring方法获得更好的结果。
答案 3 :(得分:0)
使用嵌套循环检查 Padraic Cunningham 的答案。
没有嵌套循环:
代码:
counters = range(1, 7)
counters.reverse()
for i in counters:
print "1"*i
输出:
111111
11111
1111
111
11
1
答案 4 :(得分:0)
由于你要求一个嵌套循环,我想这只是一个训练练习,它的效率并不重要。
因此,让我提出一个适当的解决方案&#39;内环并且没有反转范围:
def triangle(x, c='1'):
for i in range(x):
line = ''
for _ in range(i, x):
line += c
print(line)
答案 5 :(得分:-1)
您可以使用一种简单的方法获得相同的输出,因为Python在Strings上支持*
运算符,它返回一个重复出现的字符串。
character = "1" #You can change it to "*"
for i in range(6, 0, -1):
print character*i
输出:
111111
11111
1111
111
11
1