brauche Hilfe bei Rechner

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
fffrogi
User
Beiträge: 6
Registriert: Dienstag 17. Juli 2012, 15:15

Hallo,

ich hab heute mit Python angefangen ,scheitere aber schon bei einem meiner ersten Programme:
Es ging darum einen einfachen Newton-Rechner zu programmieren.
Hier der Quelltext:

Code: Alles auswählen

print("NewtonRechner")
print("Hier Masse in kg eingeben:")
m = input()
print("Beschleunigung in m/s² eingeben:")
a = input()
f = m * a
print("Das Ergebnis in Newton lautet:", f)
input
Bis zu dem Punkt an dem das Ergebnis angezeigt werden soll läuft alles ohne Probleme? Könnt ihr mir meinen Fehler erklären?
Vielen Dank im Vorraus
Fabian :D
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Hallo und Willkommen im Forum,

Welche Python-Version verwendest du denn? Das sieht mir nach einem Mix zwischen Python2 und Python3 aus.
the more they change the more they stay the same
Benutzeravatar
sparrow
User
Beiträge: 4164
Registriert: Freitag 17. April 2009, 10:28

Und vor allem: was genau geht denn nicht? Fehlermeldungen? Unerwünschtes Verhalten? Ergebnis stimmt nicht?
Mehr Details bitte.
fffrogi
User
Beiträge: 6
Registriert: Dienstag 17. Juli 2012, 15:15

Ich verwende Python 3.2.3.

Die Fehlermeldung lautet:

Code: Alles auswählen

Traceback (most recent call last):
  File "C:/Python/NewtonRechner", line 6, in <module>
    f = m * a
TypeError: can't multiply sequence by non-int of type 'str'
deets

Du musst die Eingaben erstmal zu Zahlen wandeln - denn sie sind Strings.

Code: Alles auswählen

a = int("10")
fffrogi
User
Beiträge: 6
Registriert: Dienstag 17. Juli 2012, 15:15

Und wenn a durch den Benutzer eingegeben werden soll dann so:

Code: Alles auswählen

a = int(input)
?? :K
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Fast. Du wills ja das ERGEBNIS von input in einen Integer umwandeln, daher musst du input noch aufrufen:

Code: Alles auswählen

m = int(input())
Das Leben ist wie ein Tennisball.
fffrogi
User
Beiträge: 6
Registriert: Dienstag 17. Juli 2012, 15:15

Jetzt hab ichs verstanden, Danke für eure schnelle Hilfe. :)
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

@fffrogi:
'input()' liefert einen string.
'int()' liefert eine Zahl.
Das was 'input()' also liefert, musst Du wiederum an 'int()' weiterreichen. Also:

Code: Alles auswählen

>>> a = input()
10
>>> a
'10'
>>> a = int(a)
>>> a
10
Etwas kompakter:

Code: Alles auswählen

>>> a = int(input())
10
>>> a
10
Und einen Prompt kannst Du übrigens auch gleich an 'input()' übergeben, damit sparst Du Dir ein 'print()':

Code: Alles auswählen

>>> a = int(input('Beschleunigung in m/s² eingeben: '))
Beschleunigung in m/s² eingeben: 10
>>> a
10
mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
fffrogi
User
Beiträge: 6
Registriert: Dienstag 17. Juli 2012, 15:15

Ich habs das gleiche noch mit der Masse versucht, aber es kommt immer was falsches raus :K

Code: Alles auswählen

#Masse ausrechnen
#g=Kraft
#b=Beschleunigung
#r=Masse
     print("Hier Kraft in N eingeben:")
     g = int(input())
     print("Hier Beschleunigung in m/s² eingeben:")
     b = int(input())
     r = g * b
     print("Das Ergennis in kg lautet:", g)
     input()
     exit
:oops:
Benutzeravatar
/me
User
Beiträge: 3554
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Wenn du Nachkommastellen möchtest, dann solltest du keine Integerwerte verwenden. Verwende in dem Fall float() statt int().

Wenn du ein Tutorial für den Einstieg suchst dann schau mal unter http://docs.python.org/py3k/tutorial/.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo,

da stimmen gleich mehrere Sachen nicht: Zunächst musst du dir über den richtigen Datentyp Gedanken machen. Momentan wandelst du alles in einen Integer um, vielleicht wäre ``float`` hier aber doch angebracht und nicht ``int``. Außerdem rufst du ``exit`` überhaupt nicht auf, da hast du einfach die Klammern vergessen. Aber wahrscheinlich brauchst du den exit-Aufruf gar nicht.

Wenn bei dir etwas nicht funktioniert wie gewünscht, dann solltest du auch angeben, wie es zu dem Fehler kommt und was für ein Ergebnis du erwartest. Also konkret: was hast du eingegeben, was wurde ausgegeben und was hätte ausgegeben werden sollen. Und ggf. dazu noch die Fehlermeldung inklusive des gesamten Tracebacks.

Nun aber zu deinem eigentlichen Fehler: Beim Programmieren ist es unglaublich wichtig, dass man sprechende Namen vergibt. g, b und r sagen mal gar nichts aus. Bennene bei dir mal alles richtig, dann wirst du schon über den Fehler stolpern (und dich darüber ärgern, wie dumm dieser Fehler war ;-) ).

Sebastian
Das Leben ist wie ein Tennisball.
fffrogi
User
Beiträge: 6
Registriert: Dienstag 17. Juli 2012, 15:15

stimmt hab die namen der Variablen verändert und bin selbst drauf gekommen!! :D
Antworten