Super Anfänger frage

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
dinhu
User
Beiträge: 1
Registriert: Donnerstag 27. Juni 2019, 12:06

Hallo leute,

ich bin gerade dabei Python zu lernen und befinde mich im Abschnitt "Verzweigungen" eigentlich soweit ganz klar.
Aber ich bekomm den beispiel code nicht zum laufen. Könnte sich vielleicht jemand erbarmen und mir erklären woran es liegt,
was mache ich falsch bzw. was stimmt an dem code nicht?

age = input("Alter des Hundes: ")

if age < 0:
print("Das stimmt wohl kaum!")
elif age == 1:
print("entspricht ca 14 Jahren")
elif age == 2:
print("entspricht ca 22 Jahren")
elif age > 2:
mensch = 22 + (age -2)*5
print("Menschenjahre", mensch)

###
raw_input('press Return>')

Original code aus dem buch sieht so aus, dazu hätte ich noch ein paar fragen:

age = input("Alter des Hundes: ")
print
if age < 0:
print "Das stimmt wohl kaum!"
elif age == 1:
print "entspricht ca 14 Jahren"
elif age == 2:
print "entspricht ca 22 Jahren"
elif age > 2:
mensch = 22 + (age -2)*5
print "Menschenjahre", mensch

###
raw_input('press Return>')

frage 1: warum steht "print" in zeile 2?
frage 2: warum haben die print ausgaben unter den Verzweigungen keine Klammern?
haben die beim buch schreiben vielleicht ein Fehler gemacht?

Fehler ausgabe bei mir ist immer in line 3: '<' not supported between instances of 'str' and 'int'
Im prinzip verstehe ich schon das "kleiner als" und "grösser als" da nicht hingehört.. aber so steht es halt als beispiel im buch.

schonmal vielen dank für jedweige hilfestellung.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Bitte in Zukunft die Code-Tags benutzen, damit dein Code lesbar bleibt, inklusive der relevanten Einrueckungen.

Und zu deinem Problem: du benutzt Python 3 (gut) aber dein Buch noch Python 2. Das hat zur Folge, dass input sich anders verhaelt. Das input in Python 3 ist das raw_input aus Python 2, und damit wird die Eingabe IMMER als String zurueckgeliefert. Es ist in dem Moment deine Aufgabe, den String in die benoetigte Ganzzahl zu wandeln. Das einfachste dazu ist ein

Code: Alles auswählen

age = int(input("Alter des Hundes:"))
Benutzeravatar
kbr
User
Beiträge: 1508
Registriert: Mittwoch 15. Oktober 2008, 09:27

Das Beispiel aus dem Buch ist in Python 2 geschrieben, daher die Unterschiede. Aber gut, dass du Python 3 verwendest. Ein einzelnes print() ohne Parameter gibt eine Leerzeile aus. Und ein Menschenjahr entspricht meines Wissens sieben Hundejahren.
Antworten