Python :: Aufgabe #56
2 Lösungen

Zahlenausgabe in verschiedenen Schreibweisen
Anfänger - Python
von pocki
- 26.11.2014 um 11:53 Uhr
Schreibe ein Programm, welches eine positive Ganzzahl in dezimaler Schreibweise entgegen nimmt.
Gib diese Zahl dann in binärer, oktaler und hexadezimaler Schreibweise, ohne Verwendung der integrierten Formatierungsfunktionen, wieder aus.
Beispiel:
Gib diese Zahl dann in binärer, oktaler und hexadezimaler Schreibweise, ohne Verwendung der integrierten Formatierungsfunktionen, wieder aus.
Beispiel:
Konsolenausgabe:
Zahl eingeben: 365
binär: 101101101
oktal: 555
hexadezimal: 16D
Lösungen:

#!/usr/bin/python import string def bin(eingabe): ergebnis_bin = [] while eingabe > 0: ergebnis_bin += [eingabe % 2] eingabe -= (eingabe % 2) eingabe /= 2 print "bin:\t", length_bin = len(ergebnis_bin) end_ergebnis_bin = [] while length_bin > 0: end_ergebnis_bin += [str(ergebnis_bin[length_bin - 1])] length_bin -= 1 print string.join(end_ergebnis_bin, "") def oct(eingabe): ergebnis_oct = [] while eingabe > 0: ergebnis_oct += [eingabe % 8] eingabe -= (eingabe % 8) eingabe /= 8 print "oct:\t", length_oct = len(ergebnis_oct) end_ergebnis_oct = [] while length_oct > 0: end_ergebnis_oct += [str(ergebnis_oct[length_oct - 1])] length_oct -= 1 print string.join(end_ergebnis_oct, "") def hex(eingabe): ergebnis_hex = [] while eingabe > 0: liste = ["A","B","C","D","E","F"] if (eingabe % 16) > 9: ergebnis_hex += liste[(eingabe % 16) - 10] else: ergebnis_hex += [eingabe % 16] eingabe -= (eingabe % 16) eingabe /= 16 print "hex:\t", length_hex = len(ergebnis_hex) end_ergebnis_hex = [] while length_hex > 0: end_ergebnis_hex += [str(ergebnis_hex[length_hex - 1])] length_hex -= 1 print string.join(end_ergebnis_hex, "") dec = input("dec:\t") bin(dec) oct(dec) hex(dec)

# -*- coding: utf-8 -*- zahl = input("Bitte eine Zahl eingeben: ") x = zahl abin, aokt, ahex = [], [], [] ergebnisbin, ergebnisokt, ergebnishex = "", "", "" # Binaer while x > 0: abin.append(x % 2) x = x / 2 for i in range(len(abin)-1, -1, -1): ergebnisbin = ergebnisbin + str(abin[i]) x = zahl # Oktal while x > 0: aokt.append(x % 8) x = x / 8 for i in range(len(aokt)-1, -1, -1): ergebnisokt = ergebnisokt + str(aokt[i]) x = zahl # Hexadezimal dic_hex = {10:"A", 11:"B", 12:"C", 13:"D", 14:"E", 15:"F"} while x > 0: if x % 16 > 9: hexwert = dic_hex[x % 16] ahex.append(hexwert) else: ahex.append(x % 16) x = x / 16 for i in range(len(ahex)-1, -1, -1): ergebnishex = ergebnishex + str(ahex[i]) # Ausgabe print "" print "Binaer: " + ergebnisbin print "Oktal: " + ergebnisokt print "Hexadezimal: " + ergebnishex