文章目录
一.题目
截取字符串"abcd"里的四个字母,输出为如下图形
二.程序分析
当外层循环i=0时,外内层循环分析
外层循环: L的值为5(range(5)),所以i从0开始取0~5(不包括5)即i=0,i=1,i=2,以此类推,取到4,总共五次
当i=0,时(外层第一次循环)
内层第一个循环:i=0,(L-i=5)即range(0,5)等价于range(5),所以j从0开始取0~5(不包括5)即j=0,j=1,j=2,以此类推。取到4,总共五次
当j=0时(第一次循环),输出空格不换行(print语句输出时都会换行,end的作用就是输出时不换行)
当j=1时(第二次循环),输出空格不换行
以此类推,直到j取到4,总共输出五个空格
内层第二个循环:i=0,(L-i=5)即range(5,5)循环0次
执行print("")语句,输出一个换行
综上所述:当外层循环i=0时,内层第一个循环会输出五个空格,内层第二个循环无输出,最后print("")输出换行。所以程序的输出会看到第一行是空行
当外层循环i=1时,外内层循环分析
外层循环:当i=1时,(外层第二次循环)
内层第一个循环:i=1(L-i=4)即range(0,4)所以j从0开始取0~4(不包括4)即j=0,j=1,j=2,以此类推。取到3,总共4次
当j=0时(第一次循环),输出空格不换行
当j=1时(第二次循环),输出空格不换行
以此类推,直到j取到3,总共输出4个空格
内层第二个循环:i=1(L-i=4)即range(4,5),k从4开始取4~5(不包括5),所以k只取一次即k=4循环一次
当k=4时,输出print(t[i-1],end=" “)即print(t[0],end=” ")等价于输出字符串中的一个字符’a’后输出一个字符串
执行print("")语句,输出一个换行
当外层循环i=2时,外内层循环自行分析分析
三.代码
t = "abcd" # 定义字符串t
l = len(t) + 1 # 字符串长度+1=5
for i in range(l): # 循环4次
for j in range(0, l - i): # 循环0至l-1次
print(end=" ") # 输出空格
for k in range(l - i, l): # 循环l-1至1次
print(t[i-1], end=" ") # 依次输出字符串t中的值
print("") # 输出空格
运行结果
a
b b
c c c
d d d d
Process finished with exit code 0