2013-11-28 2 views
0

Я хотел бы реализовать функцию, которая выводит кадр в python.It должен напечатать некоторые вещи, как это, когда заданы два целых числа, 4 и 7 и полукокс «$», напримерПечать кадра в питона

$$$$$$$ 
$  $ 
$  $ 
$$$$$$$ 

до сих пор я могу только сделать это

$$$$$$$ 
$  
$  
$$$$$$$ 

Так что моя проблема теперь о том, чтобы покрыть оставшуюся сторону frame.Here мой текущий код

def print_frame(n, m, c): 
    for i in range(1,m): 
     print(c,end = " ") 


    for d in range(1,n): 
     print(c) 

    for i in range(1,m+1): 
     print(end = "") 


    for i in range(1,m+1): 
     print(c,end = " ") 

(Note.This проблема домашних заданий, но это проблема бонус (решение это не является обязательным))

ответ

1

Для средней части, добавить интервал:

for d in range(1, n - 1): 
    print(c + ' ' * (m - 2) + c) 

или использование:

for d in range(1, n - 1): 
    print(c, ' ' * (m - 2), c, sep='') 

Обратите внимание, что вам также нужно зацикливать n - 2 раз, верхняя и нижняя линии не должны быть частью счета здесь.

Петля print(end='') полностью избыточна; что просто ничего не печатает.

Полная функция:

def print_frame(n, m, c): 
    print(c * m) 
    for i in range(1, n - 1): 
     print(c, ' ' * (m - 2), c, sep='') 
    print(c * m) 

Быстрый демо:

>>> def print_frame(n, m, c): 
...  print(c * m) 
...  for i in range(1, n - 1): 
...   print(c, ' ' * (m - 2), c, sep='') 
...  print(c * m) 
... 
>>> print_frame(5, 6, '*') 
****** 
* * 
* * 
* * 
****** 
+0

Это действительно помогло мне сократить мой код и решить эту проблему, в частности, печать (с * м), которую я забытую altogether.This действительно открыл мой разум, спасибо – Emma

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