ich hab ein kleines Problem mit einem Code und dachte ich frage mal ganz nett nach, ob mir jemand helfen kann. Ich entschuldige mich schonmal, falls ich die Frage in einem falschen Thread poste.
Die Aufgabe war, folgende HDL-Beschreibung in Python zu übersetzen:
##############################
CHIP Addierwerk {
IN a0,a1,b0,b1;
OUT s0,s1,s2;
PARTS:
Xor(a=a1,b=b1,out=s2);
And(a=a1,b=b1,out=carryHA);
Xor(a=a0,b=b0,out=sum1);
And(a=a0,b=b0,out=c1);
Xor(a=sum1,b=carryHA,out=s1);
And(a=sum1,b=carryHA,out=c2);
Or(a=c1,b=c2,out=s0);
}
#################################
Die "Lösung" vom Tutor liefert zwar einen guten Ansatz, funktioniert aber nicht. Leider bin ich eine totale Anfängerin in Python und kann die Fehlermeldungen nicht nachvollziehen.
Ich würd mich wahnsinnig freuen wenn mir jemand ein paar Tipps geben könnte.
##########################
Code: Alles auswählen
#Halbaddierer
def Halbaddierer (a,b):
sum =a^b # Xor
carry =a&b #And
return (carry,sum)
#Volladdierer
def Volladdierer (a,b,c_in):
sum1,carry1=Halbaddierer(a,b)
sum2,carry2=Halbaddierer(sum,c_in)
carry=carry1|carry2 #Or
return(sum2,carry)
#Addierwerk
def Addierwerk (a0,a1,b0,b1):
s2,carryHA =Halbaddierer(a1,b1)
s1,s0=Volladdierer(a0,b0,carryHA)
return(s0,s1,s2)
#Eingaben
print ("Dieses Addierwerk bearbeitet zweistellige Binärzahlen.\n")
a=str(input("Welches ist die erste Zweistellige Binärzahl?"))
b=str(input("Welches ist die zweite Zweistellige Binärzahl?"))
#Aufteilung in einzelne Binärziffern
a0=int(a[0])
a1=int(a[1])
b0=int(b[0])
b1=int(b[1])
#Ausführung Addierwerk und Ausgabe
print ("Die Summe von ",a,"und",b,"beträgt",end=" ")
for i in range(3):
print(Addierwerk(a0,a1,b0,b1)[i],end=" ")
Edit:
Richtig so? Kannte Code Tags noch nicht, sehr praktisch
Hier die Fehlermeldung:
Dieses Addierwerk bearbeitet zweistellige Binärzahlen.
Welches ist die erste Zweistellige Binärzahl?11
Welches ist die zweite Zweistellige Binärzahl?11
Die Summe von 11 und 11 beträgt Traceback (most recent call last):
File "D:/Dropbox/Sommer/Info/Tuts/A 8/Code.py", line 62, in <module>
print(Addierwerk(a0,a1,b0,b1),end=" ")
File "D:/Dropbox/Sommer/Info/Tuts/A 8/Code.py", line 39, in Addierwerk
s1,s0=Volladdierer(a0,b0,carryHA)
File "D:/Dropbox/Sommer/Info/Tuts/A 8/Code.py", line 31, in Volladdierer
sum2,carry2=Halbaddierer(sum,c_in)
File "D:/Dropbox/Sommer/Info/Tuts/A 8/Code.py", line 21, in Halbaddierer
sum =a^b # Xor
TypeError: unsupported operand type(s) for ^: 'builtin_function_or_method' and 'int'