Dragon Curve met behulp van Python (2 / 3 stap)

Stap 2: Het programma

In deze stap zal ik uitleggen van elk onderdeel van het programma. Een volledig becommentarieerde versie is beschikbaar op de bodem.

Voorbereiding-

Om te beginnen moet er een paar dingen:

 import turtle 

De schildpad module, die we gebruiken zullen om weer te geven van de rechten en de linksen die we genereren geïmporteerd. Je ermee te trekken door opdrachten te geven aan de 'turtle', die over het scherm beweegt, een streep. Deze module is nuttig voor onze doeleinden aangezien u kunt gemakkelijk vertellen de schildpad naar rechts of links of doorgaan zonder om te berekenen waar u lijnen.

 r = 'r' l = 'l' 

Hier maken we variabelen r en l en ze hun juiste tekens toewijzen. Deze stap is niet echt nodig omdat u het net in het programma als een string schrijven kon, maar ik geloof het programma stromen gemakkelijker met behulp van variabelen in plaats van tekenreeksen.

 old = r new = old 

Dit stelt zowel oud, die is de laatste iteratie gegenereerd, en nieuw, de iteratie wordt gegenereerd, naar een rechts. Oude is ingesteld op rechts, want dat is de eerste iteratie dat alle van hen zijn gebaseerd off van. Nieuw is ook ingesteld op rechts enkel voor het geval dat de eerste iteratie zij gevraagd. In dat geval zal het niet iets genereren en onmiddellijk nieuwe afdrukken.

 iteration=int(input('Enter iteration:'))length=int(input('Enter length of each segment:')) pencolor=input('Enter pen color:') bgcolor=input('Enter background color:') 

Dit blok code neemt in elk van de gebruikers keuzen, de iteratie te worden gegenereerd (iteratie), de lengte van elk segment dat maakt van de Dragon Curve (lengte), de kleur om te tekenen van de Curve in (pencolor) en de achtergrondkleur van het venster afbeeldingen schildpad (bgcolor). De lengte van het segment kunnen nuttig zijn bij het genereren van hogere iteraties als de de Curve buiten het scherm met te lang segmenten kunt uitbreiden. De laatste twee keuzes, de kleuren, zijn leuk om te spelen rond met mooie ontwerpen maken.

 cycle = 1 

Een bepaalde iteratie wordt gegenereerd door de opbouw van elke iteratie uit de eerste R, fietsen door sommige stappen om te krijgen de volgende dia telkens. Deze variabele bevat de huidige cyclus, zodat wij eerst toewijzen aan het de waarde 1.

Generatie-

Nu kunnen we beginnen met het genereren van de R en L patroon voor de gewenste iteratie:

 while cycle<iteration: 

Wij zullen blijven totdat de cyclus variabele vertelt ons dat we hebben bereikt aan iteratie hierom niet langer wordt minder dan het genereren van de volgende iteratie.

 new = (old) + (r) 

Dit is de eerste stap van het genereren van de volgende iteratie, het toevoegen van een recht op het einde van de laatste berg. Dit zullen we aan de nieuwe iteratie besparen.

 old = old[::-1] 

Deze verklaring is de tweede stap voltooid met behulp van een uitgebreide segment om de volgorde van de karakters in de oude iteratie koord. De syntaxis van deze tekenreeks snijden methode is [beginnen: einde: stap]. Uit de begin- en eind- en instelling stap laat op -1, staan de gehele tekenreeks schakelen rond.

 for char in range(0,len(old)): if old[char] == r: old = (old[:char])+ (l) + (old[char+1:]) elif old[char] == l: old = (old[:char]) + (r) + (old[char+1:]) 

Dit blok code schakelt alle rechten en linksen in de omgekeerde oude iteratie. Het is opgenomen in een for-lus die werkt voor elk van de tekens in de tekenreeks, het bereik wordt de lengte van de tekenreeks. Voor elk teken, is het aangeroepen vanuit de tekenreeks en getest. Als het is een recht, is het vervangen door een links door het gedeelte van de tekenreeks voor het teken, een links en de rest van de tekenreeks achter het teken toe te voegen. Anders, als het een links, dezelfde methode wordt gebruikt als vervanging van het teken met een recht.

 new = (new) + (old) 

Dit kost nieuw, die bestaat uit de oorspronkelijke oude plus een recht, en voegt de omgekeerde en geschakelde oude op het einde. Het resultaat wordt opgeslagen naar een nieuwe. De volgende iteratie is gegenereerd!

 old = new 

Door de nieuwe iteratie in oude wilt opslaan, kunt wij het de volgende cyclus te vinden de volgende iteratie.

 cycle = cycle + 1 

Deze cyclus wordt gedaan en dus we vooraf de cyclus-variabele. De tijdjelijn houdt het genereren van de volgende iteratie totdat zij ervan overtuigd is door de variabele van de cyclus voor het bereiken van de iteratie opgevraagd.

Weergave-

 printans = input('Display r/l form? (y/n):') if printans=='y': print(new) 

Vooral met de hogere iteraties is de string van rechten en linksen zo lang het onpraktisch en rommelig aan uitprinten. Deze code geeft de gebruiker een keuze. Duurt een Ja of geen antwoord op of de gebruiker wil dat het afgedrukt en, als het antwoord ja is, afdrukken nieuwe, waarin de laatste iteratie.

 turtle.ht() turtle.speed(0) turtle.color(pencolor) turtle.bgcolor(bgcolor) 

Hier stelt de schildpad graphics venster. We zijn begonnen door te verbergen van het pictogram van de schildpad en de animatie uitschakelen zodat het is sneller. Bovendien passen we de gebruiker gevraagde kleuren voor de tekening en de achtergrond.

 turtle.forward(length) 

Hier vertellen we de schildpad om vooruit te gaan de lengte van het segment, maken van de eerste lijn die alle rechten en linksen off van komen.

voor richting in range(0,len(new)): als nieuwe [char] == (r): turtle.right(90) for direction in range(0,len(new)): if new[char] == (r): turtle.right(90) turtle.forward(length) elif new[char] == (l): turtle.left(90) turtle.forward(length) Elif nieuwe [char] == (l): turtle.left(90)

Dit for-lus is vergelijkbaar met degene die overgestapt van alle rechten en linksen eerder in het programma. Het controleert elk teken in de reeks rechts-links en maak de schildpad rechtsaf als het is een linker- en als het een links. Na elke beurt gaat het ook vooruit de lengte van het gewenste segment tot het voltooien van de hoek. Op deze manier, zal het grafiek van de gehele reeks.

Gerelateerde Artikelen

Uitzetten van real-time gegevens van Arduino met behulp van Python (matplotlib)

Uitzetten van real-time gegevens van Arduino met behulp van Python (matplotlib)

Arduino is fantastisch als tussenpersoon tussen uw computer en een ruwe elektronische schakeling. Via de seriële interface, kunt u informatie ophalen uit sensoren bevestigd aan je Arduino. (U kunt ook informatie verzenden via de seriële interface te
Stock prijzen krijgen op Raspberry Pi (met behulp van Python)

Stock prijzen krijgen op Raspberry Pi (met behulp van Python)

Ik ben bezig met enkele nieuwe projecten waarbij voorraad prijsgegevens van het web, die zal worden bijgehouden en weergegeven via mijn Raspberry Pi ophalen. Ik wilde delen van de installatie op hoe dit te doen met behulp van Python.Deze korte Instru
Klinkers met behulp van Python tellen

Klinkers met behulp van Python tellen

Python is een high-level computerprogramma. In dit instructable, zal er stappen op hoe te tellen klinkers met behulp van variabelen met behulp van Python taal en programmeren. De demonstratie is een vraag die is ontleend aan de MITx: 6.00.1x Inleidin
Het opslaan van bestanden met behulp van Python

Het opslaan van bestanden met behulp van Python

In dit ondoorgrondelijke ik laten zien hoe het opslaan van bestanden met behulp van Python. Als je een Dropbox-account hebt, kun je uploaden using zulks sane programma en alleen maar naar die map te slaan. Als u wilt opslaan naar mijn dropbox typ ik
Eenvoudig als het verzenden van IoT sensor-waardes door SigFox en Intel Edison, met behulp van Python

Eenvoudig als het verzenden van IoT sensor-waardes door SigFox en Intel Edison, met behulp van Python

Ik had de kans, op een Intel IoT Hackaton gehouden bij Usine.io in Parijs, naast een Intel Edison Arduino board en een bos van Grove sensoren/actuatoren, tot ook het nieuwe bestuur van de Akene van Snootlab krijgen.Dankzij de Intel IoT jongens, Nicol
Experimenten in Geavanceerd Data Logging (met behulp van Python)

Experimenten in Geavanceerd Data Logging (met behulp van Python)

Er zijn veel gegevens loggen instructables, dus toen ik wilde bouwen een logboekregistratie-project van mijn eigen ik keek rond op een bos. Sommigen waren goed, sommige niet zo veel, dus heb ik besloten om mijn eigen aanvraag te nemen enkele van de b
Arduino aan MySQL met behulp van Python interface

Arduino aan MySQL met behulp van Python interface

hier is een korte tutorial die moet je opstaan en lopen interfacing van uw Adruino met een MySQL-database. Omwille van deze tutorial veronderstel ik dat u weet hoe u kunt instellen en gebruiken van MySQL. Deze tutorial niet veel Python ervaring verei
TweeToy met Raspberry pi met behulp van Python

TweeToy met Raspberry pi met behulp van Python

Ik heb een speeltje die spreekt van iemands tweets met behulp van de Raspberry Pi.Deze Toy vangsten bezwaar door afstandssensor en breng geluid (Tweet).De architectuur is zeer eenvoudig. Voor het verkrijgen van Tweets, alleen met behulp van twitter a
Tijd Lapse Batch Image manipulatie met behulp van Python

Tijd Lapse Batch Image manipulatie met behulp van Python

ik heb onlangs vond een koele Time Lapse app voor mijn telefoon, maar de bestanden moesten worden gedraaid en raakte een beetje te laten in een film. Ik schreef een Python-script om dat te doen, en ben die hier met u delen.Stap 1: Verzamel beelden ik
Knipperen van een aantal LEDs met behulp van Python Programming Language en Raspberry Pi

Knipperen van een aantal LEDs met behulp van Python Programming Language en Raspberry Pi

overzicht van stappenIn de eerste fase, zal ik slechts één LED installeren. Vervolgens downloaden mij naar de LED klasse python module die vertegenwoordigen één hardware LED. Ik zal lopen de LED klasse python module die LED knipperen. De eerste fase
Encryptie-algoritme gebaseerd op gelukkig getallen met behulp van Python 2.7

Encryptie-algoritme gebaseerd op gelukkig getallen met behulp van Python 2.7

De kerels van Hey, dus we gaan te maken van een algoritme, een fundamentele wiskunde-reeks en een beetje programmering.Voor de basics, laat me je vertellen wat gelukkig nummers zijn, de nummers die individuele cijfers plein voegt t/m 1.U kunt ga chec
Controle met behulp van Python SparkCore

Controle met behulp van Python SparkCore

De Milwaukee afkomstig was geselecteerd voor November 2014 Build nacht met Spark.io. Heb ik besloten dat dit de perfecte tool om te voltooien de verlichting van de controller voor de afkomstig was. De workshop gebieden zijn momenteel verdeeld in 7 ve
Configureren, gegevens lezen & kalibreren van het HMC5883L digitale kompas met behulp van Python

Configureren, gegevens lezen & kalibreren van het HMC5883L digitale kompas met behulp van Python

Net als in andere blogs bevat deze ook informatie die elders kan worden gevonden op het web. Ik net gestructureerd het zodat het makkelijk te gebruiken voor beginnende robot hobbyisten.Aansluiten van het kompas is heel simpel. Bij het monteren van de
Gezichtsdetectie met behulp van Python en OpenCV bibliotheek

Gezichtsdetectie met behulp van Python en OpenCV bibliotheek

Dit project zal de OpenCV bibliotheek en python gebruiken om de opsporing van het gezichtStap 1: Benodigdheden1. een Intel Edison Development Board2. een webcam, zullen we gebruik maken van de licht Golf LW-IC5003. Python en de openCV bibliotheek geï