Taschenrechner Python

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.
SerBlack
User
Beiträge: 41
Registriert: Freitag 31. März 2017, 11:45

Code: Alles auswählen

num1 = input("Gib die erste Zahl ein: ")
oper = input("Welche Rechenoperation soll durchgefuehrt werden? (+,-,/.,*): ")
num2 = input("Gib die zweite Zahl ein: ")

num1 = int(num1)
num2 = int(num2)

if (oper == ""+""):
    print("Deine Rechnung:", num1, " + ", num2)
    print("Ergebnis:", num1 + num2)

elif(oper == "-"):
    print("Deine Rechnung:", num1, " - ", num2)
    print("Ergebnis:", num1 + num2)
    
elif(oper == "/"):
    print("Deine Rechnung:", num1, " / ", num2)
    print("Ergebnis:", num1 / num2)
    
elif(oper == "*"):
    print("Deine Rechnung:", num1, " * ", num2)
    print("Dein Ergebnis:", num1 * num2)
else:
    print("Deine Eingaben sind nicht gueltig")

jein = input("Willst du weiter rechnen? (Ja/Nein)")

jein = str(jein)

if(jein == "ja","Ja"):
    
elif(jein == "nein","Nein"):
    
So, ich bin mit Python etwas weiter gekommen, ich habe hier ein Problem: Wenn man gerechnet hat, will ich dass der Taschenrechner wieder von Anfang anfängt wenn man mit Ja beantwortet hat.
BlackJack

@SerBlack: Die Addition funktioniert nicht, beziehungsweise nicht wenn der Benutzer ein '+' eingibt. Er kann aber etwas anderes eingeben um zu addieren. Was?

Um die Bedingungen bei ``if`` und ``elif`` gehören keine Klammern.

Das Ergebnis der `input()`-Funktion ist in Python 3 bereits eine Zeichenkette. Es macht also keinen Sinn diese Zeichenkette in eine Zeichenkette umzuwandeln. Der Wert wird dadurch nicht ”zeichenkettiger”. :-)

Die letzten beiden Vergleiche werden so nicht funktionieren. Eine Zeichenkette mit einem Tupel zu vergleichen wird *immer* `False` ergeben.

Das Problem mit dem Wiederholen löst man üblicherweise mit einer ``while True:``-Schleife, die mit ``break`` abgebrochen wird, wenn der Benutzer nicht noch eine Berechnung machen möchte.
SerBlack
User
Beiträge: 41
Registriert: Freitag 31. März 2017, 11:45

Oh, du hast recht: Hatte mich verschrieben ... Jetzt funktioniert auch - aber + funktioniert nicht, verstehe nicht ganz warum das nicht funktioniert.
also soll ich jetzt while true, wo sollte das stehen?

EDIT: Hat sich erledigt, außer mit dem while true

Code: Alles auswählen

# -*- coding: iso-8859-1 -*-
num1 = input("Gib die erste Zahl ein: ")
oper = input("Welche Rechenoperation soll durchgeführt werden? (+,-,/.,*): ")
num2 = input("Gib die zweite Zahl ein: ")


num1 = int(num1)
num2 = int(num2)

if(oper == "+"):
    print("Deine Rechnung:", num1, " + ", num2)
    print("Ergebnis:", num1 + num2)

elif(oper == "-"):
    print("Deine Rechnung:", num1, " - ", num2)
    print("Ergebnis:", num1 - num2)
    
elif(oper == "/"):
    print("Deine Rechnung:", num1, " / ", num2)
    print("Ergebnis:", num1 / num2)
    
elif(oper == "*"):
    print("Deine Rechnung:", num1, " * ", num2)
    print("Dein Ergebnis:", num1 * num2)
else:
    print("Deine Eingaben sind nicht gültig")
EEK
User
Beiträge: 14
Registriert: Donnerstag 6. April 2017, 07:41

SerBlack hat geschrieben: EDIT: Hat sich erledigt, außer mit dem while true
Das mit dem while true machst du so in etwa:

Code: Alles auswählen

# -*- coding: iso-8859-1 -*-

while True:
    num1 = input("Gib die erste Zahl ein: ")
    oper = input("Welche Rechenoperation soll durchgeführt werden? (+,-,/.,*): ")
    num2 = input("Gib die zweite Zahl ein: ")

    num1 = int(num1)
    num2 = int(num2)

    if (oper == "+"):
        print("Deine Rechnung:", num1, " + ", num2)
        print("Ergebnis:", num1 + num2)

    elif (oper == "-"):
        print("Deine Rechnung:", num1, " - ", num2)
        print("Ergebnis:", num1 - num2)

    elif (oper == "/"):
        print("Deine Rechnung:", num1, " / ", num2)
        print("Ergebnis:", num1 / num2)

    elif (oper == "*"):
        print("Deine Rechnung:", num1, " * ", num2)
        print("Dein Ergebnis:", num1 * num2)
    else:
        print("Deine Eingaben sind nicht gültig")

    jein = input("Willst du weiter rechnen? (Ja/Nein)")

    if jein == 'nein':
        break

SerBlack
User
Beiträge: 41
Registriert: Freitag 31. März 2017, 11:45

Danke, funktioniert aber nicht ganz, wenn ich Nein antworte, macht er weiter und hört nicht auf.

EDIT: Doch, nur musste ich auf klein/großschreibung achten
dies habe ich so gelöst:

Code: Alles auswählen

    if jein == 'nein' or 'Nein':
        print("Tschüss")
EEK
User
Beiträge: 14
Registriert: Donnerstag 6. April 2017, 07:41

SerBlack hat geschrieben: EDIT: Doch, nur musste ich auf klein/großschreibung achten
dies habe ich so gelöst:

Code: Alles auswählen

    if jein == 'nein' or 'Nein':
        print("Tschüss")
Wenn du es "richtig" machen willst, musst aber auch noch Falscheingaben abfangen. Also z.B. wenn sich jemand vertippt: "nien", "aj"...
BlackJack

@SerBlack: Das hast Du ziemlich sicher nicht so gelöst, denn das funktioniert nicht.
SerBlack
User
Beiträge: 41
Registriert: Freitag 31. März 2017, 11:45

Doch, bei mir funktioniert es.
https://vid.me/Bs0g
Zuletzt geändert von SerBlack am Donnerstag 6. April 2017, 09:26, insgesamt 1-mal geändert.
EEK
User
Beiträge: 14
Registriert: Donnerstag 6. April 2017, 07:41

BlackJack hat geschrieben:@SerBlack: Das hast Du ziemlich sicher nicht so gelöst, denn das funktioniert nicht.
Stimmt, das wäre mir jetzt gar nicht aufgefallen.
EEK
User
Beiträge: 14
Registriert: Donnerstag 6. April 2017, 07:41

SerBlack hat geschrieben:Doch, bei mir funktioniert es.
Kann nicht sein, weil sich das

[codebox=pycon file=Unbenannt.txt]
or "Nein"
[/code]

nicht auf das erste "jein" bezieht
SerBlack
User
Beiträge: 41
Registriert: Freitag 31. März 2017, 11:45

Ich weiß nicht was ihr alle habt, aber bei mir funktioniert es!
https://vid.me/43Vs
EEK
User
Beiträge: 14
Registriert: Donnerstag 6. April 2017, 07:41

SerBlack hat geschrieben:Ich weiß nicht was ihr alle habt, aber bei mir funktioniert es!
https://vid.me/43Vs
Dann gib mal z.B. "Ja" ein
SerBlack
User
Beiträge: 41
Registriert: Freitag 31. März 2017, 11:45

EEK
User
Beiträge: 14
Registriert: Donnerstag 6. April 2017, 07:41

SerBlack hat geschrieben:https://vid.me/lYGM bitte
Entweder hast du den Code geändert oder keine Ahnung. So wie in deinem Beispiel kann es jedenfalls nicht funktionieren.
Von mir aus behauptest du auch weiter, dass es so funktioniert, aber wenn dir Leute "BlackJack" die wirklich Ahnung haben, sagen, dass du falsch liegst, solltest du vielleicht darauf hören wenn du was lernen willst.
BlackJack

@SerBlack: EEK meinte bei dem falschen Code. Die relevante Zeile musst Du ja geändert haben. Und im Video ist die nun nicht mehr zu sehen. Warum wohl…
SerBlack
User
Beiträge: 41
Registriert: Freitag 31. März 2017, 11:45

Oh, da habt ihr recht :( das war der alte code.
wie kann man es dann lösen?
EEK
User
Beiträge: 14
Registriert: Donnerstag 6. April 2017, 07:41

SerBlack hat geschrieben:Oh, da habt ihr recht :( das war der alte code.
wie kann man es dann lösen?
Jetzt überleg mal! Wenn
[codebox=pys60 file=Unbenannt.txt]
if jein == 'nein':
[/code]
funktioniert.
[codebox=pys60 file=Unbenannt.txt]
if jein == 'nein' or 'Nein':
[/code]
aber nicht, was muss denn dann zwischen [codebox=pys60 file=Unbenannt.txt]'nein' or [/code]und[codebox=pys60 file=Unbenannt.txt] 'Nein':[/code]?
BlackJack

@SerBlack: Entweder rechts und links vom ``or``-Operator einen Vergleich durchführen, oder die Eingabe beispielsweise in Kleinbuchstaben umwandeln und mit 'nein' vergleichen. Dann hat man alle Kombinationen 'nein' in Gross- und Kleinbuchstaben zu schreiben erschlagen.
SerBlack
User
Beiträge: 41
Registriert: Freitag 31. März 2017, 11:45

BlackJack hat geschrieben:@SerBlack: Entweder rechts und links vom ``or``-Operator einen Vergleich durchführen, oder die Eingabe beispielsweise in Kleinbuchstaben umwandeln und mit 'nein' vergleichen. Dann hat man alle Kombinationen 'nein' in Gross- und Kleinbuchstaben zu schreiben erschlagen.
Habe gerade im Internet gesucht und nicht gefunden, wie wandelt man die Eingabe in Kleinbuchstaben um?
EEK
User
Beiträge: 14
Registriert: Donnerstag 6. April 2017, 07:41

SerBlack hat geschrieben:
BlackJack hat geschrieben:@SerBlack: Entweder rechts und links vom ``or``-Operator einen Vergleich durchführen, oder die Eingabe beispielsweise in Kleinbuchstaben umwandeln und mit 'nein' vergleichen. Dann hat man alle Kombinationen 'nein' in Gross- und Kleinbuchstaben zu schreiben erschlagen.
Habe gerade im Internet gesucht und nicht gefunden, wie wandelt man die Eingabe in Kleinbuchstaben um?
Gleich der erste Treffer bei google: http://stackoverflow.com/questions/6797 ... -in-python
Antworten