2016-03-29 29 views
0

Python'daki boşluklarımda neler olduğunu anlayamıyorum. Ben bu yazdırmak almaya çalışıyorum:Python dizgisinde boşluk

Two Vertical Lines, height=3; width=3: 
* * 
* * 
* * 

Two Vertical Lines, height=4; width=5: 
* * 
* * 
* * 
* * 

Two Vertical Lines, height=5; width=2: 
** 
** 
** 
** 
** 

ama bu kodla: Nedense

def two_vertical_lines (height, width): 
    for x in range (0, height): 
     if width > 2: 
      new_width = width - 2 
      mult2 = " " * new_width 
      print ("*",mult2,"*", "\n", end='') 
     else: 
      print ("**", "\n", end='') 
    return 

, benim program dönüyor:

Two Vertical Lines, height=3; width=3: 
* * 
* * 
* * 

Two Vertical Lines, height=4; width=5: 
* * 
* * 
* * 
* * 

Two Vertical Lines, height=5; width=2: 
** 
** 
** 
** 
** 

(fark değişkeni new_width teknik olarak 1 alan olsa bile, iki dikey çizgi arasındaki boşluk/genişlikte)

+0

... belki bunları yazdırmak şekilde anlamaya mükemmel iyi istiyoruz benim pycharm görüntülenir Ne koduyla yanlış bir şey ... Var? – Ian

cevap

3

, print() tek bir '' (boşluk) ile ayrılmış olan argümanları çıkarır yazabilir. Ancak, bu sep parametresi ile değiştirilebilir. Sadece aşağıdaki gibi sep='' kullanın:

def two_vertical_lines (height, width): 
    for x in range (0, height): 
     if width > 2: 
      new_width = width - 2 
      mult2 = " " * new_width 
      print ("*", mult2, "*", sep='') # <-- change 
     else: 
      print ("**", "\n", end='') 
    return 
2

print'u kullandığınızda, ona iletilen tüm parametreler aralarında boşluk olacak şekilde yazdırılır.

>>> print('a', 'b') 
a b 

Bunu düzeltmek için, tek bir dize oluşturabilir ve açıkça dizede \n eklemek yerine, Aslında bu

print ("*{}*\n".format(mult2), end='') 

gibi, yazdırmak, sen print fonksiyon özen sağlayabilirsiniz o, bu

print ("*{}*".format(mult2)) 

gibi başka gelişme, olabilir değil mi Özel durum, width <= 2 vakaları olması gerekir, çünkü sıfır veya negatif tamsayılarla dize çarpımı yalnızca boş dizelere neden olur.

>>> '*' * -1 
'' 
>>> '*' * 0 
'' 

Yani basitçe Varsayılan olarak

def two_vertical_lines(height, width): 
    for x in range(height): 
     print("*{}*".format(" " * (width - 2)))