Dragon kurva med Python (2 / 3 steg)

Steg 2: Programmet

I detta steg kommer jag att förklara varje del av programmet. Ett fullt Kommenterad version är tillgänglig längst ned.

Förberedelse-

Att börja måste vi ha några saker:

importera sköldpadda

Detta importerar modulen sköldpadda, som vi kommer att använda att Visa rättigheter och vänstervågor vi genererar. Du använder det Rita genom att ge kommandon till turtle, vilket rör sig om skärmen, dra en linje. Denna modul är användbara för våra ändamål som du lätt kan tala om för sköldpaddan att sväng höger eller vänster eller gå vidare utan att behöva beräkna var du vill placera linjer.

r = 'r'
l = 'l'

Här skapar vi variabler r och l och tilldela dem deras lämpliga tecken. Detta steg är inte verkligt nödvändig eftersom du kunde bara skriva det i programmet som en sträng, men jag tror programmet flödena lättare använda variabler i stället för strängar.

gamla = r
ny = gamla

Detta anger både gamla, som är den senaste iterationen genereras, och nya, iteration som genereras, till en höger. Gamla ligger till höger eftersom det är den första upprepningen att alla av dem är baserade bort av. Nya ligger också till höger ifall den första iterationen det efterfrågades. I så fall kommer det inte generera något och omedelbart skriva ut nya.

iteration = int (input ("Ange iteration:')) längd = int (input (" ange längd på varje segment :'))
pennfärg = input (' Skriv in färg: ")
bgcolor = input (' Skriv in bakgrundsfärg: ")

Detta block av kod tar i alla användare val, iteration vara genererade (iteration), längden på varje segment som gör upp Dragon kurvan (längd), färgen att Rita kurvan i (pennfärg) och bakgrundsfärg i fönstret sköldpadda grafik (bgcolor). Segmentet längd kan vara användbart när du genererar högre iterationer som den kurvan kan utöka utanför skärmen med för lång segment. De två sista val, färger, är roliga att leka med för att göra vackra mönster.

Cycle = 1

En viss iteration genereras genom att bygga upp varje iteration från den första R, cykling genom några steg för att få nästa varje gång. Denna variabel håller den nuvarande cykeln, så att vi först tilldela det värdet 1.

Generation-

Nu kan vi börja generera R och L mönstret för den önskade iterationen:

medan cykeln < iteration:

Vi kommer att fortsätta generera nästa iteration tills variabeln cykel berättar vi har nått till iteration som inte längre är mindre än det begärt.

ny = (gamla) + (r)

Detta är det första steget för att generera nästa iteration, att lägga till en ända till slutet av den förra. Vi kommer att spara detta till den nya iterationen.

gamla = gamla [:: -1]

Detta uttalande avslutar det andra steget med en längre bit för att vända på tecken i strängen gamla iteration. Syntaxen för strängen skivning metod är [börjar: slutet: steg]. Lämna bort begin och end och inställningen steg-1, gör hela strängen växla runt.

för röding i range(0,len(old)):
om gamla [tecken] == r:
gamla = (old[:char]) + (l) + (old[char+1:])
Elif gamla [tecken] == l:
gamla = (old[:char]) + (r) + (old[char+1:])

Detta kodblock växlar alla rättigheter och vänstervågor i den omvända gamla iterationen. Den finns i en for-loop som fungerar för varje tecken i strängen, bergskedjan strängalängden. För varje tecken, det kallas från strängen och testade. Om det är en rättighet, skall det ersättas med en vänster genom att lägga till del av strängen innan tecknet, en vänster och resten av strängen efter tecknet. Annars om det är en vänster, används samma metod för att ersätta tecknet med rätt.

ny = (ny) + (gamla)

Detta tar nya, vilket är den ursprungliga gammalt plus en rättighet, och lägger till den omvända och växlade gammalt på slutet. Resultatet sparas till nya. Nästa iteration har genererats!

gamla = ny

Genom att spara den nya iterationen i gamla, kan vi använda den nästa cykel att hitta nästa iteration.

Cycle = cykel + 1

Denna cykel är gjort och så vi avancera variabeln cykel. While loop håller genererar nästa iteration tills det är nöjd med cykeln variabeln att nå den iteration efterfrågades.

Display-

printans = input (' Visa r/l form? (y/n): ")
om printans == "y":
Print(New)

Speciellt med de högre iterationerna är strängen av rättigheter och vänstervågor så lång det är opraktiskt och kladdigt att skriva ut den. Denna kod ger användaren ett val. Det tar ett ja eller inget svar på om användaren vill det tryckt och, om svaret är ja, skriver ut nya, som innehar den slutliga iterationen.

Turtle.HT()
Turtle.Speed(0)
Turtle.Color(pencolor)
Turtle.bgcolor(bgcolor)

Här har vi satt upp fönstret sköldpadda grafik. Vi började genom att dölja ikonen sköldpadda och stänga av animeringen så det är snabbare. Dessutom tillämpar vi användaren begärt färger för ritningen och bakgrunden.

Turtle.Forward(length)

Här berätta vi sköldpaddan gå vidare segment längd, att göra den första raden som alla rättigheter och vänstervågor komma upp från.

för riktning i range(0,len(new)):
om nya [tecken] == (r):
Turtle.Right(90)
Turtle.Forward(length)
Elif nya [tecken] == (l):
Turtle.Left(90)
Turtle.Forward(length)

Detta for-loop liknar en som bytte alla rättigheter och vänstervågor tidigare i programmet. Det kontrollerar varje tecken i höger vänster sekvens och göra sköldpaddan sväng höger om det är en höger och vänster om det är en vänster. Efter varje tur går det också framåt önskat segment längd att slutföra vinkeln. På detta sätt kommer det diagram hela sekvensen.

Se Steg
Relaterade Ämnen

Digital bild Management - Del svaga Pics med Python

Tillbaka i dagar med film kosta det pengar varje gång du trycker på avtryckaren, nu "film" är gratis så tar vi ofta dubbletter om fokus, inramning eller några andra detaljer är avstängd. Ibland tar vi bilder från lite olika vinklar av zoom. Resu...

Urklipp kommunikation PC ↔ Pi med Python

Jag använda brukar min hallon-Pi på en delad windows-skrivbordet. Jag delar också en nätverksenhet med Pi. Detta är bra, men jag har fortfarande irritationen i Urklipp på datorn inte kommer till uttryck på Pi. Det kan vara plattformsoberoende apps ut...

Experiment i avancerade dataloggning (med Python)

Det finns en hel del uppgifter loggar instructables, så när jag ville bygga ett loggning projekt av min egen jag tittat runt på ett gäng. Några var bra, några inte så mycket, så jag bestämde mig att ta några av de bättre idéerna och göra min egen ans...

Citron Dragon Pasta med kyckling och kronärtskocka hjärtan

citron Dragon pasta med kyckling och kronärtskocka hjärtan är en krämig, sommar pastarätt utan gluten, mjölk eller soja.Det bygger på olivolja baserat majonnäs och kokosolja för sina krämig kvaliteter. Dragon, citron och kronärtskockor lägga en färsk...

Intellekten Edison Sun Station (UV och Temp) med Python #IntelMakerMx

Vi ska använda våra Intel Edison med en Arduino shield och en grove sköld för att ansluta så många sensorer som du vill.GitHub: https://github.com/Kurtz1993/iot-roadshowSteg 1: Kommunicera med våra Edison genom en seriell COM Första, låt oss kommunic...

Räkna vokaler med Python

Python är ett högnivå datorprogram. I detta instructable, blir det steg på hur man räknar vokaler med variabler med hjälp av Python-språket och programmering. Demonstrationen är en fråga som tas från MITx: 6.00.1x introduktion till datavetenskap och...

Plotly med Python

Jag snubblade nyligen, på Plotly, en vacker online datavisualisering system enligt en göra artikel. Det är överflödigt att säga att det finns olika artiklar som visar användningen av Plotly för Arduino, Raspberry Pi, etcetera.Tyvärr finns det ingen e...

LinkIt en - kommunikation med python

Hej Karl beslutsfattare!Mediateks nya styrelse, LinkIt en erbjuder stora möjligheter - GPS, WiFi, Bluetooth, GSM, utbyggbarhet med gpio, stark processor och mer. Men ibland måste du fortfarande bekvämligheten av python för parsning filer eller rita g...

Pyduino, gränssnitt Arduino med Python via seriell kommunikation

Lär dig hur gränssnittet arduino via seriell kommunikation med python med hjälp av pyduino biblioteket. Det finns några andra tutorials ute på instructables om hur gränssnittet arduino med python men de Visa inte dig hur man gör allt, där förhoppning...

Använda XML på Raspberry Pi med Python

Detta Instructable kommer att diskutera användningen av XML på ansökningar om Raspberry Pi. Steg ett täcker vad är XML och formatet för datastrukturer. Steg två täcker bygga och parsning av XML i Python och steg tre kommer att visa hur XML används so...

Hur man spara filer med Python

I detta outgrundlig jag visa hur man spara filer med Python. Om du har ett Dropbox konto, kan du överföra till den användande den här sane program och bara spara till mappen. Om du vill spara till min dropbox typ jag /Users/WilliamMann/DropboxSteg 1:...

Raspberry pi + Openenergymonitor + PLC Panasonic med Python via Ethernet

Du vill ansluta en Panasonic PLC med Openenergymonitor plattform för övervakning, i detta fall med python inbäddade i en Rasberry Pi som har en webbserver som publicerar Emoncms.PLC Panasonic FPX C14 RSpänning läsa med AFPX modul A21 (2 ingång och 1...

Hur du kommer igång med python.

Så du tror på dig själv, besätta de kodning dudes säker är cool! Eller kanske du är en kodning guru och bara vill lära sig ett annat språk för att skryta om i källaren mödrar? Hur väl du har valt rätt språk. Python är ett av de enklaste och enkla spr...

Filen skapar med Python programmering

Ett användbart verktyg i många automatiserade program är möjligheten att öppna befintliga filer redigera dem och spara resultaten. I många fall exporteras raw-data av enhetens data insamling till en textfil. Så hur kan du skapa eller ändra en text ar...

Styra Arduino med python based web API (ingen php)

I denna guide kommer jag visa dig hur att kontrollera din arduino enhet från en webbsida! Efteråt, jag ska visa dig hur man styr din arduino från din mobila enhet och även skapa en webb-baserad API för att styra din arduino från din webbsida med andr...

Dragon ägg med stativ

en dragon ägg med stativ jag gjortDet var lätt och billigt...

Rita en Baby Dragon tee med min Paint program

Jag ville Rita en baby drake med min färg programvara som är gratis. Ladda hem det här. http://mypaint.intilinux.com/På programvarans hemsida njöt jag tittar på konstnärens Galleri fyllt med ritningar från hela världen däribland Japan. Wow! Där många...

Dragon huvudbonad med EL Wire

Detta är en Instructable om hur man gör en dragon huvudbonad av ark skum (glittrig och normal), fiske tråd, och strand lampor/EL wire (valfritt). Den totala kostnaden för att göra denna huvudbonad är ca 40 € (1,50€ / bit glittrande skum, 1 €/ stycke...

Boxhead återskapas med Python med Tkinter

Boxhead återskapas i Python från BenR på Vimeo.Det är en fantastiskt underhållande datorspel kallas Boxhead, där i huvudsak du och/eller en andra person slåss mot horder av attackerande Zombies och djävlar med olika vapen. För en dator science klass...