Python :: Aufgabe #144
5 Lösungen

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)?
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)?
Lösungen:

def f(n): zahl='' for i in range(n,0,-1): zahl += format(i,'b') return int(zahl,2) while True: z = int(input("Zahl (int) eingeben: ")) print("f(" + str(z) + ") = " + "{:,}".format(f(z)).replace(",",".")) nochmal = input("Nochmal? (y/n)") print() if nochmal == 'y' or nochmal == 'Y': continue else: break

import math def to_binary(zahl): result_string = '' result = [0 for _ in range(11)] binaries = [math.pow(2, i) for i in range(11)] for i in range(10,-1,-1): if binaries[i] <= zahl: zahl -= binaries[i] result[i] = 1 x= False for i in range(10,-1,-1): if result[i] == 1: x = True if x: result_string += str(result[i]) return result_string def from_binary(binary): x, zahl =len(binary), 0 y = [i for i in binary] for i in range(x-1,-1,-1): zahl += int(y[i])* math.pow(2,x-i-1) return zahl def run(zahl): result_strings = '' while zahl > 0: result_strings += to_binary(zahl) zahl -= 1 print(from_binary(result_strings)) run(99)

# -*- 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))

def binary(number): return int(''.join(bin(number).split('0b'))) zahl = 99 a = "" liste = list(range(zahl,0,-1)) for i in range(0,len(liste)): liste[i] = binary(liste[i]) a = a + str(liste[i]) print("Die Liste ist:", liste) print("Die aneinandergereite Zahl ist:",a) print("Die transformierte Zahl ist:",int(a,2))