Python binär rechnen?

... komplette Frage anzeigen

2 Antworten

Ich fand den Ansatz von AnonYmus19941 sehr cool. Die Umwandlung von X und Y in 1 und 0 übernehme ich mal ganz frech:

rechnung = raw_input('Rechnung eingeben: ').replace('X', '1').replace('Y', '0')
teile = rechnung.split('+')

Danach erhalte ich eine Liste, wobei jedes Element ein String (!) eines Summanden in Binär ist.

Ab hier schlage ich vor, die Funktion int und bin zu verwenden:

Ergebnis = bin(int(teile[0], 2) + int(teile[1], 2))

int() nimmt nämlich nicht nur ein Argument zur Umwandlung in Integer, sondern nimmt auch die Basis, zu der es umgeformt werden soll (im Falle von Binär ist das 2). bin() konvertiert eine Zahl in Binär. Wir vollziehen die Rechnung also als normale Zahl und gehen dann zurück zu binär.

Das Ergebnis ist dann aber auch als binär formatiert, z.B.:

print Ergebnis
>>> 0b1011
Antwort bewerten Vielen Dank für Deine Bewertung

Ich kann dir nur ein Grundkonzept liefern:

rechnung = raw_input('Rechnung eingeben: ').replace('X', '1').replace('Y', '0')
teile = rechnung.split('+')
for i in range(len(teile)):
temp = teile[i]
teile[i] = ''
for j in temp:
teile[i] = j + teile[i]
for i in teile:
teile = int(teile, 2)

So bekommst du eine Liste aller Summanden ...

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von offeltoffel
22.11.2016, 11:34

Ich versuche gerade nachzuvollziehen, welchen Lösungsweg zu gehst. "teile" ist ja eine Liste aus Strings. "j in temp" sind also alle Binärzahlen als String ("1" oder "0"). Da "YXX" in Binär "100" übersetzt ist, er aber von links nach rechts iteriert, erhalte ich am Ende deiner Schleife für teile[1] = "001"

In der zweiten Schleife iterierst du nicht über die Listeneinträge, sondern wieder über die einzelnen Binärzahlen als String. Bei int(teile,2) kracht es deshalb.

1

Was möchtest Du wissen?