2010-10-30 2 views
1

Напишите функцию, которая выводит пробелы и границу дашдота вокруг строки s.Border around string python

Пример кода, который вызывает разнесены ("Hello") выведет:

--.-.-.-.- 
.   . 
- Hello - 
.   . 
    -.-.-.-.-. 

Пожалуйста, помогите мне с этим: D. Я новичок в программировании, и я пытаюсь изучить этот материал. У меня нет опыта программирования, поэтому для меня это довольно сложный вопрос. Всем спасибо!

+0

@Justin: У вас есть опечатка в первой строке выходного сигнала? Он начинается с двух тире. Также должна ли последняя строка быть такой же, как первая строка или ее обратная? –

ответ

2

ключ к программированию ищет шаблоны, а затем реализует их.

определить свои требования:
• должен иметь фиксированное пространство шрифты
• границ сверху/снизу должно быть длиной текста + маржа (белый пробел) + границы
• Текст должен иметь два места в все направления (вертикальные и горизонтальные)
• вы хотите чередующиеся периоды и дефис

def spaced(s): 
    text = "hello" 
    textLength = len(text) 
    lineLength = textLength + 2 * (2 + 1) 
    height = 5 

    # at this point we know the first and fifth lines are the same and 
    # we know the first and fourth are the same. (reflected against the x-axis) 

    hBorder = "" 
    for c in range(lineLength): 
     if c % 2: 
      hBorder = hBorder + '.' 
     else: 
      hBorder = hBorder + '-' 
    spacer = "." + " " * (lineLength - 2) + "." 
    fancyText = "- " + text + " -" 
    return (hBorder, spacer, fancyText, spacer, hBorder) 

textTuple = spaced("hello world") 
for line in textTuple: 
    print line 

Помните, что вы можете только прогнозировать интервал для фиксированной ширины шрифтов. Если у вас есть какие-либо вопросы о функции выше, спросите в комментариях. Приветствия.

+0

убедитесь, что если вы вводите это непосредственно в интерпретатор (в командной строке), вам нужно будет вставить соответствующее количество пробелов, чтобы не досрочно вернуться из функции. – Devin

+0

выглядит настолько сложным .... :( – 2010-10-30 04:26:02

+0

считать 'hBorder = lineLength // 2 *" -. "+" - "[: lineLength% 2]' вместо трудоемкого цикла –