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
Pascalsches Dreieck
So hab ich das bisher gemacht:
Und weiter komm ich dann nicht mehr!
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())
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:
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],
...
]
- sunmountain
- User
- Beiträge: 89
- Registriert: Montag 13. März 2006, 17:18
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
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!!!!
Weiß eh nicht, wieso ich das überhaupt lernen muss. Werde ich später nie wieder brauchen!
Trotzdem vielen Danke für eure Hilfe!!!!
Über ein Problem nachdenken und eine präzise Lösung formulieren wirst Du später nie wieder brauchen?Lisa hat geschrieben:Weiß eh nicht, wieso ich das überhaupt lernen muss. Werde ich später nie wieder brauchen!
- sunmountain
- User
- Beiträge: 89
- Registriert: Montag 13. März 2006, 17:18
sunmountain hat geschrieben:P.S.: http://de.wikipedia.org/wiki/Pascalsches_DreieckCode: 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
- sunmountain
- User
- Beiträge: 89
- Registriert: Montag 13. März 2006, 17:18
Aber Python (oder jede andere halbwegs brauchbare Programmiersprache)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.
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
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
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:BlackJack hat geschrieben:Ausserdem gibt's im Pascalschen Dreieck keine Nullen.
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
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
[url=http://www.leckse.net/artikel/meta/profilieren]Profilieren im Netz leicht gemacht[/url]