Seite 1 von 1

Liste mit while-Schleife

Verfasst: Mittwoch 16. April 2014, 21:15
von AnNa
Hallo,
(vorab, ich bin absluter Programmieranfänger :D )

ich möchte bei folgendem Programm doe for-Schleife durch eine while-Schleife ersetzen. Habe schon alles mögliche ausprobiert..
Ich bitte um Hilfe! =)

Code: Alles auswählen

q=.25
summe=0
i=range(1,100)
while i==99 :
    summe=summe+q**i
    print summe

Re: Liste mit while-Schleife

Verfasst: Mittwoch 16. April 2014, 21:28
von BlackJack
@AnNa: In dem Quelltext ist gar keine ``for``-Schleife.

Wenn man mal ausgwählte Teilausdrücke in einer Python-Shell ausprobiert, dann wird schnell klar, dass das offensichtlich nicht funktionieren kann:

Code: Alles auswählen

In [1]: range(1, 100)
Out[1]: 
[1,
 2,
 3,
 4,
 5,
 6,
 7,
 8,
 9,
 10,
 11,
 12,
 13,
 14,
 15,
 16,
 17,
 18,
 19,
 20,
 21,
 22,
 23,
 24,
 25,
 26,
 27,
 28,
 29,
 30,
 31,
 32,
 33,
 34,
 35,
 36,
 37,
 38,
 39,
 40,
 41,
 42,
 43,
 44,
 45,
 46,
 47,
 48,
 49,
 50,
 51,
 52,
 53,
 54,
 55,
 56,
 57,
 58,
 59,
 60,
 61,
 62,
 63,
 64,
 65,
 66,
 67,
 68,
 69,
 70,
 71,
 72,
 73,
 74,
 75,
 76,
 77,
 78,
 79,
 80,
 81,
 82,
 83,
 84,
 85,
 86,
 87,
 88,
 89,
 90,
 91,
 92,
 93,
 94,
 95,
 96,
 97,
 98,
 99]

In [2]: range(1, 100) == 99
Out[2]: False
Eine Liste mit Zahlen ist niemals gleich einer einzelnen Zahl. Da hast Du nochmal Glück gehabt, denn deshalb wird der Inhalt der Schleife nie ausgeführt. Wäre die Bedingung nämlich wahr, dann würde die Schleife endlos laufen, weil innerhalb der Schleife nichts an `i` verändert wird, und damit die Bedingung nie falsch werden würde.

Re: Liste mit while-Schleife

Verfasst: Mittwoch 16. April 2014, 21:32
von AnNa
oh, habe vergessen das ursprünglich Programm zu posten, bei dem das mit einer for schleife gemacht ist:

Code: Alles auswählen

q=.25
summe=0
for i in xrange(100):
    summe=summe+q**i
    print summe
aber wie kann ich denn hier dem i zuweisen, dass es die Zahlen von 1 bis 99 durchlaufen soll?

Re: Liste mit while-Schleife

Verfasst: Mittwoch 16. April 2014, 21:40
von /me
AnNa hat geschrieben:aber wie kann ich denn hier dem i zuweisen, dass es die Zahlen von 1 bis 99 durchlaufen soll?
Analog dazu, wie du anderen Bezeichnern (wi z.B. summe) einen neuen Wert zuweist.

Das while in deiner ursprünglichen Frage war ja auch schon fast passend, nur die Bedingung für ein weiteres Durchlaufen sollte wohl eher darauf prüfen ob der Wert kleiner oder gleich 99 ist und nicht, ob er exakt 99 ist.

Re: Liste mit while-Schleife

Verfasst: Mittwoch 16. April 2014, 21:46
von AnNa
kann ich i denn mit i=xrange(1,100) diese Liste zuweisen?

Re: Liste mit while-Schleife

Verfasst: Mittwoch 16. April 2014, 22:06
von BlackJack
@AnNa: Wieso willst Du `i` eine Liste zuweisen? Du vergleichst `i` doch mit einer Zahl und verwendest `i` in der Rechnung als Zahl, also solltest Du `i` auch eine Zahl zuweisen.

Re: Liste mit while-Schleife

Verfasst: Mittwoch 16. April 2014, 22:10
von AnNa
aber das ist ja jetzte ine Summe. und i soll die Zahlen von 1 bis 99 durchlaufen soll... (ist zumindest meine Logik dahinter^^)

Re: Liste mit while-Schleife

Verfasst: Mittwoch 16. April 2014, 22:13
von Hyperion
Und wie "durchläuft" eine Variable alle Zahlen von 1 bis 99? Kleiner Tipp: Addition ist das Stichwort ;-)

Re: Liste mit while-Schleife

Verfasst: Mittwoch 16. April 2014, 22:22
von AnNa
also muss ich i=1+x setzen? aber entweder muss ich jetzt x als eine liste definieren (was ja keinen sinn macht, weilich dann wieder beim ursprungsproblem wäre) oder x auch noch eine Zahl zuweisen? verstehe nicht wie ich das machen soll...

Re: Liste mit while-Schleife

Verfasst: Mittwoch 16. April 2014, 22:26
von /me
AnNa hat geschrieben:also muss ich i=1+x setzen? aber entweder muss ich jetzt x als eine liste definieren (was ja keinen sinn macht, weilich dann wieder beim ursprungsproblem wäre) oder x auch noch eine Zahl zuweisen? verstehe nicht wie ich das machen soll...
Du brauchst keine Liste. Du brauchst auch kein x, wo auch immer das herkommt.

Du möchtest i um eins erhöhen, also brauchst du ein i und eine 1. Bitteschön: i = i + 1 (oder i += 1).

Re: Liste mit while-Schleife

Verfasst: Mittwoch 16. April 2014, 22:30
von AnNa
okay, dankeschön... =)
programmiere grade das erste mal irgendwas alleine, also entschuldige, dass ich auf sowas nicht komme.. :oops:

Re: Liste mit while-Schleife

Verfasst: Mittwoch 16. April 2014, 22:35
von /me
AnNa hat geschrieben:programmiere grade das erste mal irgendwas alleine, also entschuldige, dass ich auf sowas nicht komme.. :oops:
Und wir neigen hier wiederum nicht dazu, direkt fertige Lösungen ins Haus zu liefern. Wir versuchen den Fragesteller sanft (gut, manchmal auch weniger sanft) in die richtige Richtung zu schubsen.

Kurz gesagt: Frag ruhig weiter.

Re: Liste mit while-Schleife

Verfasst: Mittwoch 16. April 2014, 22:38
von AnNa
finde ich ja auch gut so, aber ich bin einfach nicht von selbst drauf gekommen, das so zu machen =)

habe trotzdem jetzt wieder eine Fehlermeldung, dass ich i nicht definiert sein...

Code: Alles auswählen

q=.25
summ=0
i=i+1
while i<=99:
    summ=summ+q**i
print summ

Re: Liste mit while-Schleife

Verfasst: Mittwoch 16. April 2014, 22:55
von BlackJack
@AnNa: Naja es ist ja auch nicht definiert. Was soll denn bei `i + 1` heraus kommen wenn `i` vorher noch nie ein Wert zugewiesen wurde?

Re: Liste mit while-Schleife

Verfasst: Mittwoch 16. April 2014, 23:01
von AnNa
Und was m7ss ich machen um sas zu ämdern?

Re: Liste mit while-Schleife

Verfasst: Mittwoch 16. April 2014, 23:12
von BlackJack
@AnNa: `i` vorher einen Wert zuweisen.

Re: Liste mit while-Schleife

Verfasst: Donnerstag 17. April 2014, 07:46
von Sirius3
@AnNa: und achte darauf, dass sich der Wert der while-Bedingung innerhalb der Schleife auch ändert, weil sonst ist die Bedingung nie oder immer erfüllt.

Re: Liste mit while-Schleife

Verfasst: Donnerstag 17. April 2014, 08:28
von Hyperion
Und bitte bitte bitte benutze für Quellcode, den Du hier postest, die dafür vorgesehenen Tags! :-) Direkt über dem Eingabefeld gibt es dazu sogar einen Button, den Du nur drücken musst. Die Sprache "Python" ist schon voreingestellt. Wenn Du das Ergebnis sehen willst, geh einfach mal auf einen Beitrag, den ich editiert habe und rufe "Ändern" auf diesem auf. Dann siehst Du, wie es im Editor aussehen muss.