Python :: Aufgabe #144 :: Lösung #3

5 Lösungen Lösungen öffentlich
#144

Funktion über eine Natürliche Zahl

Anfänger - Python von hollst - 20.02.2017 um 09:02 Uhr
Man schreibe ein Funktion f(n) mit dem Definitionsbereich (n) und dem Wertebereich (f(n)) der natürlichen Zahlen.

Die Funktion f(n) sei wie folgt zu konstruieren:

1.) Schreibe die Zahlen 1 ... n in absteigender Reihenfolge nebeneinander: n, n - 1, n - 2 ... 5, 4, 3, 2, 1
2.) Wandle diese Zahlen in ihre binärer Darstellen ohne führende Nullen: n, n - 1, n -2 ... 101, 100, 11, 10, 1
3.) Entferne jetzt das Komma zwischen den Binärzahlen, die sich damit ergebende neue Binärzahl ist f(n).

Beispiel: f(6) => 6, 5, 4, 3, 2, 1 => 110, 101, 100, 11, 10, 1 => 11010110011101 = 13725 (dezimal).

Fragen: Welchen Wert hat f(99)?

#3
vote_ok
von Nachbar (2820 Punkte) - 19.09.2017 um 19:02 Uhr
Quellcode ausblenden Python-Code
# -*- coding: utf-8 -*-

# dezimal in binaer umwandeln
def dezbin(dezzahl):
    rest = ""
    ergebnis = dezzahl
    while ergebnis != 0:
        rest = str(ergebnis % 2) + rest
        ergebnis = ergebnis / 2
    return int(rest)

# binaer in dezimal umwandeln    
def bindez(binzahl):
    dezzahl = 0
    lbin = list(str(binzahl))
    lbin.reverse()
    for i, j in enumerate(lbin):
        if j == "1":
            dezzahl = dezzahl + 2**i
    return "{:,}".format(dezzahl)

#----------------------------------
 
n = input("Zahl n: " )

# Funktion 
n_zahlen = ""
for i in range(n, 0, -1):
    n_zahlen = n_zahlen + str(dezbin(i))
# Ergebnis
print "\nf(" + str(n) + "): " + str(bindez(n_zahlen))

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben