2016-09-27 5 views
0

ich diese Ausgabe haben möchte:Nested Loop in Python funktioniert nicht

* * * 
2 2 2 
4 4 4 
6 6 6 
8 8 8 

ich es nicht, und ich habe viele Möglichkeiten ausprobiert, aber mein Code scheint nicht zu funktionieren. Hier ist mein aktueller Code:

for row in range(3): 
    print ("*", end = " ") 
    print() 
    for col in range(2,9,2): 
     print (row, end = " ") 
     print() 
print() 

Was mache ich?

Antwort

0
print('* * *') 
for col in range(2,9,2): 
    print (*[col]*3, sep=' ') 

Um klarer zu sein.

>>> a = 2 
>>> [a] 
[2] 
>>> [a]*3 
[2, 2, 2] 
>>> print(*[a]*3, sep=' ') # equal to print(a, a, a, sep=' ') 
2 2 2 
2

Ich sehe nicht, warum Sie end in Ihren Druckanweisungen verwenden. Beachten Sie, dass Sie Zeile für Zeile drucken müssen. Es gibt keine Möglichkeit, Spalte für Spalte zu drucken.

print('* * *') 
for i in range(2, 9, 2): 
    print('{0} {0} {0}'.format(i)) 

Weitere Erläuterungen zu dem {0} s, die format Methode für Streicher nachschlagen: https://docs.python.org/2/library/string.html#format-string-syntax

0

Für einen Start, Sie nur eine Zeile haben, die * * * enthält, die an der Spitze gedruckt werden können, außerhalb von irgendwelchen Schleifen:

print('* * *')

Als nächstes müssten Sie Ihre Schleife von Werten 2 (einschließlich) undbeginnen(exklusiv) in Schritten von 2:

for col in range(2,9,2):

Sie brauchen nicht hier, jedes end Schlüsselwort zu verwenden, um das Drucken nur die Zeile mehrmals genügt:

print('{0} {0} {0}'.format(i))

So Der letzte Codeblock sieht folgendermaßen aus:

print('* * *') 
for row in range(2,9,2): 
    print('{0} {0} {0}'.format(row)) 

Sie müssen kein weiteres print() hinzufügen, print endet sowieso schon mit einem Newline.