Totale Anfängerfrage

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
Vithonil
User
Beiträge: 3
Registriert: Sonntag 11. Dezember 2016, 23:09

Hallo zusammen,

ich habe vor kurzem fröhlich aus Interesse mit dem Programmieren angefangen und habe mich für Python entschieden. Ich wollte einen Taschenrechner programmieren, der den User zwei Zahlen eingeben lässt und diese dann je nach Eingabe des Benutzers entweder addiert, subtrahiert, miteinander multipliziert oder eben dividiert. Das funktioniert auch einigermaßen gut, aber leider wird kein Ergebnis ausgespuckt. Bin tatsächlich ratlos (komisch, so als Anfänger) und hoffe, ihr könnt mir da weiterhelfen und mir sagen, wo der Fehler ist, damit ich das in Zukunft vermeiden kann. Danke im Voraus!

Code: Alles auswählen

print('Which numbers do you want? ')

num1 = input('Choose your first number: ')
print('Number 1: ', num1)

num2 = input('Choose your second number: ')
print('Number 2: ', num2)

sel = input('Do you want to add, multiply, substract or divide? ')
if sel is 'add':
    sum = float(num1) + float(num2)
    print('The sum of {0} and {1} is {2}'.format(num1, num2, sum))
Zuletzt geändert von Anonymous am Sonntag 11. Dezember 2016, 23:59, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
BlackJack

@Vithonil: ``is`` prüft nicht ob die beiden Objekte den gleichen Wert haben, sondern ob es sich tatsächlich um exakt das selbe Objekt handelt. Es kann aber durchaus Zeichenketten mit dem gleichen Wert geben, die aber verschiedene Objekte sind.

Code: Alles auswählen

In [103]: a = u'sel'

In [104]: b = u'sel'

In [105]: a is b
Out[105]: False

In [106]: a == b
Out[106]: True
``is`` willst Du also nur verwenden wenn Du wirklich an der gleichen Identität interessiert bist und nicht wenn Du nur auf gleiche Werte testen möchtest. Meistens will man ``is`` nur mit Singletons verwenden, also Objekte die es nur *einmal* gibt. `None` wäre so ein Wert wo man fast immer ``is`` oder ``is not`` statt ``==`` oder ``!=`` verwendet.
Vithonil
User
Beiträge: 3
Registriert: Sonntag 11. Dezember 2016, 23:09

Wie würdest du denn überprüfen, was der Benutzer eingibt? (wenn es worte sind)
Benutzeravatar
__LC__
User
Beiträge: 32
Registriert: Dienstag 1. März 2011, 14:08
Wohnort: 127.0.0.1
Kontaktdaten:

Moin Vithonil.
Vithonil hat geschrieben:Wie würdest du denn überprüfen, was der Benutzer eingibt? (wenn es worte sind)
Wie BlackJack es schon hingeschrieben hat. Für deinen konkreten Fall also:

Code: Alles auswählen

if sel == 'add':
    pass
Schöne Grüße
Benutzeravatar
noisefloor
User
Beiträge: 3866
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

wie BlackJack es in Zeile 8 des Beispiels gezeigt hat: mit `==`.

Noch was anderes: `sum` ist ein schlechter Name für eine Variable, weil du damit die Build-In Funktion Names `sum` überschreibst. Was später im Code zu Problemen führt, wenn du das "echte" `sum` verwenden würdest.

Gruß, noisefloor
Vithonil
User
Beiträge: 3
Registriert: Sonntag 11. Dezember 2016, 23:09

Vielen Dank euch! :D :D
Antworten