Hallo zusammen,
Ich habe ein kleines Problem mit dem Taschenrechner:
print ('Wie möchtest du rechnen?')
print ('1 = addieren')
print ('2 = subtrahieren')
print ('3 = dividieren')
print ('4 = multiplizieren')
i = int(input())
if i > 4:
print ("ERROR")
print ("Bitte gib eine Nummer zwischen 1 und 4 ein.")
print ('Gib eine Zahl ein')
zahl1 = int(input())
print ('Gib eine zweite Zahl ein')
zahl2 = int(input())
if i == 1:
antwort = (zahl1 + zahl2)
elif i == 2:
antwort = (zahl1 - zahl2)
elif i == 3:
antwort = (zahl1 / zahl2)
elif i == 4:
antwort = (zahl1 * zahl2)
print (antwort)
print ('Bitte Eingabetaste drücken um das Programm zu beenden')
end = input()
Und zwar, ich weiß nicht wie ich die erste If-Bedingung beenden soll. Nach dem 2 print kommt direkt der dritte. Aber ich will ja so machen, dass der Computer mich nochmal fragt dass man eine Zahl zwischen 1-4 eingibt nachdem man zum Beispiel eine 5 eingegeben hat. Also quasi die erste If-Bedingung (oder vielleicht Schleife?) beenden und dann erst der Satz: "'Gib eine Zahl ein" kommt. Würde mich über eine Antwort freuen, Grüße
Python Einfacher Taschenrechner
Nunja, du hast in deiner ersten if ja keine alternative Route. Sogesehen überprüfst du, ob i>4 ist und machst dann die Ausgabe. Anschließend läuft der Code nach der if unten weiter. Im einfachsten Fall kannst du einfach sagen:
Wenn du willst, dass der Benutzer solange gefragt wird, bis i<4 eingegeben wird, dann kannst du deine Eingabe wiederholt in einer while-Schleife einbringen und die Bedingung wäre eine Abfrage auf i
Code: Alles auswählen
print ('Wie möchtest du rechnen?')
print ('1 = addieren')
print ('2 = subtrahieren')
print ('3 = dividieren')
print ('4 = multiplizieren')
i = int(input())
if i>4: # Ausführen, wenn i>4
print ("ERROR")
print ("Bitte gib eine Nummer zwischen 1 und 4 ein.")
else: # Ausführen wenn i nicht > 4
# dein rest
# Unten drunter -> wird immer ausgeführt, da dieser Teil nichts mehr mit der if/else Abfrage zu tun hat
AMD Ryzen 7 3700X
Gigabyte Nvidia Gefroce RTX 2070 Super Windforce OC
Gigabyte X570 Aorus Elite AMD
HyperX Savage DDR4-2400 2*8192MB
Win10 64 Bit (10.0.19041)
VSCode 1.48
Python 3.8.4 64-Bit
Tensorflow 2.2.0 (GPU)
CUDA 10.1
CUPTI 10.0
cuDNN v8.0.2
Stand: 18.08.2020
Gigabyte Nvidia Gefroce RTX 2070 Super Windforce OC
Gigabyte X570 Aorus Elite AMD
HyperX Savage DDR4-2400 2*8192MB
Win10 64 Bit (10.0.19041)
VSCode 1.48
Python 3.8.4 64-Bit
Tensorflow 2.2.0 (GPU)
CUDA 10.1
CUPTI 10.0
cuDNN v8.0.2
Stand: 18.08.2020
Wenn Du eine Falscheingabe wiederholen willst, dann braucht Du eine Schleife, wie Du ja schon richtig selbst erkannt hast.
Zwischen dem Funktionsnamen, hier print, und der öffnenden Klammer zum Funktionsaufruf kommt kein Leerzeichen. Bei int und input hast Du es ja auch so gemacht.
Bei den ganzen Rechenoperationen sind die Klammern überflüssig und können weg.
Die letzten zwei Zeilen sind unsinnig und können weg. Ein Konsolenprogramm startet man aus der Konsole heraus, und will nicht noch stupide die Eingabetaste drücken, um weiter arbeiten zu können.
Jetzt kannst Du noch die Exception abfangen, falls man gar keine Zahl eingibt.
Zwischen dem Funktionsnamen, hier print, und der öffnenden Klammer zum Funktionsaufruf kommt kein Leerzeichen. Bei int und input hast Du es ja auch so gemacht.
Bei den ganzen Rechenoperationen sind die Klammern überflüssig und können weg.
Die letzten zwei Zeilen sind unsinnig und können weg. Ein Konsolenprogramm startet man aus der Konsole heraus, und will nicht noch stupide die Eingabetaste drücken, um weiter arbeiten zu können.
Code: Alles auswählen
print('Wie möchtest du rechnen?')
print('1 = addieren')
print('2 = subtrahieren')
print('3 = dividieren')
print('4 = multiplizieren')
while True:
auswahl = int(input())
if 1 <= auswahl <= 4:
break
print("ERROR")
print("Bitte gib eine Nummer zwischen 1 und 4 ein.")
print('Gib eine Zahl ein')
zahl1 = int(input())
print('Gib eine zweite Zahl ein')
zahl2 = int(input())
if auswahl == 1:
antwort = zahl1 + zahl2
elif auswahl == 2:
antwort = zahl1 - zahl2
elif auswahl == 3:
antwort = zahl1 / zahl2
elif auswahl == 4:
antwort = zahl1 * zahl2
else:
assert False, "dieser Fall kann nicht auftreten"
print(antwort)
-
- User
- Beiträge: 9
- Registriert: Mittwoch 26. August 2020, 13:16
Vielen Dank für die Antworten, jetzt weiß ich wenigstens was ich falsch gemacht habe 

-
- User
- Beiträge: 9
- Registriert: Mittwoch 26. August 2020, 13:16
Hier wird aber immer noch nach dem Error die Zeile "Gib eine Zahl ein" ausgegeben und das will ich ja nicht. Ich will dass der Computer solange fragt, dass man eine Zahl zwischen 1-4 eingibt bis man tatsächlich eine richtige Zahl eingibt.Sirius3 hat geschrieben: Mittwoch 26. August 2020, 18:52 Wenn Du eine Falscheingabe wiederholen willst, dann braucht Du eine Schleife, wie Du ja schon richtig selbst erkannt hast.
Zwischen dem Funktionsnamen, hier print, und der öffnenden Klammer zum Funktionsaufruf kommt kein Leerzeichen. Bei int und input hast Du es ja auch so gemacht.
Bei den ganzen Rechenoperationen sind die Klammern überflüssig und können weg.
Die letzten zwei Zeilen sind unsinnig und können weg. Ein Konsolenprogramm startet man aus der Konsole heraus, und will nicht noch stupide die Eingabetaste drücken, um weiter arbeiten zu können.Jetzt kannst Du noch die Exception abfangen, falls man gar keine Zahl eingibt.Code: Alles auswählen
print('Wie möchtest du rechnen?') print('1 = addieren') print('2 = subtrahieren') print('3 = dividieren') print('4 = multiplizieren') while True: auswahl = int(input()) if 1 <= auswahl <= 4: break print("ERROR") print("Bitte gib eine Nummer zwischen 1 und 4 ein.") print('Gib eine Zahl ein') zahl1 = int(input()) print('Gib eine zweite Zahl ein') zahl2 = int(input()) if auswahl == 1: antwort = zahl1 + zahl2 elif auswahl == 2: antwort = zahl1 - zahl2 elif auswahl == 3: antwort = zahl1 / zahl2 elif auswahl == 4: antwort = zahl1 * zahl2 else: assert False, "dieser Fall kann nicht auftreten" print(antwort)
1. Du brauchst nicht Beitrag zu zitieren. Wir sehen den ja oben.
2. Nö. Nach einer Falscheinagabe wird man wieder aufgefordert eine Zahl zwischen 1 und 4 einzugeben. Bei welcher Eingabe ist das denn deiner Meinung nach nicht so?
2. Nö. Nach einer Falscheinagabe wird man wieder aufgefordert eine Zahl zwischen 1 und 4 einzugeben. Bei welcher Eingabe ist das denn deiner Meinung nach nicht so?
Du kannst auch mit Hilfe von einer Endlosschleife und try/except dafür sorgen, dass es nur weiter geht wenn eine gültige Eingabe gemacht wurde.
Code: Alles auswählen
Endlosschleife:
versuche:
auswahl = Eingabe und zu Integer konvertieren
wenn Variable auswahl im Bereich von 1-4 liegt:
gebe aus, dass die Eingabe richtig ist und es weiter geht
verlasse die Endlosschleife
ansonsten:
rufe ValueError auf
fange ValueError ab:
gebe aus, dass die Eingabe ungültig war und nur Zahlen zwischen eins und vier erlaubt sind
hier geht das Programm weiter
- __blackjack__
- User
- Beiträge: 14052
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@sparrow: Wenn man keine Zahl eingibt. Also einfach nur die Eingabetaste oder "x" oder so.
@Patryk Buczak: Bei den Rechnungen möchtest Du vielleicht noch irgendwie berücksichtigen was passiert wenn die Operation dividieren und der zweite Operand eine 0 ist.
@Patryk Buczak: Bei den Rechnungen möchtest Du vielleicht noch irgendwie berücksichtigen was passiert wenn die Operation dividieren und der zweite Operand eine 0 ist.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
-
- User
- Beiträge: 9
- Registriert: Mittwoch 26. August 2020, 13:16
@__blackjack__: Nee, alles gut. Ich habe den Fehler herausgefunden. Ich habe alle Leerzeichen, Blocksätze usw. nicht berücksichtigt (wusste nicht dass es so wichtig ist) , deswegen kam da ein Fehler bei mir als ich versucht habe, das Programm auszuführen. Es hat sich also erledigt, danke für eure Hilfe