基于用户输入的菱形形状

时间:2018-07-06 20:36:51

标签: python

我正在尝试使用Python 3创建由用户选择的字母组成的菱形。因此,如果用户选择“ B”,则菱形为

  A
B   B
  A

如果用户选择“ D”,则菱形为:

      A
    B   B
  C   C   C
D   D   D   D
  C   C   C
    B   B
      A

有人可以帮助我开始吗?到目前为止,我正在考虑如果用户选择D,那么它对应于4,您将使用等式2k-1来确定“正方形”的大小。我还将创建一个包含所有字母的链接列表 所以字母= ['A','B','C','D'....'Z'](或者字典会更好吗?) 所以:

def rhombus(n):
  squareSize = 2n-1
  for i in range(1,squareSize):
    for l in letter:
      print l + "/n"

3 个答案:

答案 0 :(得分:1)

domochevski的回答很好,但实际上我们不需要这些进口。

def rhombus(char):
    A = 64
    Z = A + 26
    try:
        val = ord(char)
        if val < A or val > Z:
            return None
    except:
        return None
    L = [ ''.join(([chr(x)]*(x-A))) for x in range(A,val+1) ]
    L = [' '.join(list(x)) for x in L]
    max_len = max(len(x) for x in L)
    L = [x.center(max_len) for x in L]
    L += L[-2::-1]
    return '\n'.join(L)

print(rhombus('Z'))

答案 1 :(得分:1)

打高尔夫球时间\ o /

编辑:code golf当然会有SE,我会像在罗马一样

Python 3,106个字节

n=26
for x in range(-n, n):
    x = abs(x)
    print('  '*x+'   '.join([chr(64+n-x) for _ in range(n-x)]))

Try it online!

说明

for x in range(-n, n):生成行

' '*x:在行中每个第一个字母之前生成空格

chr(64+n-x):显示字母,并显示chr(65) = "A"

' '.join:将所有字母之间的三个空格连接起来

for _ in range(n-x):将生成正确数量的字母。价值本身是没有用的。

n = 4的输出:

      A   
    B   B   
  C   C   C   
D   D   D   D   
  C   C   C   
    B   B   
      A   

答案 2 :(得分:0)

那是一个有趣的问题。这是一些快速而肮脏的方法:

from string import ascii_uppercase

def rhombus(c):  # Where c is the chosen character
    # Get the position (1-based)
    n = ascii_uppercase.find(c.upper()) + 1
    if 0 < n <= 26:
        # Get the strings for the top of the rhombus without spaces
        l = [ascii_uppercase[i] * ((i)+1) for i in range(n)]
        # Add in the spaces
        l = [' '.join(list(e)) for e in l]
        # Align everything
        max_len = max(len(e) for e in l)
        l = [e.center(max_len) for e in l]
        # Get the bottom from the top
        l += l[-2::-1]
        # Print the rhombus
        for e in l:
            print(e)

正如我提到的那样,这不是漂亮的代码,但它应该可以工作。