Seite 1 von 1
Pascalsches Dreieck
Verfasst: Montag 15. Januar 2007, 19:23
von Lisa
Hallo,
kann mir jemand bei folgendem Problem helfen? Komm da echt nicht weiter!
"Schreiben Sie eine Funktion, die das das Pascal’sche Dreieck
bis zu einer gewissen Tiefe berechnet. Das Ergebnis
soll in einer Liste gespeichert werden, die zurückgeliefert
wird. Schreiben Sie eine zweite Funktion, die diese Liste
ausgibt."
Danke
Verfasst: Montag 15. Januar 2007, 19:31
von rayo
Hallo
Gut dann sag uns wo genau du nicht mehr weiterkommst, wir lösen sicher nicht deine Aufgaben!
Gruss
Verfasst: Montag 15. Januar 2007, 19:43
von Lisa
Ich kann zwar das Pascalsche Dreieck ausgeben, aber ich weiß nicht, wie ich alle Zeilen in einer Liste speichern kann, so dass ich diese Liste hinterher zurückgeben kann.
Verfasst: Montag 15. Januar 2007, 20:01
von Luzandro
Poste mal wie dein Code jetzt aussieht
Verfasst: Montag 15. Januar 2007, 20:21
von Lisa
So hab ich das bisher gemacht:
Code: Alles auswählen
def pascal():
s = [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0]
print s
for i in range(9):
if i%2 == 0:
s = [s[0] + s[1], s[1] + s[2], s[2] + s[3], s[3] + s[4], \
s[4] + s[5], s[5] + s[6], s[6] + s[7], s[7] + s[8], \
s[8] + s[9], s[9] + s[10]]
print " ", s
elif i%2 == 1:
s = [0, s[0] + s[1], s[1] + s[2], s[2] + s[3], s[3] + s[4], \
s[4] + s[5], s[5] + s[6], s[6] + s[7], s[7] + s[8], \
s[8] + s[9], 0]
print s
def ausgabe(x):
print x
ausgabe(pascal())
Und weiter komm ich dann nicht mehr!
Verfasst: Montag 15. Januar 2007, 20:59
von BlackJack
Ich denke die Aufgabe ist eher so gemeint, dass man der Funktion die gewünschte Tiefe als Argument übergibt.
Ausserdem gibt's im Pascalschen Dreieck keine Nullen. Das Ergebnis sähe eher so aus:
Code: Alles auswählen
[[1],
[1, 1],
[1, 2, 1],
[1, 3, 3, 1],
...
]
Ein Beispiel
Verfasst: Montag 15. Januar 2007, 21:15
von sunmountain
Code: Alles auswählen
# Pascal'sches Dreieck
triangle = []
for i in xrange(10):
tmp = []
if i != 0:
for j in xrange(i):
if j == 0 or j == i-1:
tmp.append(1)
else:
if i>2:
tmp.append(triangle[-1][j-1]+triangle[-1][j])
triangle.append(tmp)
for t in triangle:
print t
P.S.:
http://de.wikipedia.org/wiki/Pascalsches_Dreieck
Verfasst: Montag 15. Januar 2007, 21:33
von Lisa
Ja, die Aufgabe war sicher so gemeint! Aber so hab ich das leider nicht hinbekommen! Und wenn ich ehrlich bin, versteh ich bei dieser Lösung auch nur Bahnhof...
Weiß eh nicht, wieso ich das überhaupt lernen muss. Werde ich später nie wieder brauchen!
Trotzdem vielen Danke für eure Hilfe!!!!
Verfasst: Montag 15. Januar 2007, 21:38
von BlackJack
Lisa hat geschrieben:Weiß eh nicht, wieso ich das überhaupt lernen muss. Werde ich später nie wieder brauchen!
Über ein Problem nachdenken und eine präzise Lösung formulieren wirst Du später nie wieder brauchen?
Python Tutorial
Verfasst: Montag 15. Januar 2007, 21:41
von sunmountain
Nur zu empfehlen.
Re: Ein Beispiel
Verfasst: Montag 15. Januar 2007, 21:46
von sunmountain
sunmountain hat geschrieben:
Code: Alles auswählen
# Pascal'sches Dreieck
triangle = [] # Ergebnisliste
for i in xrange(10): # Tiefe des Dreiecks (Zeilen)
tmp = [] # Temporäre Liste für jede Zeile
if i != 0: # Wenn nicht 1. Zeile
for j in xrange(i): # Gehe die einzelnen Spalten der Zeile durch
if j == 0 or j == i-1: # Sonderfall : Links- und Rechts aussen
tmp.append(1) # sind immer 1
else:
if i>2: # Anzahl Spalten groß genug ?
tmp.append(triangle[-1][j-1]+triangle[-1][j]) # Hänge errechnete Werte an temporäre Liste an
triangle.append(tmp) # Hänge temporäre an Ergebnisliste an
# Ausgeben
for t in triangle:
print t
P.S.:
http://de.wikipedia.org/wiki/Pascalsches_Dreieck
Verfasst: Montag 15. Januar 2007, 21:49
von Lisa
Jetzt hab ich das aber immer noch nicht in einer Liste gespeichert, die ich dann komplett zurückliefern kann.
Ich werde später bestimmt auch Probleme lösen müssen, aber ich glaube nicht, dass ich dazu Python brauche.
Verfasst: Montag 15. Januar 2007, 22:06
von Lisa
Noch Mal vielen Dank!!!!
Jetzt komm ich selber weiter!
Verfasst: Montag 15. Januar 2007, 22:08
von sunmountain
Lisa hat geschrieben:Jetzt hab ich das aber immer noch nicht in einer Liste gespeichert, die ich dann komplett zurückliefern kann.
Ich werde später bestimmt auch Probleme lösen müssen, aber ich glaube nicht, dass ich dazu Python brauche.
Aber Python (oder jede andere halbwegs brauchbare Programmiersprache)
zwingen einen, Probleme durchzudefinieren:
Wasser rein, bisschen Kaffee, anschalten
Könnte so jemand, der Null Ahnung Kaffe kochen ?
So aber schon:
Code: Alles auswählen
def kocheKaffee(anzahl_Tassen):
kaffee_pulver = anzahl_Tassen * 5 # 5 Gramm pro Tasse
wasser = anzahl_Tassen * 150 # 150 ml pro Tasse
wasser_einfuellen(wasser)
filter_einsetzen()
filter_mit_kaffee_fuellen(kaffee_pulver)
fertig = maschine_einschalten()
return fertig
Abgesehen davon ist es die Liste triangle, in das Ergebnis ist.
Ein Funktionrumpf drumherum und ein return triangle
am Ende, und schon ist es fertig:
Code: Alles auswählen
# Pascal'sches Dreieck
def createPascalschesDreieck(zeilen):
triangle = []
for i in xrange(zeilen):
tmp = []
if i != 0:
for j in xrange(i):
if j == 0 or j == i-1:
tmp.append(1)
else:
if i>2:
tmp.append(triangle[-1][j-1]+triangle[-1][j])
triangle.append(tmp)
return triangle
"I don't know who discovered water, but it wasn't a fish."
Verfasst: Dienstag 16. Januar 2007, 07:06
von Luzandro
BlackJack hat geschrieben:Ausserdem gibt's im Pascalschen Dreieck keine Nullen.
Wobei es zum Berechnen der Zeilen hilfreich sein kann, wenn man zur vorigen Zeile an den Rändern Nullen hinzufügt, da man so die Sonderfälle vermeiden kann:
Code: Alles auswählen
def pascal(depth):
triangle = [[1]]
for row in xrange(1, depth):
prev_row = [0]+ triangle[-1] +[0]
new_row = []
for col in xrange(1, len(prev_row)):
new_row.append(prev_row[col-1] + prev_row[col])
triangle.append(new_row)
return triangle
oder kompakter
Code: Alles auswählen
def pascal(depth):
triangle = [[1]]
for row in xrange(1,depth):
prev_row = [0]+ triangle[-1] +[0]
new_row = [ sum(neighbours) for neighbours in zip(prev_row, prev_row[1:]) ]
triangle.append(new_row)
return triangle