Python :: Aufgabe #168

5 Lösungen Lösungen öffentlich

Zahlen umwandeln: Binär zu Dezimal

Anfänger - Python von Nachbar - 13.09.2017 um 14:19 Uhr
Schreibe eine Funktion, die Zahlen aus dem Dualsystem in Zahlen des Dezimalsystems umwandelt.

Beispiel:

Binär: 11010
Dezimal: 26

Lösungen:

vote_ok
von ZRX88 (2030 Punkte) - 14.09.2017 um 14:47 Uhr
Quellcode ausblenden Python-Code
import math
# input number in binary.
binary_number = '11010'
# print decimal
print(sum([int(j)*int(math.pow(2,i)) for i,j in enumerate(binary_number[::-1])]))


So kurz wie möglich...
vote_ok
von maellj (190 Punkte) - 23.09.2017 um 16:27 Uhr
Quellcode ausblenden Python-Code
def binaer(folge):
    folge = list(str(folge))    # einzelne Stellen der Eingabe in Liste packen
    hochz = 0                   # Hochzahl für Berechnung
    dez = 0
    for i in range(len(folge)-1, -1, -1):   # Liste rückwärts durchgehen
        if int(folge[i]) == 1:              # Falls Stelle relevant Ergebnis addieren
            dez += 2 ** hochz
        hochz += 1                          # nächste Hochzahl
    return dez


folget = 1010110001100
print('Soll:', int(str(folget), 2))     # Überprüfung des Ergebnisses mit Python-eigener Methode
print('Ist:', binaer(folget))
vote_ok
von Nachbar (2460 Punkte) - 21.10.2017 um 13:59 Uhr
Quellcode ausblenden Python-Code
# -*- coding: utf-8 -*-
# Python 2.7

def dezimal(binzahl):
    print "\nDezimal: " + str(int(binzahl, 2))

dezimal(raw_input("Binaerzahl: "))



vote_ok
von SamYoshihara (100 Punkte) - 21.10.2017 um 22:19 Uhr
Quellcode ausblenden Python-Code
# "Wandle eine Binär-Zahl in eine Dezimal-Zahl" von SamYoshihara

while True:
    a = input ('binär: ')
    b = len (a) - 1
    c = 0

    for i in range (0, b + 1):
        if int (a[b - i]) == 1:   # alle Ziffern, die nicht 1 sind, werden als 0 gewertet
            c += (int (a[b - i])) * (2 ** i)
            
    print ("dezimal:", c)
    print ()
vote_ok
von Agent_X29 (20 Punkte) - 01.12.2017 um 15:10 Uhr
Quellcode ausblenden Python-Code
#DEZIMAL UMWANDLER
#BINÄR UMWANDLER
import time

def dezimal(b):
    liste = []
    zahl = 0
    d = 1
    for x in range(len(b)):
        liste.append(1)
    for x in range(len(b)):
        if int(b[len(b)-x-1]) == 1:
            zahl += d
        d *= 2
    return zahl

def binär(d):
    zahlen = []
    i = 1
    for x in range(d):
        zahlen.append(i)
        i *= 2
        if i > d:
            i /= 2
            i = int(i)
            break
    zahlen.reverse()
    liste = []
    listestr = ""
    i = 0
    while len(liste) < len(zahlen):
        if zahlen[i] <= d:
            liste.append(1)
            d -= zahlen[i]
        else:
            liste.append(0)
        i += 1
    for x in liste:
        listestr += str(x)
    return listestr

def start():
    print("\n"*50)
    print("Binär in Dezimal | Dezimal in Binär")
    print("")
    print("Binärzahl eingeben   [B]")
    print("Dezimalzahl eingeben [D]")
    print("\n")
    choice = input(">> ")
    zahl = 0
    try:
        if (choice == "B") or (choice == "b"):
            print("\n"*50)
            print("Gebe eine binäre Zahl ein:")
            print("\n")
            zahl = int(input(">>"))
            for x in str(zahl):
                if (x != "1") and (x != "0"):
                    print("Das ist keine binäre Zahl. BSP: 11010 (=26)")
                    input()
                    start()
            print("Umgewandelt: " + str(dezimal(str(zahl))))
            input()
            start()
        elif (choice == "D") or (choice == "d"):
            print("\n"*50)
            print("Gebe eine dezimale Zahl ein:")
            print("\n")
            zahl = int(input(">>"))
            print("Umgewandelt: " + str(binär(zahl)))
            input()
            start()
        else:
            print("Eingabe wurde nicht erkannt!")
            input()
            start()
    except Exception:
        print("ERROR")
        input()
        start()

start()