Bauforum-Logo

Offenes Forum Bauingenieurwesen - Bauforum

Ein Wirklichewelt-Service für die Hochschule Bochum
Forums-Ausgangsseite

log in | registrieren

zurück zum Forum
Board-Ansicht  Mix-Ansicht

Python-Schleife über Gleitkommazahlen: for x in range() mit float statt int (Allgemeines)

verfasst von Martin Vogel(R) Homepage E-Mail, Dortmund / Bochum, 19.06.2012, 16:26 Uhr

In Python dürfen for-Schleifen, die den Iterator range() verwenden, bekanntlich nur über ganzzahlige Werte laufen. Im Grunde ist das eine total überflüssige Einschränkung dieses Iterators, denn er könnte ja eigentlich genausogut auch Gleitkommazahlen liefern. In einer der aktuellen Hausaufgaben entdeckte ich gerade die nette Idee, eine for-Schleife mittels einer eigenen Funktion f_range() über eine Liste von Gleitkommazahlen iterieren zu lassen.

Im Grunde könnte man analog dazu auch einen eigenen Iterator basteln, der sich genauso verhält wie range(), nur dass er eben float-Werte statt int-Werte zurückgibt.

Wer while-Schleifen nicht mag, kann damit also auch so etwas schreiben wie

for x in f_range(0.5,12.73,3.14):
    print(x)


Die Funktion f_range() würde dann beispielsweise so aussehen:

def f_range(von=0, bis=None, schritt=1):
    if bis == None:
        von,bis = 0,von
    f = von
    if schritt > 0:
        while f < bis:
            yield(f)
            f += schritt
    else:
        while f > bis:
            yield(f)
            f += schritt


Die Methoden count() und index() der Originalfunktion sind hier nicht implementiert, da ich sie bei Gleitkommazahlen für hochgradig unsinnig halte.

--
Dipl.-Ing. Martin Vogel
Leiter des Bauforums

PDF kostenlos: Einführung in die Informatik – Python 3

antworten
 



gesamter Thread:

zurück zum Forum
Board-Ansicht  Mix-Ansicht
Offenes Forum Bauingenieurwesen - Bauforum | Kontakt | Impressum
9995 Postings in 4366 Threads, 991 registrierte User, 41 User online (0 reg., 41 Gäste)
powered by my little forum  RSS-Feed  ^
map | new | stat