Seite 1 von 1

[sage] for-schleife innerhalb Liste

Verfasst: Dienstag 7. November 2017, 17:36
von neu123
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.

Re: [sage] for-schleife innerhalb Liste

Verfasst: Dienstag 7. November 2017, 18:14
von Sirius3
@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.

Re: [sage] for-schleife innerhalb Liste

Verfasst: Dienstag 7. November 2017, 18:19
von neu123
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.

Re: [sage] for-schleife innerhalb Liste

Verfasst: Dienstag 7. November 2017, 18:40
von narpfel
@neu123: Hilft dir das hier weiter? Ansonsten kann man das auch manuell so schreiben:

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]
@Sirius3: `^` ist in Sage tatsächlich der Potenzoperator.

Re: [sage] for-schleife innerhalb Liste

Verfasst: Dienstag 7. November 2017, 18:52
von neu123
narpfel, vielen lieben Dank, das ist genau das richtige!