Beste Antwort
Das ist das Schöne an Python. Viele gängige Operationen sind bereits für Sie implementiert. Dies ist ein solcher Fall.
Sie können die integrierte Funktion bin()
verwenden. Hier ist die Beschreibung von bin()
Python:
Konvertiert eine Ganzzahl in eine Binärzeichenfolge. Das Ergebnis ist ein gültiger Python-Ausdruck. Wenn x kein Python int
-Objekt ist, muss ein \_\_index\_\_()
Methode, die eine Ganzzahl zurückgibt.
Um sie zu verwenden, übergeben Sie einfach eine nicht negative ganze Ganzzahl. Hier einige Anwendungsbeispiele.
>>> bin(0)
"0b0"
>>> bin(12)
"0b1100"
>>> bin(25)
"0b11001"
>>> bin(250)
"0b11111010"
>>> bin(2440)
"0b100110001000"
Aber vielleicht möchten Sie Ihre eigene Funktion implementieren, die zu Lernzwecken von dezimal in binär konvertiert wird. In diesem Fall ist hier eine Beschreibung des von mir verwendeten Algorithmus und hier meine Implementierung:
def decimal\_to\_binary(decimal):
""" Given a whole, decimal integer,
convert it to a binary
representation
"""
# I"m only making this function support
# non-negative, whole integer only.
if not isinstance(decimal, int) or decimal < 0:
raise TypeError("Input must be a non-negitive, whole integer.")
# we need a stack to store each binary digit in.
stack = []
# while their are still digits left
# to convert in decimal.
while decimal > 0:
# caclute each binary number by dividing decimal
# by two. And since we are "building" our binary
# string backwards, insert() in the front of the
# list instead of append()-ing to the back.
stack.insert(0, str(decimal \% 2))
# after we"ve calcute the binary value of the current
# decimal, divide the decimal by 2. But make sure we
# use // instead of / to get a while number!
decimal = decimal // 2
# join() together each value in stack, and return
# the finished binary string. Note: I simply
# added the "0b" prefix because that is how Python
# prepends its binary strings. If you don"t perfer that,
# then simply remove the "0b" + part from bellow.
return "0b" + "".join(stack)
Tests und Verwendung:
>>> bin(0) == decimal\_to\_binary(0)
True
>>> bin(12) == decimal\_to\_binary(12)
True
>>> bin(25) == decimal\_to\_binary(25)
True
>>> bin(250) == decimal\_to\_binary(250)
True
>>> bin(2440) == decimal\_to\_binary(2440)
True
Antwort
Die von Dripto Biswas bereitgestellte Lösung ist definitiv die schnellste. Es gibt jedoch alternative Lösungen, falls Sie nur neugierig waren 🙂
Methode 2
>>> format(5, "b")
"101"
Methode # 3
>>> "{0:b}".format(5)
"101"
Wenn Sie es jetzt zurückkonvertieren möchten,
>>> int("101", 2)
5