Hat zufällig jemand das Lehrbuch von Michael Weigend (Objektorientierte Programmierung mit Python 3) vorliegen?
Eigentlich finde ich das ganz nett, lese aktuell aus Spaß an der Freud etwas darin herum und mache einige Aufgaben. Irgendwie konnte ich bereits einige Fehler in der - 4. - Auflage finden.
Auf Seite 75 werden mittels input() Zahlen eingelesen, mittels float() wird die Eingabe direkt umgewandelt. Kann dann am Ende einer Berechnung dort eine Ganzzahl (350?) herauskommen oder müsste die Ausgabe nicht 350.0 lauten??? Gab es das mal (Python 3.0) oder hat sich dort der Redakteur schlicht vertan???
Über Stimmen zum Buch würde ich mich übrigens freuen; im Augenblick kenne ich eigentlich nur das...
Objektorient. Programmierung mit Python 3, Lehrbuch, S. 75
Zur Info die Lösung (ähnlich der Musterlösung auf Seite 76):
Ich habe hier einmal float() nach int() geändert. In meiner eigentlichen Lösung nutze ich float().
Code: Alles auswählen
print("Kostenplan für eine Reise\n-------------------------")
# Eingabe
kostenGesBus = int(input("Kosten für den Reisebus: "))
kostenEinHotel = int(input("Hotelkosten pro Person: "))
kostenGesEvents = int(input("Gesamtkosten für touristische Events: "))
anzahlPersonen = int(input("Anzahl der Teilnehmer: "))
# Verarbeitung
gesamtKosten = kostenGesBus + kostenGesEvents + kostenEinHotel * anzahlPersonen
einKosten = gesamtKosten // anzahlPersonen
# Ausgabe
print("Die Gesamtkosten betragen", gesamtKosten, "EUR.")
print("Die Kosten pro Person sind", einKosten, "EUR.")
Für diejenigen, die das Buch nicht zur Hand haben, wäre es schön, wenn Du das Beispiel kurz posten könntest...
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit
)

Letztlich sollen die Fahrtkosten für eine Bustour/Reisegruppe berechnet werden. In der Konsole soll es laut Buch folgende Ausgabe geben:
kommt bei mir raus:
Wenn ich mich an die Musterlösung halte:Kostenplan für eine Reise
-------------------------
Kosten für den Reisebus: 1000
Hotelkosten pro Person: 300
Gesamtkosten für touristische Events: 500
Anzahl der Teilnehmer: 30
Die Gesamtkosten betragen 10500 EUR.
Die Kosten pro Person sind 350 EUR.
Code: Alles auswählen
print("Kostenplan für eine Reise\n-------------------------")
kostenGesBus = float(input("Kosten für den Reisebus: "))
kostenEinHotel = float(input("Hotelkosten pro Person: "))
kostenGesEvents = float(input("Gesamtkosten für touristische Events: "))
anzahlPersonen = int(input("Anzahl der Teilnehmer: "))
gesamtKosten = kostenGesBus + kostenGesEvents + kostenEinHotel * anzahlPersonen
einKosten = gesamtKosten / anzahlPersonen
print("\nDie Gesamtkosten betragen", gesamtKosten, "EUR.")
print("Die Kosten pro Person sind", einKosten, "EUR.")
Mich irritiert "10500 EUR" und "350 EUR" statt "10500.0 EUR" und "350.0 EUR".Kostenplan für eine Reise
-------------------------
Kosten für den Reisebus: 1000
Hotelkosten pro Person: 300
Gesamtkosten für touristische Events: 500
Anzahl der Teilnehmer: 30
Die Gesamtkosten betragen 10500.0 EUR.
Die Kosten pro Person sind 350.0 EUR.
Nun ja, da war er halt a bisl schlampig, der Hr. Weigend... 
Ich hab' noch die Ausgabe zu Python 2.x und bin dort auch auf den einen und anderen Fehler gestoßen. Schade eigentlich...
mutetella

Ich hab' noch die Ausgabe zu Python 2.x und bin dort auch auf den einen und anderen Fehler gestoßen. Schade eigentlich...
mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit
)

Das passiert, wenn man ein schon vorhandenes Buch an eine neue Sprachversion anpasst, noch dazu eine, die nicht abwärtskompatibel ist. Das gleiche Beispiel findet man - natürlich - auch in der Version zu Python 2.5. Dort arbeitet er schlicht mit input(), gibt nur ganzzahlige Werte ein und erhält dann natürlich auch nur int-Werte im Ergebnis. Das könnte man mit Python 3.x auch erzielen, wenn man eval(input()) verwendet und nur ganzzahlige Werte eingibt. Das sollte man sich aber am besten gar nicht erst angewöhnen.
Das Buch von M. Weigend halte ich grundsätzlich für eines der besseren unter den deutschsprachigen Python-Büchern, aber die hier beschriebenen Fehler passieren eben bei Upgrades. In dieser Hinsicht ziemlich heftig ist die aktuelle (4. Auflage) zu Python 3. Die ist voller Fehler, da weiß man gar nicht, wo man anfangen soll.
Das Buch von M. Weigend halte ich grundsätzlich für eines der besseren unter den deutschsprachigen Python-Büchern, aber die hier beschriebenen Fehler passieren eben bei Upgrades. In dieser Hinsicht ziemlich heftig ist die aktuelle (4. Auflage) zu Python 3. Die ist voller Fehler, da weiß man gar nicht, wo man anfangen soll.