[PYTHON] Programmierverbesserungskurs 1

Auch wenn Sie sich an die Grammatik der Programmiersprache erinnern Wie schreibt man Ich denke, es gibt viele Leute, die immer noch nicht verstehen.

Dies ist ein Programmierverbesserungskurs für solche Leute. Wenn Sie nachdenken möchten, stoppen Sie das Video Denken Sie an ein Programm.

Klicken Sie hier für das Kommentarvideo

Es tut mir leid, wenn es nicht angezeigt wird

Versuche einen Stern zu schreiben

Das Thema dieses Mal ist "versuche einen Stern zu schreiben". Lassen Sie uns die folgende Sternzeichnungsfunktion erstellen.


Bedingungen:
n =Anzahl der Zeilen
def star(n):
wird bearbeitet

Anfängerproblem

Zeichne n Sterne in der n-ten Stufe

Zum Beispiel

star(5)

Nach der Ausführung sieht es wie folgt aus Lassen Sie uns eine Funktion erstellen, die angezeigt werden kann.

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

Zwischenprobleme

"Zeichne einen Stern in n Schritten, um ein Dreieck zu bilden"

star(5) 

Mund Mund Mund Mund Mund Mund Mund Mund Mund Mund Mund Mund Mund Mund ★★★★★ Mund Mund ★★★★★★★ Mund ★★★★★★★★★

Erweiterte Probleme

"Zeichne einen Stern wie einen Diamanten in n Schritten"

star(9)

Mund Mund Mund Mund Mund Mund Mund Mund Mund Mund ★ Mund Mund Mund Mund ★ Mund Mund ★ Mund Mund ★ Mund Mund Mund Mund ★ Mund ★ Mund Mund Mund Mund Mund Mund ★ Mund ★ Mund Mund Mund Mund ★ Mund Mund Mund ★ Mund Mund ★ Mund Mund Mund Mund ★ Mund Mund Mund Mund Mund Mund Mund Mund Mund

star(10)

Mund Mund Mund Mund Mund Mund Mund Mund Mund ★ Mund Mund ★ Mund Mund Mund Mund ★ Mund Mund Mund ★ Mund Mund ★ Mund Mund Mund Mund Mund Mund ★ Mund ★ Mund Mund Mund Mund Mund Mund Mund ★ ★ Mund Mund Mund Mund Mund Mund Mund ★ Mund ★ Mund Mund Mund Mund Mund Mund ★ Mund Mund Mund ★ Mund Mund Mund ★ Mund Mund Mund ★ Mund Mund ★ Mund Mund Mund Mund Mund Mund Mund Mund Mund

Lassen Sie uns jetzt darüber nachdenken.

Anfängerantwort

Zunächst können Sie die Zeichen mit der Funktion "Drucken" drucken.

Weil es in der n-ten Stufe n Sterne gibt Weil sich die Nummer jedes Mal ändert

Um diese Art der Wiederholung zu tun Verwenden Sie die Anweisung for.

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

Mit der Funktion range Sie können Alternativen zu Zahlen generieren.

Die Zahlen beginnen bei 0, also addieren Sie 1 zu ihnen.

In Python, wenn es um Charaktere geht Weil Sie Wiederholungen mit * ausdrücken können Verwenden Sie die Funktion "Drucken", um Zeichen für "n" Schritte zu drucken Wenn Sie es anzeigen, ist es abgeschlossen.

Zwischenantwort

Ermitteln Sie zunächst den Gesamtbetrag anhand der Anzahl der als Argument eingegebenen Zeilen. Die Anzahl der in einer Pyramidenform ausgegebenen Sterne beträgt "Anzahl der Zeilen x 2 -1".

Dann ausgeben

"Der Mund auf der linken Seite des Sterns" Rechter Mund des Sterns

Teilen Sie es in 3 Teile und berechnen Sie die Anzahl von jedem.

Sobald die Anzahl der Sterne festgelegt ist, subtrahieren Sie sie vom Ganzen Teilen Sie durch 2, um die Anzahl der äußeren Münder zu erhalten.

Es wurde eine solche Funktion.

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

Erweiterte Antwort

Ich denke, es wird einige Zeit dauern, bis fortgeschrittene Benutzer das Problem gelöst haben.

Erstens, wenn die Anzahl der eingegebenen Zeilen ungerade ist Der Prozess ändert sich, wenn die Zahl gerade ist.

Oben und unten am Diamanten Beachten Sie, dass sich der Prozess ändert.

Linker Mund des Diamanten Äußerer Rahmen und Mund von ★ zum Zeichnen in Rautenform Rechter Mund des Diamanten

Denken Sie getrennt Wenn Sie die Anzahl der einzelnen Teile berechnen und verbinden Sie können die richtige Antwort erreichen.

Betrachten Sie die Nummer zuerst im bedingten Zweig der if-Anweisung Betrachten Sie die Zeichen für eine Zeile, die ausgegeben werden soll.

Mit einem solchen Code können Sie einen Stern zeichnen.


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 = 'Mund'*k
        if (i+1)==1 or (i+1)==n:
            res += '★★' if n%2==0 else '★'
        else:
            res += '★' + 'Mund'*w + '★'
        res +='Mund'*k
        print(res)

Da es sich um ein Referenzbeispiel handelt, ist es richtig, wenn ein Ergebnis vorliegt.

Zusammenfassung

Wie war es?

Die Idee der Programmierung Bist du mitgekommen?

Ich würde es gerne weiter machen Für diejenigen, die ihre Programmierung verbessern möchten Bitte versuchen Sie es zu lösen.

Na dann.

Informationen zum Autor

HP von Otsu py: http://www.otupy.net/

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

Twitter: https://twitter.com/otupython

Recommended Posts

Programmierverbesserungskurs 1
Programmierverbesserungskurs 2
Programmierverbesserungskurs 4: Pixellogik
Kot Gorua Programmierung
Grafikprogrammierung