Ich refactoring eine Funktion, die, angesichts einer Reihe von Endpunkten, die implizit Intervalle definieren, überprüft, ob eine Zahl im Intervall enthalten ist, und dann eine entsprechende zurückgeben (nicht in irgendeiner berechenbaren Weise verwandt)). Der Code, der nun die Arbeit ist der Umgang ist:Python: Zuordnung von Intervallen zu Werten
if p <= 100:
return 0
elif p > 100 and p <= 300:
return 1
elif p > 300 and p <= 500:
return 2
elif p > 500 and p <= 800:
return 3
elif p > 800 and p <= 1000:
return 4
elif p > 1000:
return 5
Welche IMO ganz schrecklich, und es fehlt ihm, dass beide die Intervalle und die Rückgabewerte sind hartcodiert. Jede Verwendung von Datenstrukturen ist natürlich möglich.
+1 Ich mag das. Du lernst jeden Tag etwas Neues. – kjfletch
+1: unglaublich! –
Wirklich beeindruckend. Super sauber, und ich glaube auch sehr schnell. Es kann auch leicht erweitert werden, falls man eine nicht natürliche Ordnung oder etwas anderes im Gegenzug benötigt, wie eine Zeichenkette: Import Halbierung n = Halbierung.bisect_left ([100,300,500,800,1000], p) a = ["abwesend", "niedrig", "durchschnittlich", "hoch", "sehr hoch", "extrem"] a [n] – Agos