For Beginners - Mein erstes Programm

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Benutzeravatar
skaterdomi
User
Beiträge: 12
Registriert: Dienstag 7. Dezember 2004, 16:48

For Beginners - Mein erstes Programm

Beitragvon skaterdomi » Mittwoch 8. Dezember 2004, 18:01

ich habe ein KLEINES python-zeichenprogramm entwickelt.
es ist für die leute gedacht, die wie ich gerade erst mit er pythonprogrammierung begonnen haben.

es ist ziemlich lang,weil nicht viele definitionen vorkommen, aber es ist ja auch mein 1. progi.

Code: Alles auswählen

from turtle import *
from random import randrange

def quadrat():
    forward(80)
    left(90)
    forward(80)
    left(90)
    forward(80)
    left(90)
    forward(80)
    left(90)

def dreieck():
    forward(80)
    left(120)
    forward(80)
    left(120)
    forward(80)
    left(120)

def rechteck():
    forward(80)
    left(90)
    forward(30)
    left(90)
    forward(80)
    left(90)
    forward(30)
    left(90)

def muster():
    forward(randrange(10,100))
    left(randrange(10,100))
    forward(randrange(10,100))
    left(randrange(10,100))
    forward(randrange(10,100))
    left(randrange(10,100))
    forward(randrange(10,100))
    left(randrange(10,100))
    forward(randrange(10,100))
    left(randrange(10,100))
    forward(randrange(10,100))
    left(randrange(10,100))
    forward(randrange(10,100))
    left(randrange(10,100))
    forward(randrange(10,100))

def achteck():
    forward(50)
    left(45)
    forward(50)
    left(45)
    forward(50)
    left(45)
    forward(50)
    left(45)
    forward(50)
    left(45)
    forward(50)
    left(45)
    forward(50)
    left(45)
    forward(50)
    left(45)

print "DAS IST MEIN KLEINES ZEICHENPROGRAMM!!!"
print "---------------------------------------"
print "---------------------------------------\n"

user = raw_input("Wie heisst du?\n")
print "Hallo %s!" %user
print ""

frage1 = raw_input("Willst du etwas zeichnen? ja/nein?\n")
print ""
def spiel():
    if frage1 != "ja":
        print "OK!\nAuf Wiedersehen!"

    if frage1 == "ja":
        print "In welcher Farbe möchtest du zeichnen?"
        print "Für blau gib 1 ein."
        print "Für rot gib 2 ein."
        print "Für grün gib 3 ein."
        print "Für gelb gib 4 ein."
        frage2 = raw_input()
        if frage2 == "1":
            color("blue")
            print "Du hast die Farbe BLAU gewählt.\n"
        if frage2 == "2":
            color("red")
            print "Du hast die Farbe ROT gewählt.\n"
        if frage2 == "3":
            color("green")
            print "Du hast die Farbe GRÜN gewählt.\n"
        if frage2 == "4":
            color("yellow")
            print "Du hast die Farbe GELB gewählt.\n"

    if frage1 == "ja":
        print "Mit welcher Dicke möchtest du malen?"
        print "Für DÜNN gib 1 ein."
        print "Für DICK gib 2 ein."
        print "Für SEHR DICK gib 3 ein."
        frage3 = raw_input()
        if frage3 == "1":
            width(5)
            print "Du hast die Dicke DÜNN gewählt.\n"
        if frage3 == "2":
            width(10)
            print "Du hast die Dicke DICK gewählt.\n"
        if frage3 == "3":
            width(30)
            print "Du hast die Dicke SEHR DICK gewählt.\n"

    if frage1 == "ja":
        print "Wie schnell möchtest du malen?"
        print "Für LANGSAM gib 1 ein."
        print "Für SCHNELL gib 2 ein."
        frage5 = raw_input()
        if frage5 == "2":
            tracer(0)
            print "Du möchtest SCHNELL zeichnen.\n"
        if frage5 == "1":
            tracer(1)
            print "Du möchtest LANGSAM zeichen.\n"

    if frage1 == "ja":
        print "Was möchtest du zeichnen?"
        print "Für ein Quadrat gib 1 ein."
        print "Für ein Dreieck gib 2 ein."
        print "Für ein Rechteck gib 3 ein."
        print "Für ein seltsames Muster gib 4 ein."
        print "Für ein Achteck gib 5 ein."
        frage4 = raw_input()
        if frage4 == "1":
            quadrat()
            print "Das ist aber ein schönes Quadrat, %s.\n" %user
        if frage4 == "2":
            dreieck()
            print "Das ist aber ein schönes Dreieck, %s.\n" %user
        if frage4 == "3":
            rechteck()
            print "Das ist aber ein schönes Rechteck, %s.\n" %user
        if frage4 == "4":
            muster()
            print "Das ist aber ein schönes Muster, %s.\n" %user
        if frage4 == "5":
            achteck()
            print "Das ist aber ein schönes Achteck,%s.\n" %user

    if frage1 == "ja":
        print "Möchtest du deine bisherige Zeichnung löschen? ja/nein?"
        frage7 = raw_input()
        if frage7 == "ja":
            reset()
            print "Die Zeichnung wurde gelöscht."

    if frage1 == "ja":
        print "Möchtest du noch etwas zeichnen? ja/nein?"
        frage6 = raw_input()
        if frage6 == "ja":
            spiel()
        if frage6 != "ja":
            print "OK!\nAuf Wiedersehen."
           
spiel()
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Beitragvon mawe » Mittwoch 8. Dezember 2004, 18:08

Hi!

Nicht schlecht. Mein erstes Programm war nicht so lange :wink:
Während Du Python lernst, kannst Du es ja nach und nach verbessern.
Viel Spaß!

Gruß, mawe
Benutzeravatar
skaterdomi
User
Beiträge: 12
Registriert: Dienstag 7. Dezember 2004, 16:48

Beitragvon skaterdomi » Mittwoch 8. Dezember 2004, 18:29

eine gute idee!!
dann kann ich immer mehr sachen einbauen!

und wenn ich dann erst mal die gui-programmierung beherrsche, dann gibt es ja unendlich verbesserungen!
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Mittwoch 8. Dezember 2004, 19:26

Hi skaterdomi,

schönes erstes Programm :)


Ich hätte da gleich einen Verbesserungsvorschlag. Bei den Geometrischen Figuren, hast Du immer Wiederhohlungen von gleichen Sequenzen von Befehlen. Das lässt sich sehr schön mit Schleifen verkürzen.

z.B. könnte man aus:

Code: Alles auswählen

def quadrat():
    forward(80)
    left(90)
    forward(80)
    left(90)
    forward(80)
    left(90)
    forward(80)
    left(90)


Code: Alles auswählen

def quadrat():
    for i in xrange(4):
        forward(80)
        left(90)

machen.

Du könntest dann auch noch z.B. mit Argumenten die Grösse des Quadrats angeben:

Code: Alles auswählen

def quadrat(size=80):
    for i in xrange(4):
        forward(size)
        left(90)



Gruß

Dookie

Code: Alles auswählen

#!/usr/bin/env python
import this
Benutzeravatar
skaterdomi
User
Beiträge: 12
Registriert: Dienstag 7. Dezember 2004, 16:48

Beitragvon skaterdomi » Mittwoch 8. Dezember 2004, 20:20

danke für den tipp!
werde ich gleich mal machen!!!!!
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Beitragvon mawe » Mittwoch 8. Dezember 2004, 20:27

Hi!

@Dookie:
War zwar nur ein kleiner Verbesserungsvorschlag, aber lass skaterdomi doch selbst tüfteln :wink:

Gruß, mawe
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Mittwoch 8. Dezember 2004, 21:10

Hi mawe,

wollte skaterdomi nur mal etwas anstupsen und 4x die gleiche Anweisungsfolge kann ich einfach nicht unkommentiert stehen lassen ;)


Gruß

Dookie

Code: Alles auswählen

#!/usr/bin/env python
import this
Benutzeravatar
fs111
User
Beiträge: 170
Registriert: Samstag 15. November 2003, 11:42
Kontaktdaten:

Beitragvon fs111 » Mittwoch 8. Dezember 2004, 21:56

Ich warte jetzt schon auf den Dookie-Einzeiler, der skaterdomis Programm vollständig ersetzt ;)

fs111
Pydoc-Integration in vim - Feedback willkommen: http://www.vim.org/scripts/script.php?script_id=910
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Donnerstag 9. Dezember 2004, 12:48

fs111 hat geschrieben:Ich warte jetzt schon auf den Dookie-Einzeiler, der skaterdomis Programm vollständig ersetzt ;)

Natürlich mit lambda, LCs, Generator Expressions usw 8)
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
fs111
User
Beiträge: 170
Registriert: Samstag 15. November 2003, 11:42
Kontaktdaten:

Beitragvon fs111 » Donnerstag 9. Dezember 2004, 19:00

Leonidas hat geschrieben:
fs111 hat geschrieben:Ich warte jetzt schon auf den Dookie-Einzeiler, der skaterdomis Programm vollständig ersetzt ;)

Natürlich mit lambda, LCs, Generator Expressions usw 8)


Das versteht sich ja wohl von selber.

:D

fs111
Pydoc-Integration in vim - Feedback willkommen: http://www.vim.org/scripts/script.php?script_id=910
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Donnerstag 9. Dezember 2004, 19:13

Na gut, dann steuere ich noch etwas mehr oder weniger sinnvolles bei:
Ich vermeide sowas wie from Modul import *, denn das überscheibt ohne zu murren auch builtins. Ich nutze fast immer import Modul, dann habe ich auch noch eine schöne Namespace-Ordnung und kann mit dir() erkennen was wo dazugehört.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
fs111
User
Beiträge: 170
Registriert: Samstag 15. November 2003, 11:42
Kontaktdaten:

Beitragvon fs111 » Donnerstag 9. Dezember 2004, 20:26

Leonidas hat geschrieben:Na gut, dann steuere ich noch etwas mehr oder weniger sinnvolles bei:
Ich vermeide sowas wie from Modul import *, denn das überscheibt ohne zu murren auch builtins. Ich nutze fast immer import Modul, dann habe ich auch noch eine schöne Namespace-Ordnung und kann mit dir() erkennen was wo dazugehört.


Das ist eigentlich eine richtiger Ansatz, nur kann einen das bei manchen Modulen, wie z.B. den xml-Moulen ganz schön Wahnsinnig machen, vorallem, wenn man dann noch mit xpath-Ausdrücken hantiert, wird das sehr schnell sehr unhandlich. Ich denke man sollte da nicht generalisieren.

fs111
Pydoc-Integration in vim - Feedback willkommen: http://www.vim.org/scripts/script.php?script_id=910
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Beitragvon mawe » Donnerstag 9. Dezember 2004, 20:27

Hi Leonidas!

Das hat skaterdomi bei random eh gemacht. Bei turtle ist die Gefahr die Du angesprochen hast wohl sehr gering :D

Gruß, mawe
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Donnerstag 9. Dezember 2004, 21:22

mawe hat geschrieben:Das hat skaterdomi bei random eh gemacht. Bei turtle ist die Gefahr die Du angesprochen hast wohl sehr gering :D

Stimmt, das schon. Aber sowas ist irgendwie... schwach: from wxPython import * (oder um es noch lustiger zu gestallten: from wx import *)
Aber so zu schätzen kann schon mal danebengehn, und dann wundert man sich warum open() nicht das tut was man will ;)

Besonders lustig finde ich die Möglichkeit das Programm time.py zu nennen, und ein import time machen und sich wundern warum es nicht geht :D
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Donnerstag 9. Dezember 2004, 22:37

Leonidas spricht da aus eigener Erfahrung ;)
Es ginge aber auch ein

Code: Alles auswählen

import turtle as Schildkroete

aber bei ein oder zwei Modulen, deren Exporte bekannt sind darf man ruhig ein from modul import * verwenden, Besonders wenn der Modulname recht lang ist oder man ohnehin fasst alle importierten Klassen, Funktionen und sonstiges verwendet. Das Modul math oder das Modul operator sind dafür gute Beispiele.


Gruß

Dookie

Code: Alles auswählen

#!/usr/bin/env python
import this

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder