截取字符串“abcd“里的四个字母,输出为如下图形

文章目录

一.题目

截取字符串"abcd"里的四个字母,输出为如下图形
截取字符串“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
上一篇:为什么.Net平台不支持程序集卸载(Assembly.Unload)?


下一篇:Java 中 equals()与 == 的区别