Hallo Leute, ich hoff ich bin hier richtig. Auf der Suche nach einer Lösung bin ich von den Sage-Seiten auf Phyton-Seiten verwiesen worden; entsprechend stelle ich meine Frage hier.
Ich muss in einer Menge die Summe über 2^i mit i={0-10} darstellen, wobei entsprechend die 'Zwischenergebnisse', also 1(=2^0), 5(=2^0+2^1), 15, usw auch gespeichert werden sollen.
1. Ansatz:
A = sum(2^i for i in range(0,11));A
spuckt mir 2047, also das richtige Endergebnis aus. Ich möchte aber die Zwischenergebnisse haben.
2. Ansatz
for i in range(1,12):
print[(sum(2^i for i in range(0,i)))];
Hier bekomme ich jetzt alles ausgegeben, allerdings in einer Spalte.
1
5
15
31
..
Hätte jemand einen Tipp, wie ich die Schleife innerhalb einer Liste dazu bekomme, auch die Zwischenergebnisse auszuspucken?
Danke im voraus.
[sage] for-schleife innerhalb Liste
@neu123: das kann nicht sein, denn 2^i sind keine Zweierpotenzen. Korrekt wäre 2**i, oder hat da Sage seine eigene Syntax. In dieser Reihe kommt auch nicht 5 vor, sondern nur 3 und 7. Ich habe da meine Zweifel, dass Du das überhaupt jemals selbst ausprobiert hast. Zum Problem, Du mußt erst eine Liste konstruieren und erst zum Schluß ausgeben.
Ups, keine ahnung wieso ich die Werte falsch eingetragen hab. Die richtige Rechnung steht da Ich änders gleich.
[1]
[3]
[7]
[15]
[31]
[63]
[127]
[255]
[511]
[1023]
[2047]
Das ist das, was Sage mir ausspuckt.
Eine Liste ist mein 1. Ansatz. da kriege ich aber nur ein Element raus. Und das '^' kann ich ohne Probleme nutzen.
Nachtrag:
for i in range(1,12):
A=(sum(2^i for i in range(0,i)));A
liefert
1
3
7
15
31
63
127
255
511
1023
2047
Wieder in einer Spalte. Allerdings ist die Aufgabenstellung, dass das ganze in einer Menge angegeben soll. Diese erzeugt man mit dem Befehl 'set'
s1 = set([1..10]) z.B.. Darüber habe ich es aber noch nicht probiert.
[1]
[3]
[7]
[15]
[31]
[63]
[127]
[255]
[511]
[1023]
[2047]
Das ist das, was Sage mir ausspuckt.
Eine Liste ist mein 1. Ansatz. da kriege ich aber nur ein Element raus. Und das '^' kann ich ohne Probleme nutzen.
Nachtrag:
for i in range(1,12):
A=(sum(2^i for i in range(0,i)));A
liefert
1
3
7
15
31
63
127
255
511
1023
2047
Wieder in einer Spalte. Allerdings ist die Aufgabenstellung, dass das ganze in einer Menge angegeben soll. Diese erzeugt man mit dem Befehl 'set'
s1 = set([1..10]) z.B.. Darüber habe ich es aber noch nicht probiert.
@neu123: Hilft dir das hier weiter? Ansonsten kann man das auch manuell so schreiben:
@Sirius3: `^` ist in Sage tatsächlich der Potenzoperator.
Code: Alles auswählen
sage: i = var("i")
sage: sum(2^i, i, 0, 10)
2047
sage: [sum(2^i, i, 0, n) for n in xrange(11)]
[1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047]