Umrechnung in verschiedene Zahlensysteme

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
Ossix
User
Beiträge: 3
Registriert: Montag 1. März 2021, 10:02

Grüße,
ich will ein Programm erstellen was in verschiedene Zahlensysteme umrechnen kann.

Code: Alles auswählen

# Initialisierung der Variablen
zahl = 0
zwischenergebnis = 0
# eine Liste für die Reste
reste = []
 
# den Wert einlesen
zahl = int(input("Geben Sie den Wert ein, der umgerechnet werden soll: "))

while zahl != 0:
    # den Rest der Division durch 2 ablegen
    reste.append(zahl % 2)
    # durch 2 teilen und das ganzzahlige Ergebnis wieder zuweisen
    zahl = zahl // 2
# die Liste umdrehen
reste.reverse()
# und ausgeben
for bit in reste:
    print(bit, end = "")
habe schon mehrere sachen probiert aber es funktioniert nicht wirklich.

ich möchte das man erst die Basiszahl angeben muss und dann den wert der Umgerechnet werden soll.

ich hatte es schon mit listen versucht aber bin nicht weiter gekommen

Code: Alles auswählen

 # Initialisierung der Variablen
zahl = 0
zwischenergebnis = 0

print ("in welches Zahlensystem soll umgerechnet werden geben sie die Basiszahl 2 3 4 5 6 7 8 9:")


# eine Liste für die Reste
liste_eins =[2]
liste_zwei =[3]
liste_drei =[4]
liste_vier =[5]
liste_fuenf =[6]
liste_sechs =[7]
liste_sieben =[8]
liste_acht =[9]
reste = []

#listen füllen
liste_eins.append (zahl % 2)
liste_zwei.append (zahl % 3)
liste_drei.append (zahl % 4)
liste_vier.append (zahl % 5)
liste_fuenf.append (zahl % 6)
liste_sechs.append (zahl % 7)
liste_sieben.append (zahl % 8)
liste_acht.append (zahl % 9)
 
while zahl != 0:
    liste_eins.append (zahl1 % 2)
    liste_zwei.append (zahl2 % 3)
    liste_drei.append (zahl3 % 4)
    liste_vier.append (zahl4 % 5)
    liste_fuenf.append (zahl5 % 6)
    liste_sechs.append (zahl6 % 7)
    liste_sieben.append (zahl7 % 8)
    liste_acht.append (zahl8 % 9)
    zahl1 = zahl // 2
    zahl2 = zahl // 3
    zahl3 = zahl // 4
    zahl4 = zahl // 5
    zahl5 = zahl // 6
    zahl6 = zahl // 7
    zahl7 = zahl // 8
    zahl8 = zahl // 9
zahl = 0
zwischenergebnis = 0
while zahl:
# den Wert einlesen
zahl = int(input("Geben Sie den Wert ein, der umgerechnet werden soll: "))
while zahl != 0:
    # den Rest der Division durch 2 ablegen
    reste.append(zahl % 2)
    # durch 2 teilen und das ganzzahlige Ergebnis wieder zuweisen
    zahl = zahl // 2

# die Liste umdrehen
reste.reverse()
# und ausgeben
for bit in reste:
    print(bit, end = "")
kann mir mal bitte jemand helfen :shock:
Benutzeravatar
__blackjack__
User
Beiträge: 13122
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Ossix: Du hast das also für die Basis 2 wo die 2 fest im Programm steht. Da musst Du doch nur diese 2 variabel machen. Das ist grundsätzlich erst einmal die einzige, recht winzige Änderung die nur zwei Stellen im vorhandenen Programm betrifft + die Zeile in der der Benutzer nach der Basis gefragt wird.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Sirius3
User
Beiträge: 17759
Registriert: Sonntag 21. Oktober 2012, 17:20

Anmerkungen zum Code: Variablen werden dann initialisiert, wenn sie auch gebraucht werden. Das `zahl = 0` wird nie gebraucht, weil es sofort wieder durch die Eingabe überschrieben wird. zwischenergebnis wird nie gebraucht und reste wird zu früh initialisiert, das gehört direkt für die Schleife.
Kommentare sollten auch beschreiben, warum etwas passiert, nicht das offensichtliche. Wenn man sowohl das Ergebnis als auch den Rest der Division braucht, gibt es divmod.
Für die Ausgabe könnte man join benutzen.

Code: Alles auswählen

zahl = int(input("Geben Sie den Wert ein, der umgerechnet werden soll: "))

reste = []
while zahl != 0:
    zahl, rest = divmod(zahl, 2)
    reste.append(rest)

reste.reverse()
print("".join(map(str, reste)))
Beim zweiten Code verstehe ich nicht, warum Du die Listen mit einem Wert initialisierst. Wenn man Variablennamen anfängt durchzunummerieren, will man eigentlich eine Datenstruktur, Z.B eine Liste, und Schleifen verwenden.
Ossix
User
Beiträge: 3
Registriert: Montag 1. März 2021, 10:02

Grüße,
meine Frage hat sich erledigt


hatte einen kleinen denkfehler
Zuletzt geändert von Ossix am Montag 1. März 2021, 11:48, insgesamt 1-mal geändert.
Ossix
User
Beiträge: 3
Registriert: Montag 1. März 2021, 10:02

Danke für die schnellen Antworten
Antworten