La création d'un modèle de diamant à l'aide de boucles
Je suis en train d'écrire un programme qui lit un entier et affiche, à l'aide d'astérisques, une fois rempli, un diamant de la longueur du côté. Par Exemple, si la longueur du côté est de 4, le programme doit afficher
*
***
*****
*******
*****
***
*
Voici ce que je suis en train de faire. Il est en cours d'exécution, mais je n'arrive pas à obtenir les espaces à droite pour afficher la forme de diamant correctement....
userInput = int(input("Please input side length of diamond: "))
if userInput > 0:
for i in range(userInput):
for s in range(userInput -3, -2, -1):
print(" ", end="")
for j in range(i * 2 -1):
print("*", end="")
print()
for i in range(userInput, -1, -1):
for j in range(i * 2 -1):
print("*", end="")
print()
Merci!
- semble comme des devoirs à faire à la question. examen lien
- Il est. Il n'y a pas d'erreur à proprement parler. Seul problème est que je ne suis pas en mesure d'obtenir le modèle de diamant droite comme indiqué.
- Votre code a
range()
, et vous n'avez pas d'erreurs? - Oups, désolé, j'ai oublié de mettre dans la gamme, mais oui, c'est encore ne me donne pas le bon modèle.
- Conseils: 1) dans la première moitié du diamant, vous devez commencer à un grand nombre d'espaces et de progressivement diminuer. Ainsi, dans
userInput - 3
, vous allez avoir à impliquer le numéro de ligne –i
. Il n'est également pas nécessaire d'utiliser une rétrospective de gamme ou de s'arrêter au-2
. 2) Vous devez imprimer des espaces dans la seconde moitié, trop.
Vous devez vous connecter pour publier un commentaire.
Comment sur les éléments suivants:
Donner:
Alors, comment ça marche?
Nous avons d'abord besoin d'un compteur qui compte jusqu'à
side
puis de redescendre à nouveau. Il n'y a rien qui vous empêche de concaténer deux listes d'ensemble pour:Cela vous donne une liste
[0, 1, 2, 1, 0]
À partir d'ici, nous avons besoin de travailler sur le nombre exact des espaces et des astérisques nécessaires pour chaque ligne:
Donc deux formules sont nécessaires, par exemple pour
side=3
:À l'aide de Python dans la chaîne de mise en forme, il est possible de spécifier à la fois le caractère de remplissage et remplissage de la largeur. Cela évite d'avoir à utiliser la concaténation de chaîne.
Si vous utilisez Python 3.6 ou version ultérieure, vous pouvez faire usage de
f
chaîne de notation:side = 6
), vous pouvez toujours remplacer avec du code pour lire la valeur de quelque part et le reste du code du travail. Cela peut être utile lorsque vous êtes à jongler avec la logique, parce que vous n'avez pas à demander pour l'entrée à chaque fois que vous le tester même si tu veux le faire qu'une fois que ça fonctionne.Ce qui pourrait fonctionner mieux pour vous:
De sortie pour userInput = 6:
Merci les Gars, j'ai été en mesure de formuler/corriger mon code en fonction de l'aide que j'ai reçue. Merci à tous pour votre participation et votre aide le SI de la communauté!
Cela a fonctionné pour moi pour toute largeur positive, Mais il y a des espaces de rembourrage de la *s
Comment à ce sujet:
La sortie:
Ceci est similaire à certaines des questions ci-dessus, mais je trouve la syntaxe plus simple et lisible.