Cours d'amélioration de la programmation 1

Même si vous vous souvenez de la grammaire du langage de programmation Comment écrire Je pense qu'il y a beaucoup de gens qui ne comprennent toujours pas.

Il s'agit d'un cours d'amélioration de la programmation pour ces personnes. Si vous voulez réfléchir, arrêtez la vidéo Pensez à un programme.

Cliquez ici pour la vidéo de commentaire

Je suis désolé si cela n'apparaît pas

Essayez d'écrire une étoile

Le thème cette fois est «essayez d'écrire une étoile». Créons la fonction de dessin d'étoile suivante.


conditions:
n =Nombre de lignes
def star(n):
En traitement

Problème du débutant

Dessine n étoiles au nième stade

Par exemple

star(5)

Après l'exécution, cela ressemble à ce qui suit Créons une fonction qui peut être affichée.

★ ★★ ★★★ ★★★★ ★★★★★

Problèmes intermédiaires

Dessine une étoile en n étapes pour former un triangle

star(5) 

Bouche Bouche Bouche Bouche Bouche Bouche Bouche Bouche Bouche Bouche Bouche Bouche ★★★★★ Bouche Bouche ★★★★★★★ Bouche ★★★★★★★★★

Problèmes avancés

Dessine une étoile comme dessiner un diamant en n étapes

star(9)

Bouche Bouche Bouche Bouche Bouche Bouche Bouche Bouche Bouche ★ Bouche Bouche Bouche Bouche ★ Bouche Bouche ★ Bouche Bouche ★ Bouche Bouche Bouche Bouche ★ Bouche ★ Bouche Bouche Bouche Bouche Bouche ★ Bouche ★ Bouche Bouche Bouche Bouche ★ Bouche Bouche Bouche ★ Bouche Bouche ★ Bouche Bouche Bouche Bouche ★ Bouche Bouche Bouche Bouche Bouche Bouche Bouche Bouche

star(10)

Bouche Bouche Bouche Bouche Bouche Bouche Bouche Bouche ★ Bouche Bouche ★ Bouche Bouche Bouche Bouche ★ Bouche Bouche Bouche ★ Bouche Bouche ★ Bouche Bouche Bouche Bouche Bouche ★ Bouche ★ Bouche Bouche Bouche Bouche Bouche Bouche ★ ★ Bouche Bouche Bouche Bouche Bouche Bouche ★ Bouche ★ Bouche Bouche Bouche Bouche Bouche ★ Bouche Bouche Bouche ★ Bouche Bouche Bouche ★ Bouche Bouche Bouche ★ Bouche Bouche ★ Bouche Bouche Bouche Bouche Bouche Bouche Bouche Bouche

Maintenant, réfléchissons-y.

Réponse du débutant

Tout d'abord, vous pouvez imprimer les caractères avec la fonction print.

Parce qu'il y a n étoiles dans la nième étape Parce que le nombre change à chaque fois

Pour faire ce genre de répétition Utilisez l'instruction for.

def star(n):
    for i in range(n):
        print('★'*(i+1))
star(5)

Avec la fonction range Vous pouvez générer des alternatives aux nombres.

Les nombres commencent à 0, alors ajoutez-leur 1.

En Python, quand il s'agit de personnages Parce que vous pouvez exprimer la répétition avec `` * '' Utilisez la fonction print pour imprimer des caractères pour n étapes Si vous l'affichez, il est terminé.

Réponse intermédiaire

Tout d'abord, recherchez le montant total en fonction du nombre de lignes saisi comme argument. Le nombre d'étoiles produites dans une forme pyramidale est "nombre de lignes x 2 -1".

Puis sortie

"Bouche gauche de l'étoile" "Bouche droite de l'étoile"

Divisez-le en 3 parties et calculez le nombre de chacune.

Une fois le nombre d'étoiles décidé, soustrayez-le de l'ensemble Divisez par 2 pour obtenir le nombre de bouches extérieures.

C'est devenu une telle fonction.

def star(n):
    tmp = n*2-1
    for i in range(n):
        s = ((i+1)*2-1)
        k = (tmp - s)//2
        res = 'bouche'*k + '★'*s + 'bouche'*k
        print(res)
        
star(5)

Réponse avancée

Je pense qu'il faudra du temps aux utilisateurs avancés pour le résoudre.

Premièrement, lorsque le nombre de lignes saisies est impair Le processus change lorsque le nombre est pair.

En haut et en bas du diamant Notez que le processus va changer.

«Embouchure gauche du diamant» «Cadre extérieur et bouche de ★ pour dessiner en forme de diamant» «Bouche droite du diamant»

Pensez séparément Si vous calculez le nombre de chaque pièce et connectez Vous pouvez atteindre la bonne réponse.

Considérez le nombre en premier dans la branche conditionnelle de l'instruction if Considérez une ligne de caractères à afficher.

Vous pouvez dessiner une étoile avec un code comme celui-ci.


def star(n):
    for i in range(n):
        s = (i+1)*2-1        
        k = (i-n//2) if (i+1>n//2) else (n - s)//2
        w = (n-(k*2)-2) if (i+1>n//2) else (i*2 if n%2==0 else i*2-1) 
        res = 'bouche'*k
        if (i+1)==1 or (i+1)==n:
            res += '★★' if n%2==0 else '★'
        else:
            res += '★' + 'bouche'*w + '★'
        res +='bouche'*k
        print(res)

Puisqu'il s'agit d'un exemple de référence, il est correct s'il y a un résultat.

Résumé

Comment était-ce?

L'idée de la programmation Êtes-vous venu?

Je voudrais continuer à le faire Pour ceux qui souhaitent améliorer leur programmation Veuillez essayer de le résoudre.

Eh bien.

Informations sur l'auteur

HP d'Otsu py: http://www.otupy.net/

Youtube: https://www.youtube.com/channel/UCaT7xpeq8n1G_HcJKKSOXMw

Twitter: https://twitter.com/otupython

Recommended Posts

Cours d'amélioration de la programmation 1
Cours d'amélioration de la programmation 2
Cours d'amélioration de la programmation 4: Pixel Logic
Programmation Feces Gorua
Programmation graphique