一、题目

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     

Logo

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

更多推荐