【Python】文本对齐方式
一、题目二、代码三、解读
一、题目
In Python, a string of test can be aligned left, right and cneter.
.ljust(width)
This method returns a left aligned string of length width.
>>> width = 20
>>> print 'HackerRank'.ljust(width,'-')
HackerRank----------
.center(width)
This method returns a centered string of length width.
>>> width = 20
>>> print 'HackerRank'.center(width,'-')
-----HackerRank-----
.rjust(width)
This method returns a right aligned string of length width.
>>> width = 20
>>> print 'HackerRank'.rjust(width,'-')
----------HackerRank
Task
You are given a partial code that is used for generating the HackerRank Logo of variable thickness.
Sample Input
5
Sample Output
H
HHH
HHHHH
HHHHHHH
HHHHHHHHH
HHHHH HHHHH
HHHHH HHHHH
HHHHH HHHHH
HHHHH HHHHH
HHHHH HHHHH
HHHHHHHHHHHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHHHHHHHHHHH
HHHHHHHHHHHHHHHHHHHHHHHHH
HHHHH HHHHH
HHHHH HHHHH
HHHHH HHHHH
HHHHH HHHHH
HHHHH HHHHH
HHHHH HHHHH
HHHHHHHHH
HHHHHHH
HHHHH
HHH
H
二、代码
# Replace all ______ with rjust, ljust or center.
# This must be an odd number
thickness = int(input())
c = 'H'
# Top Cone
for i in range(thickness):
print((c*i).rjust(thickness-1)+c+(c*i).ljust(thickness-1))
# Top Pillars
for i in range(thickness+1):
print((c*thickness).center(thickness*2)+(c*thickness).center(thickness*6))
# Middle Belt
for i in range((thickness+1)//2):
print((c*thickness*5).center(thickness*6))
# Bottom Pillars
for i in range(thickness+1):
print((c*thickness).center(thickness*2)+(c*thickness).center(thickness*6))
# Bottom Cone
for i in range(thickness):
print(((c*(thickness-i-1)).rjust(thickness)+c+(c*(thickness-i-1)).ljust(thickness)).rjust(thickness*6))
三、解读
题目要求打印一个HackerRank Logo,Logo的厚度由用户输入的奇数决定。
thickness = int(input())
- 用户输入厚度值,并转换成整数,请注意这里需要输入奇数。
c = 'H'
- 定义一个字符c,并设置为'H'
# Top Cone
for i in range(thickness):
print((c * i).rjust(thickness - 1) + c + (c * i).ljust(thickness - 1))
- 这部分代码打印Logo的顶部圆锥部分。
- for i in range(thickness) : 确定圆锥的行数(厚度)
- (c * i).rjust(thickness - 1) 生成 i 个 'H' 字符并右对齐到 thickness - 1 的宽度。
- c 是中间的单个'H'字符
- (c * i).ljust(thickness - 1) 生成 i 个 'H' 字符并左对齐到 thickness - 1 的宽度
- 这些部分合并后打印成顶部圆锥的形状
# Top Cone
thickness = 5 for i in range(thickness): print((c * i).rjust(thickness - 1))
H HH HHH HHHH
thickness = 5 for i in range(thickness): print((c * i).rjust(thickness - 1) + c)
H HH HHH HHHH HHHHH
thickness = 5 for i in range(thickness): print((c * i).rjust(thickness-1) + c + (c * i).ljust(thickness - 1))
H HHH HHHHH HHHHHHH HHHHHHHHH
# Top Pillars
for i in range(thickness + 1):
print((c * thickness) * center(thickness * 2) + (c * thickness).center(thickness * 6))
- 这部分代码打印Logo的顶部支柱部分
- for i in range(thickness + 1) :循环从 0 到 thickness
- (c * thickness).center(thickness * 2) :生成 thickness 个 'H' 字符并居中对齐到 thickness * 2 的宽度
- (c * thickness).center(thickness * 6) :生成 thickness 个 'H' 字符并居中对齐到 thickness * 6 的宽度,这用于在支柱之间添加空格。
- 这些部分合并后打印成顶部支柱的形状。
# Top Pillars
print((c * thickness) * center(thickness * 2) + (c * thickness).center(thickness * 6))
thickness = 5 for i in range(thickness + 1): print((c * thickness) * center(thickness * 2))
HHHHH HHHHH HHHHH HHHHH HHHHH HHHHH
thickness = 5 for i in range(thickness + 1): print((c * thickness) * center(thickness * 2) + (c * thickness).center(thickness * 6))
HHHHH HHHHH HHHHH HHHHH HHHHH HHHHH HHHHH HHHHH HHHHH HHHHH HHHHH HHHHH
# Middle Belt
for i in range((thickness + 1) // 2):
print((c * thickness * 5).center(thickness * 6))
- 这部分代码打印 Logo 的中间腰带部分。
- for i in range((thickness+1)//2): 循环从 0 到 (thickness + 1) // 2 - 1,确保中间腰带的行数是奇数。
- (c*thickness*5).center(thickness*6) 生成 thickness * 5 个 'H' 字符并居中对齐到 thickness * 6 的宽度。
# Middle Belt
print((c * thickness * 5).center(thickness * 6))
thickness = 5 for i in range((thickness + 1)//2): print((c * thickness * 5).center(thickness * 6))
HHHHHHHHHHHHHHHHHHHHHHHHH HHHHHHHHHHHHHHHHHHHHHHHHH HHHHHHHHHHHHHHHHHHHHHHHHH
# Bottom Pillars
for i in range(thickness + 1):
print((c * thickness).center(thickness * 2) + (c * thickness).center(thickness * 6))
- 这部分代码打印 Logo 的底部支柱部分,与顶部支柱类似。
- for i in range(thickness+1): 循环从 0 到 thickness。
- (c*thickness).center(thickness*2) 和 (c*thickness).center(thickness*6) 分别用于打印支柱和支柱之间的空格。
# Bottom Pillars
thickness = 5 for i in range(thickness + 1): print((c * thickness).center(thickness * 2))
HHHHH HHHHH HHHHH HHHHH HHHHH HHHHH
thickness = 5 for i in range(thickness + 1): print((c * thickness).center(thickness * 2) + (c * thickness).center(thickness * 6))
HHHHH HHHHH HHHHH HHHHH HHHHH HHHHH HHHHH HHHHH HHHHH HHHHH HHHHH HHHHH
# Bottom Cone
for i in range(thickness):
print(((c * (thickness - i - 1)).rjust(thickness) + c + (c * (thickness - i - 1)).ljust(thickness)).rjust(thickness * 6))
- 这部分代码打印 Logo 的底部圆锥部分。
- for i in range(thickness): 循环从 0 到 thickness - 1。
- (c*(thickness-i-1)).rjust(thickness) 生成 (thickness - i - 1) 个 'H' 字符并右对齐到 thickness 的宽度。
- c 是中间的单个 'H' 字符。
- (c*(thickness-i-1)).ljust(thickness) 生成 (thickness - i - 1) 个 'H' 字符并左对齐到 thickness 的宽度。
- 这些部分合并后,整体再使用 rjust(thickness*6) 右对齐到 thickness * 6 的宽度,确保底部圆锥与顶部圆锥对齐。
# Bottom Cone
thickness = 5 for i in range(thickness): print((c * (thickness - i - 1)).rjust(thickness))
HHHH HHH HH H
thickness = 5 for i in range(thickness): print((c * (thickness - i - 1)).rjust(thickness) + c)
HHHHH HHHH HHH HH H
thickness = 5 for i in range(thickness): print((c * (thickness - i - 1)).rjust(thickness) + c + (c * (thickness - i - 1)).ljust(thickness))
HHHHHHHHH HHHHHHH HHHHH HHH H
thickness = 5 for i in range(thickness): print(((c * (thickness - i - 1)).rjust(thickness) + c + (c * (thickness - i - 1)).ljust(thickness)).rjust(thickness * 6))
HHHHHHHHH HHHHHHH HHHHH HHH H

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)