在Python中将某些东西镜像到另一边

时间:2015-12-15 08:12:26

标签: python

我正在尝试用Python写一个圣诞树,我试图让它镜像到另一边,所以文本在左边镜像到它自己而不是树的一面我有两个边

tree = "I"


for i in range(12):
    print(tree.ljust(2-i) * i)

5 个答案:

答案 0 :(得分:3)

有更好的方法可以做到这一点,事实上你并不需要镜像,你可以只调整左边的填充,但让我们假设你想要一个真正的镜像,这样每一行都有相同的字符数。

首先应该将字符串相乘,然后对其进行对齐。然后,您可以使用切片运算符来反转两半([::-1])。

size = 12
for i in range(1, size):
    half = (tree * i).rjust(size - 1)
    print half + half[::-1]

输出

          II
         IIII
        IIIIII
       IIIIIIII
      IIIIIIIIII
     IIIIIIIIIIII
    IIIIIIIIIIIIII
   IIIIIIIIIIIIIIII
  IIIIIIIIIIIIIIIIII
 IIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIII

请记住..

Every time you draw a tree with a pc, you make Don Knuth happy

圣诞快乐唐!

答案 1 :(得分:2)

您应该使用rjust代替ljust,因为空格应填充在左侧。此外,你需要加倍计数,因为3个字符与2正确对齐。

tree = "I"
for i in range(12):
    print((tree*(2*i)).rjust(12 + i))

输出:

          II
         IIII
        IIIIII
       IIIIIIII
      IIIIIIIIII
     IIIIIIIIIIII
    IIIIIIIIIIIIII
   IIIIIIIIIIIIIIII
  IIIIIIIIIIIIIIIIII
 IIIIIIIIIIIIIIIIIIII
IIIIIIIIIIIIIIIIIIIIII

答案 2 :(得分:1)

几乎是圣诞节,加上一些装饰品?

import random

tree = "I"
for i in range(12):
    row = list(tree*(2*i))
    if( i > 2):
        index = int(random.random() * len(row))
        if( index < len(row) - 1):
            row[index] = "["
            row[index + 1] = "]"

        index2 = int(random.random() * len(row))
        if( index2 != index and index2 != (index + 1)):
            row[index2] = "O"

    print (("".join(row)).rjust(12 + i))

多田:

           II
          IIII
         I[]III
        IIII[]IO
       IIIOIIII[]
      IIIIIIIIO[]I
     III[]IIIIIOIII
    IIIIIOIIIIIIII[]
   IIIIIIIIOIIII[]III
  IIIIOIIIIIIIIIIIIIII
 II[]IIIIIIIIIIOIIIIIII

答案 3 :(得分:0)

这是我的看法:

ViewController

答案 4 :(得分:0)

我更喜欢使用str.center() str.rjust()上的尖树和(只是为了与众不同):

def tree(height, symbol='I'):
    width = height*2 - 1
    for i in range(height):
        print((symbol * ((i*2)+1)).center(width))

>>> tree(12)
           I           
          III          
         IIIII         
        IIIIIII        
       IIIIIIIII       
      IIIIIIIIIII      
     IIIIIIIIIIIII     
    IIIIIIIIIIIIIII    
   IIIIIIIIIIIIIIIII   
  IIIIIIIIIIIIIIIIIII  
 IIIIIIIIIIIIIIIIIIIII 
IIIIIIIIIIIIIIIIIIIIIII