Python, erste Anfängerfrage
Dennis hats Gefunden!
- programmiertechnik
Hallo liebe SelfCommunity,
seit ein paar Stunden mach ich mich mit der Syntax von Python vertraut und habe mein erstes kleines "Umrechnungsprogramm" geschrieben :).
Hier sollten eigentlich die Sekunden oder wahlweise Stunden und Sekunden zerlegt werden (mir ist gerade nicht besseres eingefallen).
Doch wenn die Variable "frage" auf den Wert "s" (oder was anderes geprüft wird (siehe Else)) sagt mir den Dbg:
exceptions.NameError: name 's' is not defind
Wieso? Der wert 's' kann doch vorher garnicht definiert werden da ich doch garnicht weiß was eingegeben wird daher ja die Abfrage.
Natürlich liegt der Fehler nicht an Pyhton sondern an mir.. doch leider habe keinen Plan was los ist....
Hat jemand Rat?
Hier der Code:
#
# Variablen
#
eingabeMinuten = 0
ausgabeSekunden = 60
eingabeStunden = 0
#
# Abfrage ob Minuten oder Stunden
#
frage = input("Stunden oder Minuten s/m ?")
if frage == "s":
eingabeStunden = input("Stunden/Hours")
if eingabeStunden == 0:
print "Ende, Programm wurde abgebrochen!"
ausgabeSekunden=ausgabeSekunden * 60 * eingabeStunden
print eingabeStunden, " Stunden hat ", ausgabeSekunden, " Sekunden!"
else:
eingabeMinuten = input("Minuten/Minutes")
if eingabeMinuten ==0:
print "Ende, Programm wurde abgebrochen"
ausgabeSekunden=ausgabeSekunden * eingabeMinuten
print eingabeMinten, " Minuten hat ",ausgabeSekunden, " Sekunden!"
Hallo Dennis,
seit ein paar Stunden mach ich mich mit der Syntax von Python vertraut und habe mein erstes kleines "Umrechnungsprogramm" geschrieben :).
welche Python-Version hast Du Dir besorgt?
Python 3.0 weist inkompatible Änderungen zu Python 2.x auf.
> ausgabeSekunden = 60
> frage = input("Stunden oder Minuten s/m ?")
# Vorsicht: Zeichenkette mal Integer bedeutet, dass die Zeichenkette
# entsprechend oft wiederholt wird :-)
# Beispiel
# a = "123" # a enthält die Zeichenkette 123, nicht eine Zahl
# b = a * 3 # b enthält nun die Zeichenkette 123123123 und nicht 369!
# Was input() einliest, sind Zeichenketten.
# Du musst diese explizit in eine Integer umwandeln:
# was zu einer Exception führen kann, wenn die Umwandlung scheitert.
eingabeStunden = int(eingabeStunden)
# d.h. Du solltest die Umwandlung in einen try-catch-Block packen.
> ausgabeSekunden=ausgabeSekunden * 60 * eingabeStunden
# Ab Python 3 musst Du die Argumente von print in Klammern setzen.
# Stolperstein: [link:http://docs.python.org/3.0/whatsnew/3.0.html#print-is-a-function@title=print() ist eine Funktion].
> print (eingabeStunden, " Stunden hat ", ausgabeSekunden, " Sekunden!")
> else:
# Hier hast Du einen Tippfehler, es fehlt das "u" in eingabeMinuten.
> print (eingabeMinten, " Minuten hat ",ausgabeSekunden, " Sekunden!")
Freundliche Grüße
Vinzenz
Hey,
wow, ich glaube das ich die nächsten 32 Jahre nicht darauf gekommen wäre!
Supi! Ich danke dir echt vielmals!
Werde demnächst auf String wie INT Variablen achten :)
Hi!
exceptions.NameError: name 's' is not defind
frage = input("Stunden oder Minuten s/m ?")
if frage == "s":
Lies bitte die Beschreibung zur Funktion input(). Du möchtest sicherlich stattdessen die dort erwähnte Funktion raw_input() verwenden.
Lo!
Hallo dedlfix,
frage = input("Stunden oder Minuten s/m ?")
Lies bitte die Beschreibung zur Funktion input(). Du möchtest sicherlich stattdessen die dort erwähnte Funktion raw_input() verwenden.
falls Dennis noch Python 2.x verwendet. In Python 3.0 wurde raw_input() zu input() umbenannt, siehe Changelog.
Freundliche Grüße
Vinzenz
Hi!
Lies bitte die Beschreibung zur Funktion input(). Du möchtest sicherlich stattdessen die dort erwähnte Funktion raw_input() verwenden.
falls Dennis noch Python 2.x verwendet. In Python 3.0 wurde raw_input() zu input() umbenannt, siehe Changelog.
Davon kann man ausgehen, denn raw_input() oder input() in Version 3 hätte den von ihm genannten Fehler nicht erzeugt. Alternativ zu raw_input() wäre ein Umstieg auf Version 3.1. Die ist auch als "stable" gekennzeichnet, wird aber auf der Download-Seite derzeit weniger prominent "verkauft".
Lo!