Seite 1 von 2
Aufgabe Informatik While-Loop
Verfasst: Mittwoch 24. August 2011, 15:29
von JoinZ
Hallo,
wir haben grade in der schule while loops gelernt. doch iwie bekomm ich das nicht hin. wir sollen ein Programm schreiben das eine Rechnung erstellt. Dabei soll man nacheinander die Preise eingeben und sobald man 0 eingibt, soll die summe der preise angezeigt werden.
wie mach ich das?
Re: Aufgabe Informatik While-Loop
Verfasst: Mittwoch 24. August 2011, 15:35
von Hyperion
Als erstes mal den obligatorischen Link:
http://www.python-forum.de/viewtopic.php?f=1&t=1689
@Problem: Zeig uns doch mal Deine Überlegungen! Du kannst ja einfach mal formulieren, wie Du denkst, dass man das Problem angehen kann. Du kannst ja auch mal Deine ersten Code-Fragmente zeigen.
Re: Aufgabe Informatik While-Loop
Verfasst: Mittwoch 24. August 2011, 15:36
von pillmuncher
Zeig doch mal her, was du schon probiert hast.
Gruß,
Mick.
Re: Aufgabe Informatik While-Loop
Verfasst: Mittwoch 24. August 2011, 15:40
von JoinZ
Naja, es ist eigentlich keine Hausaufgabe. Doch iahch habe das Problem in der Schule noch nicht gelöst, also wollte ich es jetz zu hause probieren.
also ich hatte das so gedacht:
Code: Alles auswählen
preis = 1
while preis > 0:
print "Artikelpreis:"
preis = input()
if preis == 0:
print preis
break
so und jetz weiß cich nicht genau wie ich die rechnung hinbekomme.
Re: Aufgabe Informatik While-Loop
Verfasst: Mittwoch 24. August 2011, 15:43
von Hyperion
Wieso ist `preis` zu Beginn auf 1? Dann würde man ja voraussetzen, dass immer etwas gekauft würde und zwar immer mindestens ein Produkt mit dem Preis 1.
Tipp: Du brauchst einen weiteren Namen (z.B. `summe`), an den Du die Summe aller Preise bindest. Du brauchst dann auch kein `break`, sondern kannst einfach nach der Schleife die Summe ausgeben.
Edit: Benutzt Du Python 3.x?
Re: Aufgabe Informatik While-Loop
Verfasst: Mittwoch 24. August 2011, 15:45
von JoinZ
Nein ich benutze 2.7. Ist 3.x generell besser?
Re: Aufgabe Informatik While-Loop
Verfasst: Mittwoch 24. August 2011, 15:47
von Hyperion
JoinZ hat geschrieben:Nein ich benutze 2.7. Ist 3.x generell besser?
Nein. Aber dann solltest Du kein `input` verwenden, sondern `raw_input` und das ganze per `float` oder `int` casten.
Re: Aufgabe Informatik While-Loop
Verfasst: Mittwoch 24. August 2011, 15:49
von JoinZ
das heißt?

also float und int hatten wir noch nicht. wir hatte bis jetz nur 7 stunden inf.
Re: Aufgabe Informatik While-Loop
Verfasst: Mittwoch 24. August 2011, 15:56
von Hyperion
Das sind Built-in Funktionen:
http://docs.python.org/library/functions.html
Damit kannst Du eine Zahl, die in einem String codiert ist in eine Integer oder Floatzahl umwandeln. Da `raw_input` nur Strings liefert, musst Du das machen, um mit den Werten rechnen zu können.
Code: Alles auswählen
In [23]: data = "1.23"
In [24]: float(data)
Out[24]: 1.23
In [25]: type(float(data))
Out[25]: <type 'float'>
In [26]: type(data)
Out[26]: <type 'str'>
In Deinem Falle kann man `input` also so ersetzen:
Re: Aufgabe Informatik While-Loop
Verfasst: Mittwoch 24. August 2011, 16:04
von JoinZ
ok danke. Aber wie baue ich das jetz in mein programm ein?
Re: Aufgabe Informatik While-Loop
Verfasst: Mittwoch 24. August 2011, 16:09
von Hyperion
JoinZ hat geschrieben:ok danke. Aber wie baue ich das jetz in mein programm ein?
Hab ich Dir doch grad explizit geschrieben... quasi 1:1 auf dem Tablett serviert

Re: Aufgabe Informatik While-Loop
Verfasst: Mittwoch 24. August 2011, 16:11
von JoinZ
mhmm versteh ich nicht
Code: Alles auswählen
while preis > 0:
preis = float(raw_input("Preis"))
if preis == 0:
print preis
so oder wie?
Re: Aufgabe Informatik While-Loop
Verfasst: Mittwoch 24. August 2011, 16:11
von /me
JoinZ hat geschrieben:ok danke. Aber wie baue ich das jetz in mein programm ein?
Nun, das ersetzt erst einmal die Zeile in der du bisher mit input() gearbeitet hast.
Dann musst du weitermachen. Du möchtest eine Summe haben. Die musst du irgendwo lassen. Bisher hast du nur etwas, das sich
preis nennt. Jetzt musst du noch die Summe verwalten. Vor der Schleife ist die Summe Null, in der Schleife wird der jeweilige Preis aufaddiert.
Welchen Code würdest du jetzt daraus machen?
Re: Aufgabe Informatik While-Loop
Verfasst: Mittwoch 24. August 2011, 16:17
von JoinZ
Code: Alles auswählen
preis = 1
summe = 0
while preis > 0:
preis = float(raw_input())
summe = summe + preis
if preis == 0:
print summe
so klappts schonmal

Re: Aufgabe Informatik While-Loop
Verfasst: Mittwoch 24. August 2011, 16:23
von Hyperion
Ich finde es unschön, dass Du vor der Schleife einen Dummy-Wert an `preis` bindest. Besser wäre es wohl, einfach eine unendliche Schleife laufen zu lassen:
Damit kannst Du Die den Dummy-Wert sparen und auch den Namen `summe` erst in der Schleife definieren.
Generell kannst Du Dir das `if`-Konstrukt zum Ausgeben der Summe sparen. Diese kannst Du doch immer nach der Schleife ausgeben.
Für
schreibt man in Python üblicher Weise die Kurzform:
Re: Aufgabe Informatik While-Loop
Verfasst: Mittwoch 24. August 2011, 16:25
von JoinZ
gut zu wissen. dankeschön hat mir sehr geholfen.
aber so bekomme ich immer die Fehlermeldung das summe nicht definiert sei. warum?
Code: Alles auswählen
while True:
preis = float(raw_input("Preis:"))
summe += preis
if preis == 0:
break
Re: Aufgabe Informatik While-Loop
Verfasst: Mittwoch 24. August 2011, 16:44
von gkuhl
Du musst ``summe`` schon vor der Schleife definieren. Keine Ahnung was Hyperion da gerade vorschwebt.
Re: Aufgabe Informatik While-Loop
Verfasst: Mittwoch 24. August 2011, 16:48
von JoinZ
ja eben das versteh ich auch nicht
Re: Aufgabe Informatik While-Loop
Verfasst: Mittwoch 24. August 2011, 16:52
von Hyperion
Kleiner Denkfehler von mir - natürlich aus pädagogischer Sicht eingebaut

Re: Aufgabe Informatik While-Loop
Verfasst: Mittwoch 24. August 2011, 16:55
von JoinZ
Natürlich ;D