@SlimE: wenn Du gerade nicht den Kopf frei hast, etwas zu lernen, dann solltest Du Dich auf die dringlichen Dinge konzentrieren. Es macht keinen Sinn, Dir zu erklären, was falsch ist, solange Du nicht verstehst, was der Rest macht. Die Funktion macht auch zu viel, um das sinnvoll erklären zu können. Zuerst solltest Du sie in Einheiten aufteilen, die genau eine Aufgabe haben:
Code: Alles auswählen
def bin2number(Ein):
x = 0
for y in Ein:
if y == "1":
x = x * 2
x = x + 1
else:
x = x + 2
return x
def bin():
print("Binärzahl hier :")
while 1:
Ein = input ()
number = bin2number(Ein)
print("Eingabe: " + str(Ein) + " > " + str(number))
bin()
dann sollte man sinnvolle Variablennamen verwenden:
Code: Alles auswählen
def bin2number(binary_number):
result = 0
for digit in binary_number:
if digit == "1":
result = result * 2 + 1
else:
result = result + 2
return result
def main():
while True:
binary_number = input("Binärzahl hier :")
number = bin2number(binary_number)
print("Eingabe: {} -> {}".format(binary_number, number))
main()
Und jetzt kann man anfangen zu erklären, was passiert, also im wesentlichen Englisch nach Deutsch übersetzen: main ist das Hauptprogramm, wo solange wahr wahr bleibt, also für immer, eine Binärzahl-Zeichenkette abgefragt wird, diese in eine Zahl umgewandelt wird und danach ausgegeben wird.