Python Variabeln/Input Hilfe?
Und zwarrrr.... Ich erstelle in Python einen Taschenrechner.
Mein Problem ist der input a,b,c. Wenn ich ihn eingebe, bin ich gezwungen zwischen jedes der drei Zeichen ein Leerzeichen einzutippen. Aber ich möchte das man es AUCH ohne machen kann.
Ich habe etwas recherchiert und ich denke mir mit split(seperator) sollte es eigentlich gehen. Aber habe jetzt vieles Versucht und mit kläglich gescheitert
while True:
a,b,c = input("Leerzeichen zwischen jede der 3 Variabeln!\n").split()
if b == '+':
print(a, '+', c, '= ' + str(float(a) + float(c)))
elif b == '-':
print(a, '-', c, '= ' + str(float(a) - float(c)))
elif b == '*':
print(a, '*', c, '= ' + str(float(a) * float(c)))
elif b == '/':
print(a, '/', c, '= ' + str(float(a) / float(c)))
else:
print("Falsche Eingabe")
#Notizen: Wurzelrechnung Hinzufügen
3 Antworten
Split spaltet an einem Sperator(zeichen). D.h. Du brauchst entweder Leerzeichen oder ein anderes beliebiges Zeichen, um die Eingabewerte zu trennen.
Das ist auch ein ganz generelles PRoblem (aus semantischer Sicht), denn wie willst Du sonst wissen, wo eine Eingabe endet udn die nächste beginnt?
Du kannst an split() einen Parameter übergeben:
Vergleiche:
>>> "1,2,3".split()
['1,2,3']
>>> "1,2,3".split(',')
['1', '2', '3']
Du könntest das Split erst später und dann mit dem spezifischen Operator verwenden, um abzufragen um welchen Operator es sich handelt und die Zahl aus der Rechnung zu extrahieren.
while True:
rechnung = input("Geben Sie die Rechnung ein\n")
if '+' in rechnung:
rechnung = rechnung.split("+")
print(rechnung[0], '+', rechnung[1], '= ', float(rechnung[0]) + float(rechnung[1]))
elif '-' in rechnung:
rechnung = rechnung.split("-")
print(rechnung[0], '-', rechnung[1], '= ', float(rechnung[0]) - float(rechnung[1]))
elif '*' in rechnung:
rechnung = rechnung.split("*")
print(rechnung[0], '*', rechnung[1], '= ', float(rechnung[0]) * float(rechnung[1]))
elif '/' in rechnung:
rechnung = rechnung.split("/")
print(rechnung[0], '/', rechnung[1], '= ', float(rechnung[0]) / float(rechnung[1]))
else:
print("Falsche Eingabe")
Ich hoffe ich konnte dir weiterhelfen und wenn du noch Fragen hast dann kannst du mich natürlich fragen.
LG
Soooo, ein weiteres Problem. Mit Float werden alle kommastellen ausgegeben... Wie kann ich sie auf z.b. 4 Nachkommastellen festlegen? Bitte nich direkt den ganzen text, wenn nur die formel das ich es selbst machen kann... bin noch am lernen
ich verwende für ausgaben von Variablen eigentlich immer f-strings, da sie hübscher sind.
Aber man kann aber das Ergebnis in ein String konvertieren, und dann nur die ersten 4 Nachkommastellen ausgeben.
Wenn du es an einem Beispiel haben möchtest, dann kann ich dir auch ein Beispiel schicken
mit runden oder einfach die ersten 4 Nachkommastellen ausgeben?
Wow das ist echt eine einfach und gute Lösung...
Darauf muss man erstmal kommen :O
Vielen Dank :)
Du könntest mit RegEx und Pattern matching arbeiten:
import re
pattern = "(.*)([-+*/])(.*)"
m = re.search(pattern, eingabe)
if m:
links = m.group(1)
rechts = m.group(3)
operator = m.group(2)
else:
print("Falsche Eingabe")
oder ganz frech
ergebnis = eval(eingabe)
Das müsste ich dann am Sonderzeichen (+ - * /) festlegen. Also wenn es kein integer ist soll er es trennen in a b c
Aber wieee .-.