Seite 1 von 1

Rookie in Python und ein Problem!

Verfasst: Mittwoch 8. März 2017, 19:40
von heraklion
Moin Moin,

ich bin neu in der Python 3.0 Welt und hab ein Problem und Zwar,

als Anfänger möchte ich ein Programm schreiben, das Fahrenheit in Celsius umrechnet.

Code: Alles auswählen


print("Dieser Programm rechnet die Temperatur von Celsius in Fahrenheit")
print("----------------------------------------------------------------")
print

Celsius= input("Bitte geben Sie die Temperaturwert in Celsius ein: ")

Fahrenheit=9.0/5.0*Celsius+32


print
print("Sie haben %f Grad Celsius eingegeben")%Celsius
print
print("Diese Temperatur entspricht %f Grad Fahrenheit.")%Fahrenheit
ich bekomme immer diese Fehlermeldung:

Code: Alles auswählen

Traceback (most recent call last):
  File "C:/Users/Pouria/Documents/Python/tut-2.py", line 10, in <module>
    Fahrenheit=Celsius+32
TypeError: must be str, not int
wo liegt das Problem eigentlich?

könnte Jemand mir erklären?

Re: Rookie in Python und ein Problem!

Verfasst: Mittwoch 8. März 2017, 19:54
von CROOZER
Celcius ist ein String (Text). Den musst du in eine Zahl (int, float) umwandeln. Thats all

Re: Rookie in Python und ein Problem!

Verfasst: Mittwoch 8. März 2017, 20:48
von pixewakb
Da ist mehr kaputt, ich habe das mal korrigiert, insbesondere die Sache mit dem %Celsius usw.:

Code: Alles auswählen

print("Dieser Programm rechnet die Temperatur von Celsius in Fahrenheit um.")
print("-" * 68)

celsius = input("Bitte geben Sie die Temperaturwert in Celsius (z. B. '23.0') ein: ")
fahrenheit = 9 / 5 * float(celsius) + 32

print("-" * 68)
print("Sie haben %f Grad Celsius eingegeben"%float(celsius))
print("Diese Temperatur entspricht %f Grad Fahrenheit."%fahrenheit)
Ich würde ändern nach:

Code: Alles auswählen

print("Dieser Programm rechnet die Temperatur von Celsius in Fahrenheit um.")
print("-" * 68)

celsius = float(input("Bitte geben Sie die Temperaturwert in Celsius (z. B. '23.0') ein: "))
fahrenheit = 9 / 5 * celsius + 32

print("-" * 68)
print("Sie haben {:.2f} Grad Celsius eingegeben".format(celsius))
print("Diese Temperatur entspricht {:.2f} Grad Fahrenheit.".format(fahrenheit))
Mir gefällt nicht, dass falsche Eingaben nicht abgefangen werden. Es dürfte eher nicht vorkommen, dass ein Benutzer aus unseren Breiten eine Gleitkommazahl mit einem Punkt schreibt, d. h. ein etwaiger ValueError wird nicht abgefangen. Die Umrechnung würde ich eher in eine Funktion auslagern und - das habe ich erledigt - statt der Sache mit dem %... lieber format(...) nutzen.

Re: Rookie in Python und ein Problem!

Verfasst: Mittwoch 8. März 2017, 21:23
von heraklion
Vielen Vielen herzlichen Dank...
Ich versuche nummerische Berechnungen mit Python zu lernen und habe ein Buch gekauft. In diesem Buch ist leider Version 2.7 durchgeführt worden und nicht 3.0. Ich habe aber nur 3.0 zur Verfügung :roll:

@pixewakb: das Problem ist immer noch da!

Re: Rookie in Python und ein Problem!

Verfasst: Mittwoch 8. März 2017, 22:02
von heraklion
Hat sich erledigt...Vielen Vielen dank noch mal euch bedien

Re: Rookie in Python und ein Problem!

Verfasst: Donnerstag 9. März 2017, 09:30
von /me
heraklion hat geschrieben:Ich habe aber nur 3.0 zur Verfügung :roll:
Mit 3.0 meinst du aber hoffentlich nicht wirklich 3.0. Die aktuelle Version aus der 3er-Reihe ist 3.6. 3.0 ist über 8 Jahre alt. Das wäre nicht grundsätzlich tragisch, aber 3.0 ist selbst nach Aussagen einiger Core-Entwickler eigentlich unbenutzbar. Ich persönlich fand Python3 erst ab 3.2 wirklich einsetzbar.

Re: Rookie in Python und ein Problem!

Verfasst: Donnerstag 9. März 2017, 18:49
von heraklion
@ /me

Nein ich habe gestern 3.6.0 heruntergeladen und benutze diese Version.

Das Problem ist,das Buch ich zum Lernen habe, hat alles mit 2.x Version gemacht und erklärt und das ist leider das einzige vernünftige Buch über Numerik mit Python. Deshalb soll man erst wirklich diese Unterschieden herausfinden und genau das macht die Arbeit schwierig

Re: Rookie in Python und ein Problem!

Verfasst: Donnerstag 9. März 2017, 19:54
von Floflo7201
Ganz einfach :D
Das ist sehr einfach geschrieben aber funktioniert so wie es soll

Code: Alles auswählen

a=float(input("Geben sie die Temeperatur in Fahrenheit ein:"))
Celsius=a-32*(5/9)
print("Temperatur von Fahrenheit in Celsius:",Celsius)
a=float(input("Geben sie die Temperatur in Celcius ein:"))
Fahrenheit=round(a*(5/9)+32)
print("Temperatur von Celsius in Fahrenheit",Fahrenheit)

Re: Rookie in Python und ein Problem!

Verfasst: Donnerstag 9. März 2017, 20:19
von BlackJack
@Floflo7201: Wenn ich 30 °F eingebe, bekomme ich 12.2 °C als Ausgabe, und wenn ich die dann zur Gegenprobe verwende, sagt das Programm das wären 100 °F. Da stimmt wohl etwas nicht…

Re: Rookie in Python und ein Problem!

Verfasst: Donnerstag 9. März 2017, 20:28
von CROOZER
heraklion hat geschrieben: ... und das ist leider das einzige vernünftige Buch über Numerik mit Python. Deshalb soll man erst wirklich diese Unterschieden herausfinden und genau das macht die Arbeit schwierig
Hallo heraklion,
ohne dir zu nahe treten zu wollen, bei dem vorgestellten Code bist du nicht an der Numerik gescheitert. Dir hilft ev. ein allgemeines Tutorial (kostenlos, online, 20-30h, 2.7 oder 3.6)

CROOZER

Re: Rookie in Python und ein Problem!

Verfasst: Freitag 10. März 2017, 22:36
von pixewakb
heraklion hat geschrieben:@ /me

Nein ich habe gestern 3.6.0 heruntergeladen und benutze diese Version.

Das Problem ist,das Buch ich zum Lernen habe, hat alles mit 2.x Version gemacht und erklärt und das ist leider das einzige vernünftige Buch über Numerik mit Python. Deshalb soll man erst wirklich diese Unterschieden herausfinden und genau das macht die Arbeit schwierig
(Stadt-/Landes-/Uni-)Bibliothek und dann ausleihen: Viel hilft viel, soll heißen ansehen und zurückstellen, wenn es nicht gefällt. Ich bin mit dem Buch von Michael Weigend gut gefahren, hat mir sehr gefallen. Ich habe aber nur die ersten 10 Kapitel durchgearbeitet, den Rest mal überflogen. Nach den ersten 10 Kapiteln konnte ich mit den Online-Hilfen usw. weitermachen. Zum Einstieg gefällt mir eigentlich immer noch das OpenBook aus dem Rheinwerk-Verlag, qualitativ ist es - wohl Konsens hier im Forum - nicht gut, aber die Onlineversion bietet eine schnelle Information über verschiedene Themen und das auf Deutsch. Es geistert m. E. immer noch eine Version im Netz. Das war mein Zugang zu Python.

PS: https://www.scipy.org/ und z. B. IPython, Sympy usw. usf.

Re: Rookie in Python und ein Problem!

Verfasst: Freitag 10. März 2017, 23:24
von kbr
@Floflo7201: Deine Berechnung von Fahrenheit ist richtig, die Umrechnung in Celsius aber fehlerhaft.

Re: Rookie in Python und ein Problem!

Verfasst: Donnerstag 16. März 2017, 22:07
von dpxpd
Celsius = float(input("Enter a temperature in Celsius: "))

Fahrenheit = 9.0 / 5.0 * Celsius + 32

print("Temperature:", Celsius, "Celsius = ", Fahrenheit, " F")