Rookie in Python und ein Problem!

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
heraklion
User
Beiträge: 12
Registriert: Mittwoch 8. März 2017, 19:32

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?
CROOZER
User
Beiträge: 4
Registriert: Sonntag 5. März 2017, 13:49

Celcius ist ein String (Text). Den musst du in eine Zahl (int, float) umwandeln. Thats all
You name it, I do it !!
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

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.
heraklion
User
Beiträge: 12
Registriert: Mittwoch 8. März 2017, 19:32

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!
heraklion
User
Beiträge: 12
Registriert: Mittwoch 8. März 2017, 19:32

Hat sich erledigt...Vielen Vielen dank noch mal euch bedien
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

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.
heraklion
User
Beiträge: 12
Registriert: Mittwoch 8. März 2017, 19:32

@ /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
Floflo7201
User
Beiträge: 11
Registriert: Donnerstag 9. März 2017, 18:32

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)
Zuletzt geändert von Anonymous am Donnerstag 9. März 2017, 20:13, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
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…
CROOZER
User
Beiträge: 4
Registriert: Sonntag 5. März 2017, 13:49

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
You name it, I do it !!
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

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.
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

@Floflo7201: Deine Berechnung von Fahrenheit ist richtig, die Umrechnung in Celsius aber fehlerhaft.
dpxpd
User
Beiträge: 1
Registriert: Donnerstag 16. März 2017, 22:02

Celsius = float(input("Enter a temperature in Celsius: "))

Fahrenheit = 9.0 / 5.0 * Celsius + 32

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