Ich muss für die schule die ersten 15 zeilen des pascalschen dreiecks in python so programmieren, dass es in python shell ausgegeben wird, und zwar 1. als liste ( [ [1][1,1][1,2,1]...]) und 2. in der richtigen form (http://exbook.de/wp-content/Pascal_triangle.png), also in form eines dreiecks.
kann mir da jemand helfen, wenn möglich jeden schritt erläutert? ich kriege es einfach nicht gebacken!
allerdings muss ich das ganze donnerstag abgeben.
schonmal danke im vorraus
edit: ich hatte keine ahnung in welches forum diese frage gehört, wenn sie hier falsch ist, tuts mir leid^^
Pascalsches Dreieck mit python (dringend!)
-
- User
- Beiträge: 8
- Registriert: Dienstag 5. Januar 2010, 19:34
meine programme sind nicht fehlerhaft...sie entwickeln nur zufällig neue features
Diese Frage ist in jedem Forum falsch, weil - vermutlich (aber sicher kann man da nie sein) - keiner DEINE Hausaufgaben machen will, auch wenn die gestellte Aufgabe von vielen hier im Forum in wenigen Minuten gelöst werden könnte.gamemaster2422 hat geschrieben:ich hatte keine ahnung in welches forum diese frage gehört, wenn sie hier falsch ist, tuts mir leid^^
Dein Weg sieht so aus: Entwickle den Code so weit wie du kommst und beschreib dann, was noch nicht funktioniert und was du gerne hättest.
-
- User
- Beiträge: 8
- Registriert: Dienstag 5. Januar 2010, 19:34
ich weiß nicht, wie man vorgeben soll, welche zahlen addiert weden.
bsp:
1
1 1
1 2 1
1 3 3 1
zuerst werden 1 und 1 addiert, dann 1 und 2, dann 1 und 3, dann 3 und 3 usw.
bsp:
1
1 1
1 2 1
1 3 3 1
zuerst werden 1 und 1 addiert, dann 1 und 2, dann 1 und 3, dann 3 und 3 usw.
meine programme sind nicht fehlerhaft...sie entwickeln nur zufällig neue features
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Dann guck doch hier:gamemaster2422 hat geschrieben:ich weiß nicht, wie man vorgeben soll, welche zahlen addiert weden.
http://de.wikipedia.org/wiki/Pascalsches_Dreieck
Auch ohne komplexe Formel sollte einem das Prinzip klar werden... (und Dein Ergebnis steht da ja auch schon!)
Mach Dir folgendes klar:
Du musst Dir immer die letzte Zeile merken, sowie die sich Schritt weise aufbauende aktuelle. Diese wird dann im nächsten Durchgang zur "alten", aus der Du dir die beiden Zahlen entsprechend dem Schema holst, die Du addieren musst. Zeilen kann man sich leicht in einer Liste merken.
Zudem musst Du wohl eine Schleife 14 mal durchlaufen (sofern die erste Zeile gegeben ist; evtl. macht es sogar Sinn erst mit der 3. Zeile in der Schleife zu beginnen).
Das sind ja quasi alle Zutaten, die man braucht, um dieses Problem zu lösen.
Habe ich zufälligerweise parat.
Code: Alles auswählen
l=[1];x=15
while x:
print" ".join(map(str,l));x-=1
l=map(sum,zip([0]+l,l+[0]))
@hendrikS: Da stimmt aber das gewünschte Ausgabeformat nicht.
Sollte doch so aussehen:

Sollte doch so aussehen:
Code: Alles auswählen
>>> from pascaldreieck import PascalDreieck
>>> dreieck = PascalDreieck(15)
>>> print dreieck
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
1 10 45 120 210 252 210 120 45 10 1
1 11 55 165 330 462 462 330 165 55 11 1
1 12 66 220 495 792 924 792 495 220 66 12 1
1 13 78 286 715 1287 1716 1716 1287 715 286 78 13 1
1 14 91 364 1001 2002 3003 3432 3003 2002 1001 364 91 14 1
1 15 105 455 1365 3003 5005 6435 6435 5005 3003 1365 455 105 15 1
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Wo finde ich diese Lib?numerix hat geschrieben:Code: Alles auswählen
>>> from pascaldreieck import PascalDreieck

SCNR

Code: Alles auswählen
print 'Wieviele Zeilen?'
lines = raw_input()
lines = int(lines)
lines = range(lines)
pascal_list = []
for line in lines:
pascal_list.append([1])
if line != 0:
for element in range(len(pascal_list[line-1])):
pascal_list[line].append(sum(pascal_list[line-1][element:element+2]))
for print_pascal in pascal_list:
print print_pascal
/usr/lib/python2.6/site-packages/pascaldreieck.py natürlich.Hyperion hat geschrieben:Wo finde ich diese Lib?numerix hat geschrieben:Code: Alles auswählen
>>> from pascaldreieck import PascalDreieck
![]()
SCNR
-
- User
- Beiträge: 8
- Registriert: Dienstag 5. Januar 2010, 19:34
also bei mir klappts nicht ganz...das von hendrikS und numerix zusammengebastelte klappt nicht, da heißt es das from aus
from pascaldreieck import PascalDreieck
sei falsch.
die version von ... funktioniert, bis auf den punkt, dass es nicht vollständig formatiert ist und ich nicht genau weiß wie das jetzt funktioniert^^
from pascaldreieck import PascalDreieck
sei falsch.
die version von ... funktioniert, bis auf den punkt, dass es nicht vollständig formatiert ist und ich nicht genau weiß wie das jetzt funktioniert^^
meine programme sind nicht fehlerhaft...sie entwickeln nur zufällig neue features
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Müßte das nicht auch mit string.center() gehen?hendrikS hat geschrieben:Ja, Formattierung fehlt noch.
Sollte aber auch kein Problem sein. Ich denke rjust(5) auf alle Zahlen und dann noch Leerzeichen entsprechend der Zeile vorschieben.
Dann sieht das aber bei kleinen Dreiecken aus wie Hund. Lieber so:hendrikS hat geschrieben:Ja, Formattierung fehlt noch.
Sollte aber auch kein Problem sein. Ich denke rjust(5) auf alle Zahlen und dann noch Leerzeichen entsprechend der Zeile vorschieben.
Code: Alles auswählen
>>> from pascaldreieck import PascalDreieck
>>> dreieck = PascalDreieck(3)
>>> print dreieck
1
1 1
1 2 1
1 3 3 1
>>> dreieck = PascalDreieck(10)
>>> print dreieck
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
1 10 45 120 210 252 210 120 45 10 1
>>> dreieck = PascalDreieck(100) # das erspare ich euch ...
-
- User
- Beiträge: 8
- Registriert: Dienstag 5. Januar 2010, 19:34
mein interpterer sagt mir dabei:
No module named pascaldreieck
No module named pascaldreieck
meine programme sind nicht fehlerhaft...sie entwickeln nur zufällig neue features
Hast du den Post von DasIch nicht gelesen? Wahrscheinlich fehlt das Modul pascaldreieck.py in deinem site-packages-Ordner ...gamemaster2422 hat geschrieben:da heißt es das from aus
from pascaldreieck import PascalDreieck
sei falsch.

-
- User
- Beiträge: 8
- Registriert: Dienstag 5. Januar 2010, 19:34
und wo kriege ich das her?
meine programme sind nicht fehlerhaft...sie entwickeln nur zufällig neue features
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Nun hört doch auf den OP zu verarschen - er hat den Witz halt nicht gechecktnumerix hat geschrieben:Hast du den Post von DasIch nicht gelesen? Wahrscheinlich fehlt das Modul pascaldreieck.py in deinem site-packages-Ordner ...gamemaster2422 hat geschrieben:da heißt es das from aus
from pascaldreieck import PascalDreieck
sei falsch.

Code: Alles auswählen
# -*- coding: utf-8 -*-
"""
Spyder Editor
This temporary script file is located here:
/home/michael/.spyder/.temp.py
"""
print 'Wieviele Zeilen?'
lines = raw_input()
lines = int(lines)
lines = range(lines)
pascal_list = []
for line in lines:
pascal_list.append([1])
if line != 0:
for element in range(len(pascal_list[line-1])):
pascal_list[line].append(sum(pascal_list[line-1][element:element+2]))
rev_lines = lines
rev_lines.reverse()
for n in range(len(rev_lines)):
pascal_print = ''
for m in pascal_list[n]:
if pascal_print == '':
pascal_print = str(m)
else:
pascal_print = pascal_print + ' '*(6-len(str(m))) + str(m)
print ' '*(rev_lines[n]) + pascal_print
Hier noch mit Kopf durch die Wand...
Jetzt gibt es die Ausgabe auch als Dreieck

Code: Alles auswählen
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
1 10 45 120 210 252 210 120 45 10 1
1 11 55 165 330 462 462 330 165 55 11 1
Wenn die Zahlen unten immer größer Werden, und irgendwann mehr als 6 Stellen haben, tuts weh.
Zuletzt geändert von ... am Dienstag 5. Januar 2010, 20:55, insgesamt 1-mal geändert.