Ich habe versucht, den Code des Python-Anfängers (Schüler der Mittelstufe) zu überarbeiten.

Ein Python-Programm, das von einem Schüler geschrieben wurde. Es war zum ersten Mal gut gemacht. Zunächst können Sie einen beliebigen Schreibstil verwenden. Ich denke.

Um jedoch schwierige Programme erstellen zu können, ist es wichtig, Ihren Verstand zu organisieren und das Programm leicht verständlich zu machen. Ich habe dieses Programm als Beispiel umgeschrieben.

Originalprogramm

Ich konnte eine schöne Figur zeichnen. Es ist wunderbar, einen Weg zu finden, um bunte Farbtöne hervorzuheben. Ich habe es geschafft, indem ich die Bedingungen der if-Anweisung und der Berechnungsformel sorgfältig geprüft habe.

number = int(input("Wie viele Kreise zeichnen Sie?"))
R = 1.0
G = 0.0
B = 0.0
color = 0
from turtle import *
delay(5)
shape("turtle")
for i in range(number):
    color = int(360/number*i)
    if color <= 60:
        R = 1.0
        G = color/60
        B = 0.0
    elif color <= 120:
        R = 2.0-color/60
        G = 1.0
        B = 0.0
    elif color <= 180:
        R = 0.0
        G = 1.0
        B = color/60-2.0
    elif color <= 240:
        R = 0.0
        G = 4.0-color/60
        B = 1.0
    elif color <= 300:
        R = color/60-4.0
        G = 0.0
        B = 1.0
    elif color <= 360:
        R = 1.0
        G = 0.0
        B = 6.0-color/60

    pencolor(R,G,B)
    circle(100)
    left(360/number)
done()

Ausführungsergebnis lessen_turtle.png

Beginnen Sie mit dem Kochen

Import bewegt sich zuerst Der Teil zum Ermitteln des RGB-Werts ist funktionalisiert Ich kann die Regelmäßigkeit der Formel in der if-Anweisung nicht sehen. Ich denke, es wurde durch Versuch und Irrtum gemacht. In einen regulären Ausdruck geändert, der das gleiche Ergebnis liefert. Der bedingte Ausdruck der if-Anweisung enthält =, aber das Ergebnis ändert sich nicht, selbst wenn = entfernt wird. Farbe Wenn man bedenkt, dass der Bereich zwischen 0 und 359 liegt, erscheint es angemessener, nicht = hinzuzufügen.

import turtle

def color2rgb(color):
    if color < 60:
        R = 1.0
        G = color/60
        B = 0.0
    elif color < 120:
        R = 1.0-(color-60)/60
        G = 1.0
        B = 0.0
    elif color < 180:
        R = 0.0
        G = 1.0
        B = (color-120)/60
    elif color < 240:
        R = 0.0
        G = 1.0-(color-180)/60
        B = 1.0
    elif color < 300:
        R = (color-240)/60
        G = 0.0
        B = 1.0
    elif color < 360:
        R = 1.0
        G = 0.0
        B = 1.0-(color-300)/60
    return(R, G, B)

def draw(number):
    turtle.delay(5)
    turtle.shape("turtle")
    for i in range(number):
        color = int(360 / number * i)
        turtle.pencolor(color2rgb(color))
        turtle.circle(100)
        turtle.left(360 / number)
    turtle.done()

number = int(input("Wie viele Kreise zeichnen Sie?"))
draw(number)

des Weiteren

Wenn Sie sich color2rgb () genau ansehen, haben die Werte von R, G und B dieselbe Form mit einer Phasenverschiebung von 120. Sie können die if-Anweisung auch stoppen und eine Tabelle erstellen. Aber wenn Sie es in eine Tabelle schaffen, wird es etwas weniger lesbar sein. Lass uns das machen.

import turtle

def color2r(color):
    color = color % 360
    if color < 60:
        R = 1.0
    elif color < 120:
        R = 1.0-(color-60)/60
    elif color < 180:
        R = 0.0
    elif color < 240:
        R = 0.0
    elif color < 300:
        R = (color-240)/60
    elif color < 360:
        R = 1.0
    return R

def color2rgb(color):
    return color2r(color), color2r(color-120), color2r(color-240)

def draw(number):
    turtle.delay(5)
    turtle.shape("turtle")
    for i in range(number):
        color = int(360 / number * i)
        turtle.pencolor(color2rgb(color))
        turtle.circle(100)
        turtle.left(360 / number)
    turtle.done()

number = int(input("Wie viele Kreise zeichnen Sie?"))
draw(number)

Sonderedition

Als ich mir die Kommentare ansah, die ich erhalten hatte, schwoll das Bild an und ich erstellte eine Funktionstabellenversion. Ich weiß nicht, ob es leicht zu lesen ist, aber ich mag es.

import turtle

convert_func_table = [lambda x: 1.0, lambda x:1.0-x/60, lambda x:0, lambda x:0, lambda x:x/60, lambda x:1.0]

def convert(i,fine):
    return convert_func_table[i%6](fine)

def color2rgb(color):
    i, fine = divmod(color, 60)
    return (
        convert(i, fine),
        convert(i+4, fine),
        convert(i+2, fine),
    )

def draw(number):
    turtle.delay(5)
    turtle.shape("turtle")
    for i in range(number):
        color = int(360/number*i)
        turtle.pencolor(color2rgb(color))
        turtle.circle(100)
        turtle.left(360/number)
    turtle.done()

number = int(input("Wie viele Kreise zeichnen Sie?"))
draw(number)

Vielen Dank an K für die Bereitstellung des Programms.

Recommended Posts

Ich habe versucht, den Code des Python-Anfängers (Schüler der Mittelstufe) zu überarbeiten.
Ich habe versucht, den Authentifizierungscode der Qiita-API mit Python abzurufen.
Ich habe versucht, die String-Operationen von Python zusammenzufassen
[Python] Ein Schüler der Mittelstufe implementierte Perceptron und versuchte, Iris zu klassifizieren.
Programmieranfänger (Schüler der Mittelstufe) Optimieren Sie den erstellten Algorithmus
Ich habe versucht, die Entropie des Bildes mit Python zu finden
[Python] Ich habe versucht, die folgende Beziehung von Twitter zu visualisieren
Ich habe den Code geschrieben, um den Brainf * ck-Code in Python zu schreiben
Von null Python-Kenntnissen bis hin zur KI in der ersten Klasse der Junior High School
Ich habe versucht, die Effizienz der täglichen Arbeit mit Python zu verbessern
(Python) Ich habe versucht, 1 Million Hände zu analysieren ~ Ich habe versucht, die Anzahl der AA ~ zu schätzen
Ich habe versucht, die Beschleunigung von Python durch Cython zu verifizieren und zu analysieren
Ich habe versucht, die Standardrolle neuer Mitarbeiter mit Python zu optimieren
Ich habe versucht, die Filminformationen der TMDb-API mit Python abzurufen
Ich habe versucht, die Trapezform des Bildes zu korrigieren
Ich habe versucht, die Texte von Hinatazaka 46 zu vektorisieren!
Ich habe versucht, den unter "Abrufen von Bildern von der Flickr-API mit Python" (Teil 2) veröffentlichten Vorlagencode zu überarbeiten.
[Python] Ich habe versucht, das Mitgliederbild der Idolgruppe mithilfe von Keras zu beurteilen
Ich habe versucht, die Tweets von JAWS DAYS 2017 mit Python + ELK einfach zu visualisieren
Ich habe versucht, die 100-Yen-Lagerstätte von Rakuten-Pferderennen (Python / Selen) zu automatisieren.
Ich habe versucht, die Literatur des neuen Corona-Virus mit Python automatisch an LINE zu senden
Ich habe versucht, die in Python installierten Pakete grafisch darzustellen
Ich habe versucht zusammenzufassen, wie man Matplotlib von Python verwendet
Ich habe versucht, eine CSV-Datei mit Python zu berühren
Ich habe versucht, Soma Cube mit Python zu lösen
[Python] Ich habe versucht, die Top 10 der Lidschatten grafisch darzustellen
Ich habe versucht, die Spacha-Informationen von VTuber zu visualisieren
Ich habe versucht, den negativen Teil von Meros zu löschen
Ich habe versucht, das Problem mit Python Vol.1 zu lösen
Ich hatte das Gefühl, dass ich den Python-Code nach C ++ 98 portiert habe.
[Python] Ich habe versucht, Json von Tintenfischring 2 zu bekommen
Ich habe versucht, die Stimmen der Sprecher zu klassifizieren
Ich habe versucht, den Beispielcode des Ansible-Moduls auszuführen
Python-Übung 100 Schläge Ich habe versucht, den Entscheidungsbaum von Kapitel 5 mit graphviz zu visualisieren
mong - Ich habe versucht, den Code, der zufällig den Containernamen von Docker generiert, nach Python zu portieren. -
Die Kombinationsgenerierung von Python-Anfängern (Schüler der Mittelstufe) lag diagonal darüber (Kombinationsgenerierung durch rekursive Verarbeitung)
Ich habe versucht, die Verarbeitungsgeschwindigkeit mit dplyr von R und pandas von Python zu vergleichen
Beim 15. Offline-Echtzeitversuch habe ich versucht, das Problem des Schreibens mit Python zu lösen
[Pferderennen] Ich habe versucht, die Stärke des Rennpferdes zu quantifizieren
Ich habe versucht, das Bild mit Python + OpenCV "gammakorrektur" zu machen
Ich habe versucht zu simulieren, wie sich die Infektion mit Python ausbreitet
Ich habe versucht, mit TensorFlow den Durchschnitt mehrerer Spalten zu ermitteln
Ich habe versucht, den in Pandas häufig verwendeten Code zusammenzufassen
Ich habe versucht, die Mail-Sendefunktion in Python zu implementieren
[Maschinelles Lernen] Ich habe versucht, die Theorie von Adaboost zusammenzufassen
[Python] Ich habe versucht, Daten mit der API von Wikipedia zu sammeln
Ich habe versucht, die Unterschiede zwischen Java und Python aufzuzählen
Ich habe versucht, das lokale Minimum der Goldstein-Preis-Funktion zu bekämpfen
Ich habe versucht, das Python-Skript unter Windows 10 von 2.7.11 auf 3.6.0 zu ändern
Ich habe versucht, das Blackjack of Trump-Spiel mit Python zu implementieren
Ich habe versucht, das Problem von F02 zu lösen, wie man mit Python offline in Echtzeit schreibt
Ich schrieb einen Test in "Ich habe versucht, die Wahrscheinlichkeit eines Bingospiels mit Python zu simulieren".
Ich habe versucht, Python zu berühren (Installation)