L1-039 古风排版(Python实现) 测试点全过

前言: {\color{Blue}前言:} 前言:本系列题使用的是“PTA中的团体程序设计天梯赛——练习集”的题库,难度有L1、L2、L3三个等级,分别对应团体程序设计天梯赛的三个难度,如有需要可以直接查看对应专栏。发布个人的刷题笔记的同时,也是希望可以帮助到有需要的人,我会尽量的解释每一步代码,如有错误或者可以优化的地方还望各位CSDN的朋友可以指出来。更新速度预计是每天不定时更新三道,若当天没有更新后期将会补上。

题目

中国的古人写文字,是从右向左竖向排版的。本题就请你编写程序,把一段文字按古风排版。

输入格式
输入在第一行给出一个正整数 N ( < 100 ) N(<100) N<100,是每一列的字符数。第二行给出一个长度不超过1000的非空字符串,以回车结束。

输出格式:
按古风格式排版给定的字符串,每列 N N N个字符(除了最后一列可能不足 N N N个)。

输入样例:

4
This is a test case

输出样例:

asa T
st ih
e tsi
 ce s

题解

# 输入每一字列的符数
N = int(input())
"""
这里的N其实就是输出列表的总行数"""

# 输入字符串
text = input()

# 计算总列数
cols = (len(text) + N - 1) // N
"""
为了确保字符能够完整排版,可以考虑在不足一行的情况下,增加一列,
这样排版后能够包含所有字符。即在未满一行时,增加额外的一列,
然后进行整除操作得到总行数。"""

# 初始化二维列表,用于存储排版后的结果
grid = [[' '] * cols for _ in range(N)]
"""
[[' '] * cols]:这部分创建了一个大小为 cols 的一维列表,
其中每个元素都是一个空格字符 ' '。
这个一维列表会在每行都是一样的,因为它包含了相同的空格元素。

for _ in range(N):这部分用于创建多个相同的一维列表,
通过循环 N 次。在这里,使用了一个占位符 _,表示在循环中不使用循环变量。"""

# 将字符串按古风排版填入二维列表中
for i in range(len(text)):
    row = i % N  # 计算当前字符在哪一行
    col = cols - 1 - i // N  # 计算当前字符在哪一列
    grid[row][col] = text[i]

# 输出古风排版结果
for row in grid:
    print(''.join(row))
"""
''.join(row) 这个表达式使用了字符串的 join 方法,
它接受一个可迭代对象(在这里是字符列表 row),
将其中的元素连接成一个字符串,连接的方式是在每个元素之间插入一个空字符串 ''。"""



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦生dwu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值