2014-11-18 7 views
0

Привета Я хотел бы создать некоторый код, который будет печатать коробку, которая выглядит следующим образомИтерации в питоне

+ -- + -- + -- + -- + -- + 
| | | | | | 
+ -- + -- + -- + -- + -- + 

Код должен использовать цикл для печати ряда ячеек, используя для ввода в диапазоне (5) (Там не должно быть никакой пользы, если заявление, чтобы решить эту проблему), используя только одну коробку, как показано ниже

+ -- + 
| | 
+ -- + 

Я попытался использовать код, приведенный ниже, но не производит выход требуемого. Пожалуйста, помогите

for i in range(5): 
    print("+--+\n| |\n+--+", end=" ") 
+2

Вам нужно переосмыслить свой подход. Вы явно не можете просто «распечатать» один ящик пять раз - вы не только будете повторять «стены» таким образом, но если в каждом ящике есть символы новой строки, нет возможности «стекать» их по горизонтали. Вам нужно сделать цикл * first *, создать три строки, которые нужно распечатать, а затем распечатать их после их завершения. –

+0

Это очень похоже на вопрос о домашнем задании. Почему ограничение на использование этой конкретной конструкции цикла? – ekhumoro

+0

Какое желаемое поведение для printBoxes (0)? Вертикальная линия или вообще никакого рисунка? –

ответ

2

Я думаю, что путь твой учитель хочет вам решить это с помощью цикла for построить три линии, по ящикам, а затем напечатайте все три строки. Или, заметив, что верх и низ одинаковы, просто использовать ту же линию для каждого:

edge, middle = '+', '|' 
for i in range(5): 
    edge += ' -- +' 
    middle += ' |' 
print(edge) 
print(middle) 
print(edge) 

Однако ответы с помощью оператора повторения * строки и/или метод join гораздо Pythonic. Если вы можете объяснить своему учителю, как они работают, и почему они лучше, и если ваш учитель не слишком жесткий (или глупый), это может стоить того. Даже если вы не хотите этого делать, лучше понять, почему они лучше по своему усмотрению.

4

Вы можете сделать это с помощью комбинации с помощью оператора * сделать строку символов, а join добавить разделители между этими символами.

def printBoxes(boxes): 
    edges = ' -- '.join('+' * (boxes+1)) 
    middle = ' '.join('|' * (boxes+1)) 
    print(edges) 
    print(middle) 
    print(edges) 

Тестирование

>>> printBoxes(3) 
+ -- + -- + -- + 
| | | | 
+ -- + -- + -- + 

>>> printBoxes(5) 
+ -- + -- + -- + -- + -- + 
| | | | | | 
+ -- + -- + -- + -- + -- + 
+3

Nitpick - здесь нет кубов. ;-) –

+0

: P Достаточно честно, переименован – CoryKramer

+0

Домашнее задание потребовало от вас использования цикла, поэтому вам придется переписать его с помощью неестественно неуклюжего кода. Хотя я предполагаю, что просто заменяю выражения 'print'' на строку in (ребра, середину, ребра): print (line) 'соответствует задаче, как указано. – Duncan

0
def printBoxes(n): 
    top = "+--" * n + "+" 
    middle = "| " * n + "|" 

    print(top) 
    print(middle) 
    print(top) 

printBoxes(5) 
Смежные вопросы