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
2115849

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.