2017-03-10 1 views
0

J'essaye de faire un carré avec des espaces et des points seulement, mais j'ai un problème. J'ai besoin de faire le code de cette façon, donc je peux changer la taille du carré en seulement 1 entrée pour chaque paramètre. J'ai des problèmes avec la variable "côtés" comment puis-je automatiser l'espace entre le côté gauche et le côté droit en ne donnant qu'une seule valeur d'entrée.Dessin d'un carré avec "." et "" seulement en Python

def square_shape(top,sides,bottom): 
      top = ". "*top 
      sides =((".")+("  .\n"))*sides 
      bottom = ". "*bottom 
      print top 
      print sides,bottom 
     square_shape(8,7,8) 

P.S Avec ce code, il fonctionne parfaitement bien, mais quand je change la taille du haut et le bas, l'espace nécessaire est pas créé dans les côtés. J'espère que j'étais clair.

Nous vous remercions à l'avance

Répondre

1

Faire de l'espace dépendant de la longueur de la place et ne pas utiliser \n dans la chaîne ou bien votre dernière ligne affichera également une nouvelle ligne -

def square_shape(leng): # no need to use 3 variables 
     print (". "*leng) 
     for _ in range(leng-2): 
      print (". " + " " * (leng - 2) + ".") 
     print (". "*leng) 
square_shape(8) 

Sortie -

. . . . . . . . 
.    . 
.    . 
.    . 
.    . 
.    . 
.    . 
. . . . . . . . 
+0

qui est parfait, mais je ne l'ai pas appris la (.join) méthode encore et je vais avoir une semaine prochaine mi-parcours, donc je ne sais pas si ce serait un problème si je l'utilise. Merci beaucoup pour votre temps! – Unix

+0

@Unix Vous pouvez utiliser une boucle normale. Vérifiez l'édition. – hashcode55

+0

Merci frère, je comprends maintenant – Unix

0

Que pensez-vous de cela?

def square_shape(size): 
    print '. ' * size + '.' 
    print ('.' + ' ' * (size-1) + ' .\n') * (size-1), 
    print '. ' * size + '.' 
+0

Merci beaucoup! – Unix

+0

@Bendik Cela n'imprimera pas un carré parfait, il y aura un retour à la ligne après l'avant dernière ligne. – hashcode55

+0

Maintenant, c'est un carré parfait, de la taille de la zone * taille, a fixé le nombre de lignes tout à l'heure. – Bendik