Profil von Thomas Boor auf LinkedIn anzeigen

Thomas Boor


UNIX-Systemprogrammierung


[Home]   [Impressum]   [Kontakt]   [CV (curriculum vitae) ]   [Veröffentlichungen]   [Vermittler für IT-Freelancer]
[IMS Infos]   [IT Infos]   [Internet-Tips]   [Info-Pages & Service-URLs]   [Downloads]   [Internet Radio]   [Aphorismen & Zitate]   [Python-Snippets]

Diese Seite zeigt kurze python-snippets zu verschiedenen Themen. Die Beispiele wenden sich an Einsteiger im Bereich python.

Binäre Suche


#!/usr/bin/env python3
import sys
# binary search of a given number in range(0..1000)
# the number of tries is limited to O(log n)

def newTp(ug, og):
    return int((ug + og) / 2)

while True:
    xi = input("Zahl (0..999)? ")
    if xi == 'q':
        sys.exit(0)
    x = int(xi)
    if x < 0 or x > 999:
        print("Zahl ungültig.")
        continue

    ug = 0
    og = 1000
    tp = newTp(ug, og)

    n = 0
    while True:
        n += 1
        if n > 33:
            break
        if tp == x:
            print("%d.-Versuch, ug=%d, tp=%d, og=%d,  Bingo, die Zahl ist %d" %(n, ug, tp, og, tp))
            break
        elif x < tp:
            print("%d.-Versuch, ug=%d, tp=%d, og=%d,  die Zahl ist kleiner als %d" %(n, ug, tp, og, tp))
            og = tp
            tp = newTp(ug, og)
        elif x > tp:
            print("%d.-Versuch, ug=%d, tp=%d, og=%d,  die Zahl ist größer als %d" %(n, ug, tp, og, tp))
            ug = tp
            tp = newTp(ug, og)


python$ ./binary.py 

Zahl (0..999)? 246
1.-Versuch, ug=0, tp=500, og=1000,  die Zahl ist kleiner als 500
2.-Versuch, ug=0, tp=250, og=500,  die Zahl ist kleiner als 250
3.-Versuch, ug=0, tp=125, og=250,  die Zahl ist größer als 125
4.-Versuch, ug=125, tp=187, og=250,  die Zahl ist größer als 187
5.-Versuch, ug=187, tp=218, og=250,  die Zahl ist größer als 218
6.-Versuch, ug=218, tp=234, og=250,  die Zahl ist größer als 234
7.-Versuch, ug=234, tp=242, og=250,  die Zahl ist größer als 242
8.-Versuch, ug=242, tp=246, og=250,  Bingo, die Zahl ist 246


Fibonacci Zahlen


#!/usr/bin/env python3
import sys

# fib.py: calculate the fibonacci number of n, which may be given as first arg.
# if n is not given, the literal default is 7.
# if a second arg is given, the output gets a bid verbose

n = 7
if len(sys.argv) > 1:
    n = int(sys.argv[1])

results = {}
calls = 0

def fib(n):
    global calls
    calls += 1
    if n == 0:
        return 0
    elif n == 1 or n == 2:
        return 1
    fib_n = fib(n - 1) + fib(n - 2)
    global results
    results[n] = fib_n
    return fib_n

if __name__ == "__main__":
    print("fib (%d) = %d, #calls = %d" % (n, fib(n), calls))
    if len(sys.argv) > 2:
        print()
        print("fib (1) = 1")
        print("fib (2) = 1")
        for i in sorted(results):
            print("fib (%d) = %d" % (i, results[i]))

python3 ./fib.py 14 v

fib (14) = 377, #calls = 753

fib (1) = 1
fib (2) = 1
fib (3) = 2
fib (4) = 3
fib (5) = 5
fib (6) = 8
fib (7) = 13
fib (8) = 21
fib (9) = 34
fib (10) = 55
fib (11) = 89
fib (12) = 144
fib (13) = 233
fib (14) = 377

Aufruf: python3 fib.px 14 v Berechnet die Fibonacci-Zahl von 14, ist wg. zweitem Argument etwas schwatzhaft. Bei der rekursiven Lösung zeigt sich gleich der gigantische Aufwand an Funktionsaufrufen. Hier bleibt einiges an Optiomierungs-Potential.



Sitemap
Home  |  Kontakt  |  CV (curriculum vitae)  |  Veröffentlichungen  |  IMS Infos  |  IT Infos  |  Info-Pages & Service-URLs DiffServ / QoS in IPv4 und IPv6
Internet Radio  |  Vermittler für IT-Freelancer  |  musical essentials (en)  |  youtube links  |  Aphorismen und Zitate  |  Latein für Smalltalker  |  Downloads  |  Impressum
[fun] [Lyrik] [Limmericks] [MatheGimmicks] [Bauernregeln] [Witze] [(my) blog]
CV in deutsch CV in english
DUCATI Panigale V4


sponsored links

Für Büro Elsenfeld:

Eigene Wetter-Messung und -Aufzeichung: wunderground.com: IELSEN5
Weather Underground PWS IELSEN5 Weather Underground PWS IELSEN5IELSEN5
Weather Underground PWS IELSEN5


accu


klein-windkraftanlagen.com/
klein-windkraftanlagen.com/technik/stromspeicher

http://windempowerment.org/
Savonius Windmill historical information