python 打印字母阶梯和金字塔

一、以文本形式保存数据

import string
from collections import Counter

s = string.ascii_letters
with open('test.txt', 'w') as file:
    for i in range(len(s)):
        print(s[i]*(i + 1), file=file, end='')

二、打印字母阶梯

1、左侧阶梯

with open('test.txt', 'r') as file:
    t = set(file.read())
    file.seek(0)  # 调回文件头
    for i in range(len(t)):
        print(file.read(i+1))

输出:

a
bb
ccc
dddd
eeeee
ffffff
ggggggg
hhhhhhhh
iiiiiiiii
jjjjjjjjjj
kkkkkkkkkkk
llllllllllll
mmmmmmmmmmmmm
nnnnnnnnnnnnnn
ooooooooooooooo
pppppppppppppppp
qqqqqqqqqqqqqqqqq
rrrrrrrrrrrrrrrrrr
sssssssssssssssssss
tttttttttttttttttttt
uuuuuuuuuuuuuuuuuuuuu
vvvvvvvvvvvvvvvvvvvvvv
wwwwwwwwwwwwwwwwwwwwwww
xxxxxxxxxxxxxxxxxxxxxxxx
yyyyyyyyyyyyyyyyyyyyyyyyy
zzzzzzzzzzzzzzzzzzzzzzzzzz
AAAAAAAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBBBBBBBBBB
CCCCCCCCCCCCCCCCCCCCCCCCCCCCC
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

2 、右侧阶梯

with open('test.txt', 'r') as fin:
    letter_counter = Counter(fin.read())  # 字母计数器
    length = max(letter_counter.values())  # 
    fin.seek(0)  # 调回文件头
    for i in range(len(t)):
        print(fin.read(i+1).rjust(length))  # 格式化为右对齐

输出:

                                                   a
                                                  bb
                                                 ccc
                                                dddd
                                               eeeee
                                              ffffff
                                             ggggggg
                                            hhhhhhhh
                                           iiiiiiiii
                                          jjjjjjjjjj
                                         kkkkkkkkkkk
                                        llllllllllll
                                       mmmmmmmmmmmmm
                                      nnnnnnnnnnnnnn
                                     ooooooooooooooo
                                    pppppppppppppppp
                                   qqqqqqqqqqqqqqqqq
                                  rrrrrrrrrrrrrrrrrr
                                 sssssssssssssssssss
                                tttttttttttttttttttt
                               uuuuuuuuuuuuuuuuuuuuu
                              vvvvvvvvvvvvvvvvvvvvvv
                             wwwwwwwwwwwwwwwwwwwwwww
                            xxxxxxxxxxxxxxxxxxxxxxxx
                           yyyyyyyyyyyyyyyyyyyyyyyyy
                          zzzzzzzzzzzzzzzzzzzzzzzzzz
                         AAAAAAAAAAAAAAAAAAAAAAAAAAA
                        BBBBBBBBBBBBBBBBBBBBBBBBBBBB
                       CCCCCCCCCCCCCCCCCCCCCCCCCCCCC
                      DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
                     EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
                    FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
                  HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
                 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
                JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
               KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
              LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
             MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
            NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
           OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
          PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
         QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ
        RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
       SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
      TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
     UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
    VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
   WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

 

三、打印字母金字塔

1、打印全部字母

with open('test.txt', 'r') as fin:
    letter_counter = Counter(fin.read())  # 字母计数器
    length = max(letter_counter.values())  # 
    fin.seek(0)
    for i in range(length):
        row = fin.read(i+1).center(length)  # 调整为居中,两边用空格填充
        print(row)

输出:

                         a                          
                         bb                         
                        ccc                         
                        dddd                        
                       eeeee                        
                       ffffff                       
                      ggggggg                       
                      hhhhhhhh                      
                     iiiiiiiii                      
                     jjjjjjjjjj                     
                    kkkkkkkkkkk                     
                    llllllllllll                    
                   mmmmmmmmmmmmm                    
                   nnnnnnnnnnnnnn                   
                  ooooooooooooooo                   
                  pppppppppppppppp                  
                 qqqqqqqqqqqqqqqqq                  
                 rrrrrrrrrrrrrrrrrr                 
                sssssssssssssssssss                 
                tttttttttttttttttttt                
               uuuuuuuuuuuuuuuuuuuuu                
               vvvvvvvvvvvvvvvvvvvvvv               
              wwwwwwwwwwwwwwwwwwwwwww               
              xxxxxxxxxxxxxxxxxxxxxxxx              
             yyyyyyyyyyyyyyyyyyyyyyyyy              
             zzzzzzzzzzzzzzzzzzzzzzzzzz             
            AAAAAAAAAAAAAAAAAAAAAAAAAAA             
            BBBBBBBBBBBBBBBBBBBBBBBBBBBB            
           CCCCCCCCCCCCCCCCCCCCCCCCCCCCC            
           DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD           
          EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE           
          FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF          
         GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG          
         HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH         
        IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII         
        JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ        
       KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK        
       LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL       
      MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM       
      NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN      
     OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO      
     PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP     
    QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ     
    RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR    
   SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS    
   TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT   
  UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU   
  VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV  
 WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW  
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY 
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

因为奇偶次数的原因,输出不对称。

2、只打印出现奇数次的字母。

with open('test.txt', 'r') as fin:
    letter_counter = Counter(fin.read())  # 字母计数器
    length = max(letter_counter.values())  # 
    fin.seek(0)
    
    rows = [fin.read(i+1) for i in range(length)]
    for row in rows[::2]:  # 出现奇数次的字母
        print(row.center(length))

输出:

                         a                          
                        ccc                         
                       eeeee                        
                      ggggggg                       
                     iiiiiiiii                      
                    kkkkkkkkkkk                     
                   mmmmmmmmmmmmm                    
                  ooooooooooooooo                   
                 qqqqqqqqqqqqqqqqq                  
                sssssssssssssssssss                 
               uuuuuuuuuuuuuuuuuuuuu                
              wwwwwwwwwwwwwwwwwwwwwww               
             yyyyyyyyyyyyyyyyyyyyyyyyy              
            AAAAAAAAAAAAAAAAAAAAAAAAAAA             
           CCCCCCCCCCCCCCCCCCCCCCCCCCCCC            
          EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE           
         GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG          
        IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII         
       KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK        
      MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM       
     OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO      
    QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ     
   SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS    
  UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU   
 WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW  
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY 

3、只打印出现偶数次的字母

with open('test.txt', 'r') as fin:
    letter_counter = Counter(fin.read())  # 字母计数器
    length = max(letter_counter.values())  # 
    fin.seek(0)
    
    rows = [fin.read(i+1) for i in range(length)]
    for row in rows[1::2]:  # 出现偶数数次的字母
        print(row.center(length))

输出:

                         bb                         
                        dddd                        
                       ffffff                       
                      hhhhhhhh                      
                     jjjjjjjjjj                     
                    llllllllllll                    
                   nnnnnnnnnnnnnn                   
                  pppppppppppppppp                  
                 rrrrrrrrrrrrrrrrrr                 
                tttttttttttttttttttt                
               vvvvvvvvvvvvvvvvvvvvvv               
              xxxxxxxxxxxxxxxxxxxxxxxx              
             zzzzzzzzzzzzzzzzzzzzzzzzzz             
            BBBBBBBBBBBBBBBBBBBBBBBBBBBB            
           DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD           
          FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF          
         HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH         
        JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ        
       LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL       
      NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN      
     PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP     
    RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR    
   TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT   
  VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV  
 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

 

posted @ 2019-05-22 22:02  赏尔  阅读(6916)  评论(0编辑  收藏  举报