2016-11-04 3 views
0

ich nur einen gefüllten Diamanten schaffen machen, ich kann nicht herausfinden, wie es bekommen unfilled.` #Wie einen ungefüllten Diamanten mit While-Schleifen in Python

# The size of the diamond 
N = 7 

# The top part (includes the middle row) 
i = 0 
while i < N // 2 + 1: 
    print((N // 2 - i) * " " + (2 * i + 1) * "*") 
    i += 1 

# The bottom part 
i = 0 
while i < N // 2: 
    print(" " * (i + 1) + "*" * (N - 2 - 2 * i)) 
    i += 1 

Antwort

0
# The size of the diamond 
N = 7 

# The top part (includes the middle row) 
i = 0 
while i < N // 2 + 1: 
    print((N // 2 - i) * " " + "*" +(((2 * i -1) * " " + "*") if i > 0 else "")) 
    i += 1 

# The bottom part 
i = 0 
while i < N // 2: 
    print(" " * (i + 1) + "*" + ((" " * (N - 2 - 2 * i - 2) + "*") if i < (N//2-1) else "")) 
    i += 1 

einfach zwei weniger Räume drucken, als Sie * Drucken wurden ‚s dazwischen zwei *‘ s, wenn nicht oben oder unten.

1

Sie müssen nur (2*i-1) Räume drucken zwischen '*' Zeichen statt nur '*'. Und haben mit der Spitze zu tun und ganz unten separat:

# The size of the diamond 
N = 7 

# The top part (includes the middle row) 
print((N // 2) * " " + '*') 
i = 1 
while i < N // 2 + 1: 
    print((N // 2 - i) * " " + '*' + (2 * i - 1) * " " + '*') 
    i += 1 

# The bottom part 
i = 0 
while i < N // 2 - 1: 
    print(" " * (i + 1) + '*' + " " * (N - 4 - 2 * i) + '*') 
    i += 1 
print((N // 2) * " " + '*') 

    * 
    * * 
* * 
*  * 
* * 
    * * 
    * 
+0

oops ist, Du schlägst mich :) – nephi12

0
def diamond(size, sym_func): 
    s = '' 
    for row in xrange(size): 
     for column in xrange(size): 
      if row > size//2: # if bottom half reflect top 
       row = size - row - 1 
      if column > size//2: # if right half reflect left 
       column = size - column - 1 
      s += sym_func(row,column,size) 
     s+= '\n' 
    return s 

def solid(row,column,size): 
    if column >= (size // 2 - row): 
     return "*" 
    return " " 

def hollow(row,column,size): 
    if column == (size // 2 - row): 
     return "*" 
    return " " 

def circle(row,column,size): 
    if (size//2-row)**2+(size//2-column)**2 <= (size//2)**2: 
     return '*' 
    return ' ' 

print diamond(size=7, sym_func=solid) # The size of the diamond 
print diamond(size=7, sym_func=hollow) # The size of the diamond 
print diamond(size=17, sym_func=circle) # The size of the diamond 

Blick auf die Differenz zwischen den Hohl- und Voll Symbol Funktionen, wenn Sie verwenden a> = Sie dann eine solide Sache, wenn man ein == für genaue comperison verwenden dann einfach die parimiter

+0

versuche def Kreis (Zeile, Spalte, Größe): \t if (Größe // 2-reihig) ** 2+ (Größe // 2-spaltig) ** 2 <= (Größe // 2) ** 2: \t \t zurück '*' \t zurück '' –

Verwandte Themen