Seite 1 von 7

Hilfe in Python! komme nicht mehr weiter...

Verfasst: Montag 27. April 2009, 15:09
von dynasty-warriors
hi ich habe ein problem und komme nicht mehr weiter....

ok hier die aufgabe:

Erstelle die folgenden Flagen als 80x50 Pixelgrafik:



also das erste ist ja einfach und das 2. auch! aber wie funktioniert das dritte??

die piratenflagge habe ich es so gemacht:

Code: Alles auswählen

print "P1"
print "# Schwarze Fahne"
anzahl_x = 20
anzahl_y = 10
print anzahl_x, 
print anzahl_y  
lauf_x = 0
lauf_y = 0
while lauf_y < anzahl_y:
    lauf_x = 0
    while lauf_x < anzahl_x:
        print "1",
        lauf_x = lauf_x + 1
    print     
    lauf_x = 0
    while lauf_x < anzahl_x:
        print "1",
        lauf_x = lauf_x + 1
    print
    lauf_y = lauf_y + 2
das war ja noch einfach!

aber wie funktioniert die restlichen flaggen?? zb. das karo..., oder schwarz weiß,... oder schwarz-weiß-schwarz???

ich habe herum gebastelt

nämlich schwarz weiß, schwarz weiß??

... ka ich komme nicht mehr weiter!

also hier

Code: Alles auswählen

print "P1" # P1 schreiben für Schwarzweißgrafik
anzahl_x = 20 # setze Anzahl der Spalten
anzahl_y = 10 # setze Anzahl der Zeilen
print anzahl_x, 
print anzahl_y  # Gib Zeilen und Spalten aus, wie in PBM-Dateien gefordert
lauf_x = 0 # Definiere Zaehlvariablen für Spalten
lauf_y = 0 # ... und Zeilen
while lauf_y < anzahl_y:  # Schleife zum Schreiben der Zeilen
    lauf_x = 0 # nach dem Schreiben einer Zeile lauf_x wieder auf 0 setzen
    while lauf_x < anzahl_x: # Schleife zum Spalten schreiben
        print "0", # 0 ohne Zeilenumbruch schreiben
        lauf_x = lauf_x + 1 # Zaehler um 1 erhoehen
    print  # Zeilenumbruch schreiben, da nach einer schwarzen noch eine weiße Zeile kommen soll
    lauf_x = 0 # Zaehlvariable wieder auf 0 setzen
    while lauf_x < anzahl_x: # noch eine Zeile schreiben, diesmal mit schwarzen Pixeln
        print "1", # 1 ohne Zeilenumbruch schreiben
        lauf_x = lauf_x + 1 # Zaehler für Spalten um 1 erhöhen
    print # Zeilenumbruch ausgeben
    lauf_y = lauf_y + 2 # Da nun zwei Zeilen geschrieben wurden (eine weiße, eine schwarze)
                        # muss die Zaehlvariable fuer die Zeilen um ZWEI erhoeht werden.

was muss ich ändern, damit ich ein karo flagge mache??

bitte hilft mir!!Bild

ok so sollte es sein, aber ich komme nicht mehr weiteer!! am besten ist es wenn ihr mir erklärt wie man die f1 flagge macht!

Verfasst: Montag 27. April 2009, 15:23
von EyDu
Mit for-Schleifen wird es einfacher.

Dein Bild kann man als nicht-angemeldeter Benutzer übrigens nicht sehen.

Eins
Zwei

Code: Alles auswählen

>>> for y in range(10):
...     for x in range(10):
...         print "0X"[(x+y) % 2],
...     print
...
0 X 0 X 0 X 0 X 0 X
X 0 X 0 X 0 X 0 X 0
0 X 0 X 0 X 0 X 0 X
X 0 X 0 X 0 X 0 X 0
0 X 0 X 0 X 0 X 0 X
X 0 X 0 X 0 X 0 X 0
0 X 0 X 0 X 0 X 0 X
X 0 X 0 X 0 X 0 X 0
0 X 0 X 0 X 0 X 0 X
X 0 X 0 X 0 X 0 X 0
>>>

Verfasst: Montag 27. April 2009, 15:33
von Twilo
Hallo,

auch die anderen beiden gehen viel kürzer

Code: Alles auswählen

In [9]: for i in range(anzahl_y):
   ....:     for j in range(anzahl_x):
   ....:         print "1",
   ....:     print
   ....:
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

In [10]: for i in range(anzahl_y):
   ....:     for j in range(anzahl_x):
   ....:         print "01"[((i%2))],
   ....:     print
   ....:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
ps. ich sehe überhaupt kein Bild

mfg
Twilo

Verfasst: Montag 27. April 2009, 15:44
von EyDu
Twilo hat geschrieben:ps. ich sehe überhaupt kein Bild
Musst es in eine Datei umleiten und als PGM speichern. Vermute ich jetzt mal so einfach, ohne es selber zu testen.

Code: Alles auswählen

>>> print "\n".join([" ".join(["1"]*15)]*10)
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Code: Alles auswählen

>>> print "\n".join([("1 "*15).strip()]*10)
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Code: Alles auswählen

>>> print "\n".join((("0 ", "1 ")[i%2]*15).strip() for i in range(10))
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
>>>

Verfasst: Montag 27. April 2009, 15:57
von dynasty-warriors
jop vielen dank! aber könnt ihr bitte mir das komplette zeigen???? das erste ist ja einfach, aber das mit den karos ist schwer oder?? köönnnt ihr mit biite die flagge mit zeigen?????

p.s. es sollte eine .py datei sein und ich werde es später in .pbm abgeben!

Re: Hilfe in Python! komme nicht mehr weiter...

Verfasst: Montag 27. April 2009, 15:59
von Dill
eydu hat dir die karos doch schon gemacht...
dynasty-warriors hat geschrieben:

Code: Alles auswählen

print "P1" # P1 schreiben für Schwarzweißgrafik
anzahl_x = 20 # setze Anzahl der Spalten
anzahl_y = 10 # setze Anzahl der Zeilen
print anzahl_x, 
print anzahl_y  # Gib Zeilen und Spalten aus, wie in PBM-Dateien gefordert
lauf_x = 0 # Definiere Zaehlvariablen für Spalten
lauf_y = 0 # ... und Zeilen
while lauf_y < anzahl_y:  # Schleife zum Schreiben der Zeilen
    lauf_x = 0 # nach dem Schreiben einer Zeile lauf_x wieder auf 0 setzen
    while lauf_x < anzahl_x: # Schleife zum Spalten schreiben
        print "0", # 0 ohne Zeilenumbruch schreiben
        lauf_x = lauf_x + 1 # Zaehler um 1 erhoehen
    print  # Zeilenumbruch schreiben, da nach einer schwarzen noch eine weiße Zeile kommen soll
    lauf_x = 0 # Zaehlvariable wieder auf 0 setzen
    while lauf_x < anzahl_x: # noch eine Zeile schreiben, diesmal mit schwarzen Pixeln
        print "1", # 1 ohne Zeilenumbruch schreiben
        lauf_x = lauf_x + 1 # Zaehler für Spalten um 1 erhöhen
    print # Zeilenumbruch ausgeben
    lauf_y = lauf_y + 2 # Da nun zwei Zeilen geschrieben wurden (eine weiße, eine schwarze)
                        # muss die Zaehlvariable fuer die Zeilen um ZWEI erhoeht werden.

krasser code!

Verfasst: Montag 27. April 2009, 16:06
von dynasty-warriors
äh??? das sind nicht die karos! das ist

schwarz......
weiß....
scharz....

usw.....

ich meine die f1 flagge! start und ziel flagge

Verfasst: Montag 27. April 2009, 16:06
von EyDu
Betteln hat wahrscheinlich wenig Erfolg, immerhin sind es deine Aufgaben. Bei Fragen _zum_ Problem ist es natürlich etwas anderes. Durch die Verwendung vieler Satzzeichen und das Hervorheben der "Schwierigkeit" dieser Übung wird sich daran sicherlich auch nichts ändern ;-)

@Dill: Nee, ich hab die Formel-1-Flagge gemacht. Kariert nicht Karo.

Verfasst: Montag 27. April 2009, 16:09
von dynasty-warriors
oh @ eydu ich habe das gar net gesehen ^^

also wie sieht es denn dann insgesamt aus???

du hast ja nur die for schleife gezeigt! soll ich dann meine while schleife im meinem programm entfernen und deins einsetzen=?

Verfasst: Montag 27. April 2009, 16:18
von dynasty-warriors
so??

Code: Alles auswählen

print "P1" 
anzahl_x = 50 # Pixel 50x80
anzahl_y = 80 
print anzahl_x,  
print anzahl_y  
for anzahl_y in range(10):
    for anzahl_x in range (10):
        print "01"
    
     
richtig?? irgendwas ist da falsch!

Verfasst: Montag 27. April 2009, 16:28
von dynasty-warriors
so??

Code: Alles auswählen

print "P1" 
anzahl_x = 50 # Pixel 50x80
anzahl_y = 80 
print anzahl_x,  
print anzahl_y  
for anzahl_y in range(80):
    for anzahl_x in range (50):
        print "01" [(anzahl_x+anzahl_y) % 2],
    
     

?? kannnst du mir das erklären=?? das hatte ich noch nicht in der schule!

Code: Alles auswählen

 [(anzahl_x+anzahl_y) % 2],
das mit den , ist ja ein zeilenumbruch! das kenne ich! aber das andere?

Verfasst: Montag 27. April 2009, 16:28
von Dill
was mich hier am meisten verwundert ist, dass ihr versteht was der herr warrior überhaupt will.

Verfasst: Montag 27. April 2009, 16:31
von dynasty-warriors
also jetzt noch mal klar und deutlich!!!

ich möchte die f1 start und ziellinie in python machen!!

0= schwarz
1= weiß

wenn ich das script habe, dann wandle ich die datei in .pbm um! und kannn es öffnen ^^

Verfasst: Montag 27. April 2009, 16:51
von Dill
ich möchte die f1 start und ziellinie in python machen!!

0= schwarz
1= weiß
ich bin ja nicht mehr der jüngste, evtl etwas verkalkt, aber für mich ist das weit von klar und deutlich entfernt.

meinst du: ich möchte ein monochromes bitmap, das aussieht wie die zielLINIE(!?) der F1 mit hilfe von python generieren?

Verfasst: Montag 27. April 2009, 17:08
von dynasty-warriors
ja! das war meine aufgabe! mit python bilder herzustellen! aus dem binäsystem!

Verfasst: Montag 27. April 2009, 17:16
von Leonidas
Dill hat geschrieben:meinst du: ich möchte ein monochromes bitmap, das aussieht wie die zielLINIE(!?) der F1 mit hilfe von python generieren?
Ich biete eine monochrome Bitmap einer Ziellinie, mit Gimp generiert:

Bild

SCNR, aber ich bin mindestens so verkalkt wie Dill und man muss Nachsicht mit alten Leuten haben.

Verfasst: Montag 27. April 2009, 17:29
von Dill
sehr hübsch!

warrior, um zu einer lösung zu kommen, kannst du entweder warten bis es jemand für dich erledigt, oder du machst dir selbst gedanken.

das heisst du brauchst eine lösungsstrategie.
du könntest zb mal damit anfangen und in einem py-string darstellen was du als endergebnis haben willst.

für die piratenflagge zb:

Code: Alles auswählen

piratenflagge="""
1111111111
1111111111
1111111111
1111111111
"""
mach das mal für deine karos.
evtl siehst du dann ein muster und eine vorschrift wie das muster sich wiederholen muss damit die flagge rauskommt.
hier:
muster = "1"
vorschrift: muster 10* pro zeile ausgeben.

Verfasst: Montag 27. April 2009, 18:04
von jerch
Schönes Bild! Kandinsky würde vor Neid schwarz/weiß anlaufen.

Verfasst: Montag 27. April 2009, 19:29
von EyDu
Das % ist der Modulo-Operator. Damit erhälst du den Rest einer ganzzahligen Division: 8/3 => 8 % 3 = 2.

Die Indizes deiner for-Schleifen solltest du nicht unbeding "anzahl_y" und "anzahl_x" nennen. Die gehören zur range-Funktion.

Die karierte Flagge wird übrigens nur am Ende geschwenkt und nicht beim Start. Und wenn Pele sie schwenken soll, dann sieht das Bild so aus:
^^

Verfasst: Montag 27. April 2009, 19:51
von numerix
Erinnert mich irgendwie an einen amüsanten Thread aus dem letzten Jahr, als jemand eine japanische Flagge zeichnen wollte, äh sollte: http://www.python-forum.de/topic-13537.html