Python :: Aufgabe #56

2 Lösungen Lösungen öffentlich

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:

Konsolenausgabe:


Zahl eingeben: 365

binär: 101101101
oktal: 555
hexadezimal: 16D

Lösungen:

vote_ok
von _Mala_Fide_ (820 Punkte) - 22.04.2015 um 11:16 Uhr
Quellcode ausblenden Python-Code
#!/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)
vote_ok
von Nachbar (2820 Punkte) - 30.10.2016 um 22:49 Uhr
Quellcode ausblenden Python-Code
# -*- 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