2017-04-14 72 views
-1

我正在编写一个程序,它获取一个整数并生成一个菱形。输入是钻石的边长,例如是整数5的结果应该是:生成菱形

----*---- 
---***--- 
--*-*-*-- 
-*--*--*- 
********* 
-*--*--*- 
--*-*-*-- 
---***--- 
----*---- 

我的代码现在:

side = int(raw_input()) 
x = (side * 2) - 1 
middle = x // 2 
a = "" 
for i in range(side - 1): 
    t = ["-"] * x 
    t[middle - i] = "*" 
    t[middle + i] = "*" 
    t[middle] = "*" 
    a += "".join(t) 
    a += "\n" 
t=a[:-1] 
a += "*" * x + "\n" 
a += t[::-1] 
print(a) 

什么是最快的方法(不是最简单的一个)使用python 2.7生成这个钻石?

+1

这是一些功课?你能告诉我们你的代码并询问具体问题吗? –

+0

不好意思添加代码吧。这是编程竞赛网站的挑战 –

+0

@GiacomoDegliEsposti我添加了代码 –

回答

3
def Diamond(size): 
    for n in (lambda x : x[:-1]+x[::-1])([size-i-1 for i in range(size)]): 
     row = ["-" if i != n else "*" for i in range(size)] 
     print(["".join(row[:-1] +["*"]+ row[size-2::-1]) if n != 0 else "*"*(size*2-1)][0]) 

calling function in IDLE