请教一下这个代码思路,横版转竖版


str1='移舟泊烟渚'
str2='日暮客愁新'
str3='野旷天低树'
str4='江清月近人'
verse=[list(str1),list(str2),list(str3),list(str4)] #创建一个二维列表
verse.reverse()                               #对列表进行逆排序
print('\n--竖版--\n')
for i in range(5):                   #循环古诗的每一行的每一个字(列)
    for j in range(4):               #循环新逆序排列后的第一行
        if j==3:                     #如果是最后一行
            print(verse[j][i])       #换行输出
        else:
            print(verse[j][i],end='')         #不换行输出

如上 for循环内的语句可以说完全整不明白

首先,竖版的古诗从右到左,所以要verse.reverse()逆排序
我们已经创建了一个二维列表,所以我们用两个for循环生成每一个字的坐标
因为我们打印是横着打的,第一行先打印每一句的第一个字,所以第一个for的变量是0~4(5个字),第二个是0~3(4句诗)
接下来是循环体,每次循环打印第j句的第i个字。由于每一次print默认是以换行结尾的,而我们在打印前三个字时,不能换行,因此在第4个字(也就是第四句诗的每一个字)时以换行结尾,其余以''结尾。但我们已经把它逆排序了,所以实际上是第一句诗的每一个字换行结尾。
结果:


--竖版--

江野日移
清旷暮舟
月天客泊
近低愁烟
人树新渚