Jump to content

Geany in W7


-Matthijs-

Recommended Posts

Ik ben begonnen met programmeren in Python. Omdat ik te koppig ben om Linux te gebruiken wil ik dat gewoon in W7 doen. Nu heb ik Python en Geany geïnstalleerd, maar vanuit Geany kan ik mijn code niet executen. Ik krijg dan de foutmelding 'Python is not recognized as an internal or external command, operable program or batch file.' Inmiddels heb ik een path in Windows aangepast zodat CMD Python weet te vinden (via CMD kan ik Python gebruiken), maar het is me veel te omslachtig om steeds CMD te moeten starten om een stukje code te proberen. Ik wil in Geany gewoon op F5 (execute) kunnen drukken. Een weekje terug heb ik het voor elkaar gekregen (volgens mij door in CMD iets te doen), maar nu werkt het helaas niet meer. Iemand die kan helpen? icon_mrgreen.gif

Link to comment
Delen op andere websites

Ik schreef mijn python scripts altijd in Notepad++, en als je je bestand opslaat met een .py-extensie dan kan je er toch gewoon op dubbelklikken en wordt het uitgevoerd? Al zal je waarschijnlijk een python cmd moeten opstarten als je uitvoer wilt zien.

Verder lees ik dat er een Python Plugin is voor Notepad++, dus dat kan je ook eens proberen.

Link to comment
Delen op andere websites

Linux installeren en gebruiken is helemaal niet zo lastig: de setup van Debian (wat ik je aanraad, als je niet te veel poespas wilt) heeft een grafische installatieoptie, waarbij je gewoon alles kunt afvinken en instellen zoals je gewend bent. Het enige wat je moet regelen is een aparte partitie (of niet-toegewezen hardeschijfruimte). Als je serieus wilt programmeren, raad ik je echt Linux aan.

Link to comment
Delen op andere websites

Programmeren kan ook gewoon op Windows, ik doe het tenminste al 4 jaar op Windows. Als je gewoon simpel en snel aan de gang wil met python raad ik Aptana Studio aan, dit is gewoon Eclipse waarbij diverse plugins (oa Python) is geïnstalleerd.

Als je graag Geany wil gebruiken kan je deze vraag ook op stackoverflow posten, maar je kan ook gewoon de CMD gebruiken. Die kan je gewoon open laten staan, en pijltje omhoog drukken voor het laatst gebruikte commando. Als je als een Pro wil programmeren zou ik sowieso niet zo vaak compilen, want bij grote projecten kan dat wel eens 3-10 minuten duren.

Link to comment
Delen op andere websites

Ik schreef mijn python scripts altijd in Notepad++, en als je je bestand opslaat met een .py-extensie dan kan je er toch gewoon op dubbelklikken en wordt het uitgevoerd? Al zal je waarschijnlijk een python cmd moeten opstarten als je uitvoer wilt zien.

Verder lees ik dat er een Python Plugin is voor Notepad++, dus dat kan je ook eens proberen.

Klopt, maar het gaat mij echt om het gemak waarmee het te gebruiken is. De plugin van Notepad++ werkt, maar voordat ik het script kan testen moet ik of dubbelklikken op het bestand, of vanuit Notepad browsen naar het bestand. En in beide gevallen vind ik dat één actie te veel, helemaal omdat het voorheen kon met één druk op de knop (F5).

Linux installeren en gebruiken is helemaal niet zo lastig: de setup van Debian (wat ik je aanraad, als je niet te veel poespas wilt) heeft een grafische installatieoptie, waarbij je gewoon alles kunt afvinken en instellen zoals je gewend bent. Het enige wat je moet regelen is een aparte partitie (of niet-toegewezen hardeschijfruimte). Als je serieus wilt programmeren, raad ik je echt Linux aan.

Linux vind ik echt drie keer niks... Op school moeten we ermee werken en ook op een eerdere opleiding hadden we Linux lessen. Ik snap ergens best waarom men er zo positief over is, maar het wordt waarschijnlijk pas interessant als je er op een bepaald niveau mee gaat werken. En zolang ik dingen moet doen die in Windows ook gewoon kunnen, blijf ik dat gebruiken. :puh:

Programmeren kan ook gewoon op Windows, ik doe het tenminste al 4 jaar op Windows. Als je gewoon simpel en snel aan de gang wil met python raad ik Aptana Studio aan, dit is gewoon Eclipse waarbij diverse plugins (oa Python) is geïnstalleerd.

Bedankt, ik zal eens naar Aptana Studio kijken. Ik hoef overigens niet per se met Geany te werken hoor, dat is gewoon wat we op school gebruiken.

Link to comment
Delen op andere websites

Even een ander vraagje... Ik moet een determinatie pagina maken. Aan de hand van een paar vragen die ik aan de gebruiker stel komt er dan een resultaat uit. Dit script moet in Python geschreven worden en moet in een .cgi bestandje komen (waar de webpagina dus ook in komt). Mijn onderwerp steekt wat ingewikkeld in elkaar, daarom even een simpel voorbeeld:

Stel je hebt de volgende vervoersmiddelen: eenwieler, step, fiets, auto, bus, vrachtwagen. In twee of drie vragen moet de gebruiker bij het voertuig zijn waar hij naar zoekt. Een eerste vraag zou bijvoorbeeld kunnen zijn: hoeveel wielen heeft het vervoersmiddel? In geval van minder dan twee blijven de eenwieler, step en fiets over, in geval van drie of meer blijven de auto, bus en vrachtwagen over. Uiteraard komt er dan nog een vervolgvraag om het nog meer te specificeren.

Ik kan in Python een script schrijven dat het bovenstaande doet, maar ik heb er nog moeite mee om het om te zetten naar een webpagina. Ik wil forms gebruiken (drop-down lists), en ik wil dus niet dat de gebruiker zelf moet typen. Op school is daar een kleine uitleg over geweest, maar dat is mij niet echt toereikend genoeg geweest. Iemand die misschien een goede tutorial weet of op een andere manier kan helpen?

Link to comment
Delen op andere websites

Je kunt als ik 't zo bekijk gewoon een HTML form (ik geloof dat je al bekend was met HTML) aanmaken met method="post" en action="script.cgi". In je Python script kun je het dan als 't goed is met de volgende code uitlezen:

form = cgi.FieldStorage()
fieldvalue = form['field'].value

Hoop dat dat je enigszins op weg helpt. :)

Link to comment
Delen op andere websites

Bedankt, daar ben ik inderdaad bekend mee. smile3.gif In principe is het geen probleem om in html een pagina te maken met forms. Stel ik heb dit:

<form action="">
<p>Hoeveel wielen heeft het voertuig?</p>
<select name="wielen">
<option value="1">1-2</option>
<option value="2">3-4</option>
<option value="3">5 of meer</option>
</select>
</form>
<form action="">
<p>Waar dient het voor?</p>
<select name="doel">
<option value="4">Transport van goederen</option>
<option value="5">Vervoer van passagiers</option>
<option value="6">Om in te scheuren</option>
</select>
</form>

Als de gebruiker kiest voor optie 2 (3-4) en optie 6 (om in te scheuren), dan moet daar als antwoord auto uit komen. Dat moet natuurlijk met IF statements, maar hoe kan ik dat ongeveer doen? Ik kan nu iets als dit maken...

aantalWielen = input('Hoeveel wielen heeft het voertuig?' " ")
if aantalWielen == '2':
print('Fiets')
else

...na de else zou ik dan een andere vraag kunnen stellen of zo. Maar in dit voorbeeld moet de gebruiker het antwoord zelf typen. Hoe zeg ik bij IF dat het antwoord uit de forms gebruik moet worden? Natuurlijk verwijs ik via de submit button wel naar het script dat uitgevoerd moet worden, maar ik heb even geen flauw hoe ik dit moet doen wanneer er meerdere forms ingevuld moeten worden... Moet ik meerdere if's onder elkaar zetten?

Snap je het? clown.gif

Link to comment
Delen op andere websites

Het is niet helemaal conform de standaarden, maar het moet wel werken (zorg er wel even voor dat je nog method="post" toevoegt). Let wel op dat de data uit beide forms nu apart wordt verzonden, of je moet dit inderdaad als vervolgvraag bedoelen. In dat geval moet je in je if-statement de tweede form printen, of desnoods de data naar een tweede script sturen, die dus de afhandeling van data uit je eerste form voorziet. Even grofweg hoe je het dus kunt aanpakken:

  • Optie 1
    • 1 bestand
    • if-statement waarin je verschillende cases van elkaar onderscheidt:
      • Kijk in welk stadium de gebruiker is.
      • Kijk bij de tweede tot de laatste pagina welke antwoorden zijn gegeven, en genereer op basis daarvan de volgende form of het antwoord.
      • Print de benodige form uit, of het antwoord, indien alle forms zijn doorlopen.

    [*]Optie 2

    • Meerdere bestanden
    • Data wordt gestuurd naar je tweede script d.m.v. het action="" element van een form.
    • In het tweede tot het laatste script kijk je welke antwoorden zijn gegeven, en genereer op basis daarvan de volgende form of het antwoord.

Ik heb zelf geen directe Python-ervaring, maar zo zou ik het aanpakken. Optie 1 is het mooist in mijn ogen, en ik denk dat dat je wel lukt.

Link to comment
Delen op andere websites

Bedankt voor de reacties, het is uiteindelijk gelukt. smile3.gif De code is behoorlijk lang, daarom hier een voorbeeld van wat ik gedaan heb:

HTML:

<form action="submit.cgi" method="get">
<p>Vraag 1</p>
<select name="form1">
<option value="1">Test 1</option>
<option value="2">Test 2</option>
</select>
<p>Vraag 2</p>
<select name="form2">
<option value="3">Test 3</option>
<option value="4">Test 4</option>
</select>
</form>

Script:

import cgi
import cgitb
print ('Content-type: text/html\n\n')
form = cgi.FieldStorage()
if form["form1"].value == '1' and form["form2"].value == '3':
print ('''
<head><meta http-equiv="refresh" content="0;URL='pagina.html'" /></head>
''')

Snel door naar de volgende vraag. puh2.gif Is er iemand die mij de for loop in simpele taal kan uitleggen? Ik heb uiteraard al gezocht op internet en in mijn boeken, maar de functie dringt nog niet echt tot me door. Hier even twee voorbeelden waarbij ik een for-loop moet gebruiken:

Gebruik een for loop om deze output te genereren

1|1|1**

3|9|27**

5|25|125**

7|49|343**

9|81|729**

Gegeven deze dict die de calorieën van enkele voedingsmiddelen bevat:

d = {"appel":80, "banaan":101, "bonen":278, "ei":79, "biefstuk":220}

Geef het totale aantal caloriën van deze maaltijd:

maaltijd = ["biefstuk", "ei", "bonen","bier","appel", "appel", "banaan"]

If en else spreken redelijk voor zich, je kunt zelfs als leek zien wat het doet. Maar die loop kan ik nog niet echt ontcijferen, ook niet met voorbeelden.

Link to comment
Delen op andere websites

Mijn kennis van Python dateert van 2 jaar terug dus kan je geen werkende code geven, maar ik kan het wel in woorden of pseudocode uitleggen.

De eerste vraag doe je zo:

Het eerste getal op een regel is het volgende oneven getal (startende bij 1). Het tweede getal op een regel is dat getal in het kwadraat, en het derde is dat getal tot de derde macht. In pseudo-code kan je dit zo schrijven (in een spoiler gezet voor mocht je het eerst zelf willen proberen):

for i in range {0..4}:
 getal = (2*i)+1
 print(getal + "|" + getal*getal + "|" + getal*getal*getal + "**\n")
end for

Ik snap wel niet goed of die verticale strepen en sterretjes een betekenis hebben. :7 Dit is één van de vele manieren hoe je het kan doen en je kan het nog veel optimaliseren. Je vervangt getal*getal en getal*getal*getal best door een power-functie. En je kan die print eventueel ook nog in een for-loop schrijven (de eerste keer is het getal1, de tweede keer getal2, ...).

Die tweede kan je ook met een forlus doen, gecombineerd met een dictionary. Hier moet je dus over elk woord van 'maaltijd' lopen en het corresponderende getal uit de dictionary 'd' opvragen. Hier ook weer de pseudo-code:

calorien = 0
for eten in maaltijd:
 calorien += d[eten]
end for
return calorien

Leuk dat je dit in je vrije tijd wilt leren! Mocht je nog vragen hebben, dan beantwoord ik die met plezier! :D

Edit: oh ik zie nu pas dat je een forlus uitgelegd wilt krijgen in plaats van het antwoord op die vragen. :puh: Een for lus 'loopt' eigenlijk over een reeks, waarbij hij een aantal instructies uitvoert op elk element van die reeks. In de eerste vraag zal de forlus dus over de reeks range {0..4} lopen. Hij bekijkt dus eens 0, eens 1, eens 2, eens 3 en eens 4. Deze waarde steekt die dan in de variabele i en dan kan je iets doen met i.

De tweede loopt over de reeks 'maaltijd', dus die bekijkt elke string in de lijst. Die string stopt die dan in de variabele 'eten', en dan doen we iets met eten.

Link to comment
Delen op andere websites

Een reactie plaatsen

Je kan nu een reactie plaatsen en pas achteraf registreren. Als je al lid bent, log eerst in om met je eigen account een reactie te plaatsen.

Gast
Op dit onderwerp reageren...

×   Je hebt text geplaatst met opmaak.   Opmaak verwijderen

  Only 75 emoji are allowed.

×   Je link is automatisch ingevoegd.   In plaats daarvan weergeven als link

×   Je vorige bewerkingen zijn hersteld.   Alles verwijderen

×   You cannot paste images directly. Upload or insert images from URL.

  • Recent actief   0 leden

    • Er zijn hier geen geregistreerde gebruikers aanwezig.
×
×
  • Create New...