2016-09-27 2 views
0

Я хотел бы, чтобы этот вывод:Вложенный цикл в Python Не Рабочая

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

Я не могу получить его, и я попробовал много способов, но мой код не похож на работу. Вот мой текущий код:

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

Что мне делать?

ответ

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

Чтобы быть более понятным.

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

Я не понимаю, почему вы используете end в операторах печати. Имейте в виду, что вы должны печатать строки за строкой. Невозможно напечатать столбец по столбцу.

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

Для более подробного объяснения о {0} с, искать метод format для строк: https://docs.python.org/2/library/string.html#format-string-syntax

0

Для начала, у вас есть только одна строка, которая содержит * * *, которые могут быть напечатаны на самом верху, за пределами любых петель:

print('* * *')

Далее, вам нужно будет начать цикл из значений 2 (включительно) и 9 (эксклюзив) с шагом 2:

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

Вам не нужно использовать какое-либо end ключевое слово здесь, так что просто печать ту строку, несколько раз достаточно:

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

Так последний код кода выглядит следующим образом:

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

Вам не нужно добавлять еще print(), print уже заканчивается символом новой строки.

Смежные вопросы