Zeichenketten aneinanderhängen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
daniel2807
User
Beiträge: 4
Registriert: Montag 11. April 2016, 15:43

Hallo,
ich brauche Hilfe bei der Ausgabe aneinandergehängter Zeichenketten. Mein Programm zur Binärdarstellung sieht wie folgt aus:

Code: Alles auswählen

#Binärdarstellung
z=int(input('Dezimalzahl: '))
while z!=0:
b=z%2
z=z//2
print(b)
Nun möchte ich gerne die Zahlen der Variablen b (also alle berechneten) ausgeben, sodass am Ende für z.B. 4 statt
0
0
1

1 0 0
da steht. Würde mich freuen, wenn mir jemand schnellstmöglich helfen kann.

Gruß,
Daniel2807
Zuletzt geändert von Anonymous am Montag 11. April 2016, 16:35, insgesamt 1-mal geändert.
Grund: Quelltext in Code-Tags gesetzt.
BlackJack

@daniel2807: Schau Dir mal an was für Argumente man der `print()`-Funktion noch so mitgeben kann und was die bewirken.
BlackJack

@daniel2807: Meine letzte Antwort war natürlich nicht so zielführend, weil die Ziffern nicht in der Reihenfolge ausgegeben werden sollen, in der sie berechnet werden.

Du musst die Ziffern als Zeichenketten vor der Ausgabe in einer Datenstruktur, zum Beispiel in einer Liste sammeln, dann dafür sorgen, dass sie in der richtigen Reihenfolge sind, und sie dann zu einer Zeichenkette zusammensetzen, die man ausgeben kann. Dabei ist `reversed()`-Funktion und die `join()`-Methode auf Zeichenketten hilfreich.

Du könntest aber auch einfach die `bin()`-Funktion verwenden, falls Dich der Präfix '0b' nicht stört, oder die `format()`-Funktion oder die gleichnamige Methode auf Zeichenketten falls da noch anderer, Konstanter oder variabler Inhalt mit in die Zeichenkette formatiert werden soll.

Code: Alles auswählen

In [1]: bin(4)
Out[1]: '0b100'

In [2]: '{0:b}'.format(4)
Out[2]: '100'

In [3]: format(4, 'b')
Out[3]: '100'
daniel2807
User
Beiträge: 4
Registriert: Montag 11. April 2016, 15:43

Ich hab es jetzt auch selber herausgefunden. Mein Programm sieht nun folgendermaßen aus:

#Binärdarstellung
z=int(input('Dezimalzahl: '))
p=str()
while z!=0:
b=z%2
z=z//2
p=str(b)+p
print(p)

Gruß,
Daniel2807
Sirius3
User
Beiträge: 18335
Registriert: Sonntag 21. Oktober 2012, 17:20

@daniel2807: dank vieler Hinweise hast Du eine Lösung gefunden; an der Namensgebung Deiner Variablen kannst Du aber noch arbeiten. Was soll man aus p oder z herauslesen? Leere Strings erzeugt man normalerweise aus einem leeren literalen String "". Zahlen <=0 werden noch falsch umgewandelt.
Antworten