Fehler: Variable nicht definiert - meiner Meinung nach aber ja

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
Benutzeravatar
michi-monster
User
Beiträge: 36
Registriert: Donnerstag 7. Dezember 2017, 18:30
Kontaktdaten:

Donnerstag 1. März 2018, 18:07

Halli,
ich habe gerade eine Übung gemacht. Es kommt der Fehler:

Code: Alles auswählen

Traceback (most recent call last):
  File "umrechnung-temperatur.py", line 11, in <module>
    celsius = Kelvin - 273.15
NameError: name 'Kelvin' is not defined
Der Code lautet:

Code: Alles auswählen

#/usr/bin/python
print ("Bitte wählen sie die gewünschte Umrechnung\
(1) Umrechnung von Celsius nach Kelvin\
(2) Umrechnung von Celsius nach Fahrenheit\
(3) Umrechnung von Kelvin nach Celsius\
(4) Umrechnung von Kelvin nach Fahrenheit\
(5) Umrechnung von Fahrenheit nach Celsius\
(6) Umrechnung von Fahrenheit nach Kelvin ")
auswahl=input ()
auswahl = int(auswahl)
celsius = Kelvin - 273.15
celsius = int(celsius)

if auswahl==1:
	print ("ok - von Kelvin nach Celsius")
print ("Bitte Grad kelvin eingeben")
kelvin=input()
kelvin=int(celsius)

print (celsius)
Ich verstehe nicht, warum er ne Definitation von kelvin will. - ich hab das input doch festgelegt... Bitte helft mir mal.
Benutzeravatar
snafu
User
Beiträge: 5494
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Donnerstag 1. März 2018, 18:51

Python unterscheidet zwischen Groß- und Kleinschreibung: Du hast kelvin definiert, aber nicht Kelvin.
shcol (Repo | Doc | PyPi)
Sirius3
User
Beiträge: 8270
Registriert: Sonntag 21. Oktober 2012, 17:20

Freitag 2. März 2018, 08:11

@snafu: an der Stelle, wo der Fehler auftritt, ist egal in welcher Schreibweise "Kelvin" nicht definiert.

@michi-monster: ein Programm läuft von oben nach unten ab, und es nimmt genau die Werte und Variablen, die davor definiert wurden. Du benutzt Kelvin um celsius auszurechnen, und celsius um kelvin auszurechnen, da beißt sich die Katze in den Schwanz.
ruedi_br
User
Beiträge: 11
Registriert: Montag 11. September 2017, 08:24

Freitag 2. März 2018, 15:16

Hallo Michi-Monster,
wie wäre eine Variante, alles Umrechnen in einer if-elif-Mimik zu erledigen und einmal die umzurechnende Temperatur einzugeben:

Code: Alles auswählen

eingabe = Input("umzurechnende Temperatur")
und dann

Code: Alles auswählen

if Auswahl == 1:
    formel1 usw
macht das m.E. etwas übersichtlicher
WernerSch
User
Beiträge: 13
Registriert: Sonntag 25. Februar 2018, 19:50

Montag 5. März 2018, 22:57

versuch das mal

Code: Alles auswählen

#/usr/bin/python
print ("Bitte wählen sie die gewünschte Umrechnung\
(1) Umrechnung von Celsius nach Kelvin\
(2) Umrechnung von Celsius nach Fahrenheit\
(3) Umrechnung von Kelvin nach Celsius\
(4) Umrechnung von Kelvin nach Fahrenheit\
(5) Umrechnung von Fahrenheit nach Celsius\
(6) Umrechnung von Fahrenheit nach Kelvin ")
auswahl=input ()
auswahl = int(auswahl)
kelvin=input()
#celsius = Kelvin - 273.15
celsius = kelvin - 273.15
celsius = int(celsius)

if auswahl==1:
   print ("ok - von Kelvin nach Celsius")
print ("Bitte Grad kelvin eingeben")

kelvin=int(celsius)

print (celsius)
WernerSch
User
Beiträge: 13
Registriert: Sonntag 25. Februar 2018, 19:50

Montag 5. März 2018, 23:10

war nicht ganz richtig , meine vorherige Lösung
Versuch das mal

Code: Alles auswählen

#/usr/bin/python
print ("Bitte wählen sie die gewünschte Umrechnung\
(1) Umrechnung von Celsius nach Kelvin\
(2) Umrechnung von Celsius nach Fahrenheit\
(3) Umrechnung von Kelvin nach Celsius\
(4) Umrechnung von Kelvin nach Fahrenheit\
(5) Umrechnung von Fahrenheit nach Celsius\
(6) Umrechnung von Fahrenheit nach Kelvin ")
auswahl=input ()
auswahl = int(auswahl)
kelvin=input()
kelvin=float(kelvin)
#celsius = Kelvin - 273.15
celsius = (kelvin-273.15)
celsius = int(celsius)

if auswahl==1:
    print ("ok - von Kelvin nach Celsius")
print ("Bitte Grad kelvin eingeben")

kelvin=int(celsius)

print (celsius)
Benutzeravatar
kbr
User
Beiträge: 914
Registriert: Mittwoch 15. Oktober 2008, 09:27

Montag 5. März 2018, 23:29

Also wenn, dann so:

Code: Alles auswählen

choice = int(input('Umrechnung wählen: '))
if choice == 1:
    celsius = float(input('Grad Celsius eingeben: '))
    kelvin = celsius + 273.16
    print('Kelvin: ', kelvin)
...
Und im übrigen: es heißt zwar Grad Celsius, nicht aber Grad Kelvin, sondern nur Kelvin.
WernerSch
User
Beiträge: 13
Registriert: Sonntag 25. Februar 2018, 19:50

Dienstag 6. März 2018, 22:43

Guten Abend
Vielen Herzlichen Dank an @kbr . Dein Beispiel hilft mir bei meinem aktuellen Projekt sehr viel weiter
Benutzeravatar
DeaD_EyE
User
Beiträge: 207
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Mittwoch 7. März 2018, 10:58

Für Abfragen kann man generische Funktionen konstruieren.

Code: Alles auswählen

def abfrage(frage, datentyp, fehler):
    while True:
        antwort = input(frage)
        try:
            return datentyp(antwort)
        except ValueError:
            print(fehler)

abfrage('Wie viele Kuchen hast du gebacken? ', int, 'Bitte eine ganzzahl eingeben.')
Keine Ahnung wieso ich jetzt auf Kuchen gekommen bin. War gerade in meinem Kopf.
sourceserver.info - sourceserver.info/wiki/ - Support für HL2-Server
Antworten