Summe?

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
Wettkönig
User
Beiträge: 4
Registriert: Samstag 10. November 2012, 22:46

Hi, ich hab folgendes Problem. Ich soll ein Programm schreiben, dass mich auffordert nacheinander zwei Zahlen anzugeben und dann die Summe berechnet und anzeigt.Bloß es klappt einfach nicht.Ich zeig euch jetzt mal mein Programm hoffe ihr könnt mir helfen :K

Code: Alles auswählen

zahl1 = input("Gib zahl1 an:")
zahl2 = input("Gib zahl2 an:")
summe= zahl1+zahl2
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Leider sind die Infos sehr dürftig, man kann also nur raten, was nicht klappt.
Nun, entweder Du "siehst" das Ergebnis nicht auf dem Bildschirm oder Du hättest jetzt einfach mal ein anderes Ergebnis erwartet.

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
nomnom
User
Beiträge: 487
Registriert: Mittwoch 19. Mai 2010, 16:25

Hallo!

Ich nehme einfach mal an, dass du Python 3 benutzt. :)

Dann muss man erst einmal das Ergebnis von "input()" zu einem "int" konvertieren, also einer ganzen Zahl. So wie du das machst, ist das einfach nur die zweite Zahl an die erste angehängt, weil "input()" immer einen String zurückliefert, und du damit Python anweist, die Strings aneinanderzuketten.

Wenn du Python 2 benutzt, dann solltest du vermutlich "raw_input()" benutzen und die Ergebnisse zu einem "int" konvertieren und ganz wichtig: das Ergebnis ausgeben.

Code: Alles auswählen

a = int("42") # Beispiel um zu zeigen, wie man Strings in ints umwandelt
print(a) # bei Python 2 ohne Klammern
Benutzeravatar
StefanLawl
User
Beiträge: 92
Registriert: Donnerstag 7. Juni 2012, 20:23

nomnom hat geschrieben: Dann muss man erst einmal das Ergebnis von "input()" zu einem "int" konvertieren, also einer ganzen Zahl. So wie du das machst, ist das einfach nur die zweite Zahl an die erste angehängt, weil "input()" immer einen String zurückliefert, und du damit Python anweist, die Strings aneinanderzuketten.
Stimmt nicht ganz, raw_input() gibt immer einen String zurück, input() allerdings nicht.

Code: Alles auswählen

>>> a = input('1. Zahl: ')
1. Zahl: 5
>>> print a + 9
14
>>> 
>>> 
>>> a = raw_input('1. Zahl: ')
1. Zahl: 5
>>> print a + 9
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'int' objects
>>> 
Das Problem bei input() ist (wenn man es als Problem sehen will), dass man auch Funktionen damit aufrufen kann.

Code: Alles auswählen

>>> def multiply(a,b):
...   print a*b
... 
>>> command = input('Eingabe: ')
Eingabe: multiply(5,6)
30
>>> command = raw_input('Eingabe: ')
Eingabe: multiply(5,6)
>>> 
>>> print command
multiply(5,6)
Zuletzt geändert von StefanLawl am Sonntag 11. November 2012, 01:15, insgesamt 1-mal geändert.
Man sagt uns wir sollen der Idee gedenken und nicht des Mannes. Denn ein Mensch kann versagen. Er kann gefangen werden. Er kann getötet und vergessen werden. Aber 400 Jahre später kann eine Idee immer noch die Welt verändern.
-V
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

@StefanLawl: Hast du den Beitrag von nomnom gelesen?
nomnom hat geschrieben:Ich nehme einfach mal an, dass du Python 3 benutzt. :)
nomnom hat geschrieben:Wenn du Python 2 benutzt, dann solltest du vermutlich "raw_input()" benutzen und die Ergebnisse zu einem "int" konvertieren
Das Leben ist wie ein Tennisball.
Benutzeravatar
StefanLawl
User
Beiträge: 92
Registriert: Donnerstag 7. Juni 2012, 20:23

EyDu hat geschrieben:@StefanLawl: Hast du den Beitrag von nomnom gelesen?
Ja :)
Man sagt uns wir sollen der Idee gedenken und nicht des Mannes. Denn ein Mensch kann versagen. Er kann gefangen werden. Er kann getötet und vergessen werden. Aber 400 Jahre später kann eine Idee immer noch die Welt verändern.
-V
Benutzeravatar
/me
User
Beiträge: 3554
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

StefanLawl hat geschrieben:
EyDu hat geschrieben:@StefanLawl: Hast du den Beitrag von nomnom gelesen?
Ja :)
Aber nicht verstanden?
Wettkönig
User
Beiträge: 4
Registriert: Samstag 10. November 2012, 22:46

nomnom hat geschrieben:Hallo!

Ich nehme einfach mal an, dass du Python 3 benutzt. :)

Dann muss man erst einmal das Ergebnis von "input()" zu einem "int" konvertieren, also einer ganzen Zahl. So wie du das machst, ist das einfach nur die zweite Zahl an die erste angehängt, weil "input()" immer einen String zurückliefert, und du damit Python anweist, die Strings aneinanderzuketten.

Wenn du Python 2 benutzt, dann solltest du vermutlich "raw_input()" benutzen und die Ergebnisse zu einem "int" konvertieren und ganz wichtig: das Ergebnis ausgeben.

Code: Alles auswählen

a = int("42") # Beispiel um zu zeigen, wie man Strings in ints umwandelt
print(a) # bei Python 2 ohne Klammern
Nun, das hilft aber auch nicht weiter und ja ich benutze P3.
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

@Wettkönig
Nun ja, Dein Problem scheint zu sein, dass Du erstens kein Ergebnis siehst und zweitens ein anderes erwarten würdest, wenn Du es denn sehen könntest... :D

Code: Alles auswählen

>>> zahl1 = input('1. Zahl: ') #gib z. B. 34 ein
>>> zahl2 = input('2. Zahl: ') #und hier z. B. 12
>>> ergebnis = zahl1 + zahl2
>>> print(ergebnis)
3412
>>> type(ergebnis)
<class 'str'>
>>> zahl1 = int(input('1. Zahl: '))
>>> zahl2 = int(input('2. Zahl: '))
>>> ergebnis = zahl1 + zahl2
>>> print(ergebnis)
46
>>> type(ergebnis)
<class 'int'>
Jetzt klarer?

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Antworten