2010-10-30 8 views
1

Ecrit une fonction espacée (s) qui génère des espaces et une bordure de dashdot autour d'une chaîne s.Bordure autour de la chaîne python

L'exemple de code, qui appelle espacées ("Bonjour") génèrerait:

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

S'il vous plaît aidez-moi avec ceci: D. Im nouveau à la programmation et im essayant d'apprendre ce genre de choses. Je n'ai aucune expérience en programmation donc c'est un défi pour moi. Merci tout le monde!

+0

@Justin: Avez-vous une faute de frappe dans la première ligne de l'exemple de sortie? Ça commence avec 2 tirets. Aussi, la dernière ligne devrait-elle être la même que la première ligne ou son inverse? –

Répondre

2

La clé de la programmation est la recherche de modèles, puis leur implémentation.

définir vos besoins:
• doivent avoir des polices à espacement fixe
• bordure en haut/en bas doit être la longueur du texte + marge (espace blanc) + frontière
• Le texte doit avoir deux espaces toutes les directions (verticale et horizontale)
• vous souhaitez une alternance de périodes et des traits d'union

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 

Rappelez-vous, vous ne pouvez prédire l'espacement des polices largeur fixe. Si vous avez des questions sur la fonction ci-dessus, demandez dans les commentaires. À votre santé.

+0

assurez-vous que si vous entrez ceci directement dans l'interpréteur (sur la ligne de commande), vous devrez insérer le nombre approprié d'espaces pour ne pas revenir prématurément de la fonction. – Devin

+0

semble si complexe .... :( –

+0

considèrent 'hBorder = lineLength // 2 *" -. "+" - "[: lineLength% 2]' au lieu d'une boucle laborieuse –

Questions connexes