noisefloor hat geschrieben: ↑Montag 21. November 2022, 16:35
??? - welche Schleife? Die if-elif Kaskade wird nach dem 1. Treffer und der Ausführung des zugehörigen Befehlsblocks doch verlassen.
Die Schleife steht untendrunter (daher der Doppelpunkt).
__blackjack__ hat geschrieben: ↑Montag 21. November 2022, 17:32
@Pitwheazle: ``EXIT FOR`` heisst in Python ``break``.
Das habe ich so schon ausprobiert.
Code: Alles auswählen
for x in x_liste:
if x in eingabe:
eingabe_getrennt=eingabe.split(x)
eingabe_getrennt[1] = x + eingabe_getrennt[1]
break
print(eingabe_getrennt)
... dabei bin ich einfach mal davon ausgegangen, dass die Schleife nach dem ersten Fund verlassen wird. "Print" ergibt bei Eingabe von "22mm²" aber wieder "['22', 'm', '²']". Das hatte ich ja oben auch schon mal so. Oder kann man das "break" so nicht anwenden?
__blackjack__ hat geschrieben: ↑Montag 21. November 2022, 17:32
Wobei das Vorgehen an sich nicht wirklich robust ist, weil das davon ausgeht, das es niemals Einheiten geben kann, in denen die getesteten Buchstaben nicht als erstes Zeichen nach der Zahl stehen.
Nun ich weiß ja, dass keine anderen Einheiten vorkommen können. Zunächst überprüfe ich, ob in der Einagbe überhaupt eine Einheit eingegeben wurde, falls nicht erfolgt ein Hinweis und es kann die Eingabe entsprechend ergänzt werden. Dann überprüfe ich, ob die Eingabe meiner vorgegebenen Lösung entspricht, falls nicht, überprüfe ich, ob die Zahl richtig ist und gebe für diese richtige Zahl einen halben Punkt. Falls eine vollkommen andere Eingabe erfolgt, gehe ich davon aus, dass die Eingabe falsch ist - auch wenn z.B. km eingegeben wurde, damit habe ich jetzt kein Problem, mir geht es hauptsächlich darum, dass die Kids Längen und Flächeneinhaietn richtig zuordnen:
Code: Alles auswählen
try:
if float(eingabe_getrennt[0]) == float(loesung_getrennt[0]):
return 0.5, "Die Zahl stimmt, die Einheit aber nicht - das ergibt einen halben Punkt Abzug! Richtig wäre: " + loesung_getrennt[1]
except:
return -1, ""