Ich habe eine for-Schleife, die über eine Liste von Gleitkommazahlen iteriert. Meine ursprüngliche Absicht war, dass ich eine for-Schleife mit einer if-Anweisung machen könnte, um Dinge zu tun, wenn meine Daten> x Prozent sind ... aber ich habe erkannt, dass diese Methode eine Duplizierung der präsentierten Daten verursacht. Es ist sachlich richtig, aber es ist nicht das, was ich wollte oder beabsichtigte. Also, meine Scheindaten haben etwas, das viel größer ist als die Realität und löst die if-Bedingung bei allen niedrigeren Prozentsätzen aus. Ich möchte nur, dass es auf den größten Prozentsatz ausgelöst wird und nicht auf die kleineren Bedingungen unten ... wie würde ich das auf möglichst pythische Weise tun?Wie schließe ich eine for-Schleife in Python 2.7 ohne Exceptions Exceptions
Dies ist die Beispielcode-Lösung, die ich zusammen geworfen habe, aber ich denke, das Einbringen von Ausnahmen mit einem try/catch-Block ist wahrscheinlich nicht so sauber wie andere Lösungen.
#!/usr/bin/env python
percentages = [0.2,0.5, 0.75, 1, 2, 5]
resultingPercentage = 9
for i in sorted(percentages, reverse=True):
try:
if resultingPercentage > i:
print "We found an opportunity greater than %.2f%% points" %i
raise Exception
except:
#continue
break
try Dieses Beispiel: https://www.tutorialspoint.com/python/python_break_statement.htm ... auch von einem Versuch versuchen wird endlich anrufen; Die Erhöhung ist überhaupt nicht notwendig, wie Sie in dem verlinkten Beispiel sehen können. – vv01f
Nicht ganz sicher, was Sie zu tun versuchen, Ihr Beispielcode wird sofort beendet. Es ist also schwer zu sagen, was Sie zu demonstrieren versuchen. Z.B. Sie könnten einfach sofort "brechen" statt "erhöhen -> außer -> brechen". Sie können auch das 'iertools' Modul betrachten, da es eine Menge Unterstützung für Iterator Algebra gibt, insbesondere 'itertools.takewhile()' könnte helfen. – AChampion
Okay, diese Vorschläge haben es geschafft. Ich wusste nicht, dass ich einfach die 'break'-Anweisung in meiner if-Anweisung in der Schleife verwenden konnte, weshalb ich eine Ausnahme gemacht habe. Ich werde eine davon als die gelöste Antwort markieren, wenn – Frankenmint