Hallo Zusammen
Bin neu hier im Forum und würde euch gerne was frage.
Habe nun einen Binär in Dezimal rechner programmiert das heisst:
man gibt eine zahl im bin code ein zb 1101 und mein programm gibt dann zb
8
4
1
Aus. wie kann ich jetzt diese Zahlen vom programm speichern lassen und zusammenrechnen lassen? habe ein while loop drin wo ich die werte schreibe. Hättet ihr mir vileicht einen lösungsansatz?
Gruss
Binär Rechner
vielleicht hilft dir das weiter
:

Code: Alles auswählen
In [1]: int('1101', 2)
Out[1]: 13
In [2]: zahl = int('1101', 2)
In [3]: resultat = zahl + zahl
In [4]: resultat
Out[4]: 26
In [5]: bin(resultat)
Out[5]: '0b11010'
In [6]: bin(resultat)[2:]
Out[6]: '11010'
In [7]: 0b1101
Out[7]: 13
Das ist ohne deinen Code schwer zu sagen. Vor der while-Schleife eine 'sum'-Variable auf 0 initialisieren und in jeder Iteration den Wert addieren? Was meinst du mit speichern? In einer Datei? Dann öffne vorher eine Datei:
und schreibe in jeder Iteration die Zahl raus:
und schließlich die Datei schließen:
Etwas eleganter wäre diese Variante:
Dann kannst du die Liste auch gleich noch zum aufsummieren verwenden:
Code: Alles auswählen
my_file = open("my_file_name","w")
Code: Alles auswählen
my_file.write(my_number) #evtl. muss um my_number noch ein str()
Code: Alles auswählen
my_file.close()
Code: Alles auswählen
my_list = []
while ...:
...
my_list.append(my_number) #wieder ggf. mit str() drum
my_file = open("my_file_name","w")
my_file.writelines(my_list)
my_file.close()
Code: Alles auswählen
dec = sum([int(n) for n in my_list])
Also mein Code sieht so aus, bin kein programiere und hab erst grad angefangen vorner Woche mit python
also ned lachen!
Also:
def bin(x):
y=len(str(x))
h=y-1
while h >= 0:
i=x/10**h
if i == 1:
a=2**h
print a
x=x-10**h
h=h-1
y=y-1
if i == 0:
h=h-1
y=y-1
y >=0 #restart the loop
if h == 0:
print 'ende'
pass
am schluss krieg ich
bei bin(1101)
8
4
1
geprintet und ich will nur das das mein programm die 8 und 4 und 1 schnell zusammen rechnet
ist sicher einfach aber ich komm nicht weiter.

Also:
def bin(x):
y=len(str(x))
h=y-1
while h >= 0:
i=x/10**h
if i == 1:
a=2**h
print a
x=x-10**h
h=h-1
y=y-1
if i == 0:
h=h-1
y=y-1
y >=0 #restart the loop
if h == 0:
print 'ende'
pass
am schluss krieg ich
bei bin(1101)
8
4
1
geprintet und ich will nur das das mein programm die 8 und 4 und 1 schnell zusammen rechnet

Würde ich nie.hab erst grad angefangen vorner Woche mit pythonalso ned lachen!

- Es gibt ein Python-Code-Environment in diesem Forum. Einfach Code markieren und den 'Python'-Knopf über dem Editorfenster drücken. Achte bitte außerdem darauf, dass die Einrückung erhalten bleibt. Es ist hart zu Raten was noch zur Schleife gehört und was zur if Abfrage etc.
- Ich hatte erwartet, dass die Eingabe ein string wäre, aber man kann das auch so machen.
- Könnte man aus h und y nicht eine Variable machen. Das würde den Code lesbarer machen.
- Zeile y >=0 verstehe ich nicht. Das ist ein boolean-Ausdruck, der aber so keinen Effekt hat. Sollte da vielleicht auch ein if stehen?
- Was macht das pass am Ende?
Code: Alles auswählen
...
h=y-1
sum = 0
while h >= 0:
i=x/10**h
if i == 1:
a=2**h
print a
sum += a
x=x-10**h
...