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个字(也就是第四句诗的每一个字)时以换行结尾,其余以''
结尾。但我们已经把它逆排序了,所以实际上是第一句诗的每一个字换行结尾。
结果:
--竖版--
江野日移
清旷暮舟
月天客泊
近低愁烟
人树新渚