En ce moment, j'essaye de coder un assembleur mais je continue à avoir cette erreur:
Traceback (dernier appel passé): Fichier "/Users/Douglas/Documents/NeWS.py", ligne 44, dans si item dans registerTable [item]: KeyError: 'LD'
J'ai actuellement ce code:
functionTable = {"ADD":"00",
"SUB":"01",
"LD" :"10"}
registerTable = {"R0":"00",
"R1":"00",
"R2":"00",
"R3":"00"}
accumulatorTable = {"A" :"00",
"B" :"10",
"A+B":"11"}
conditionTable = {"JH":"1"}
valueTable = {"0":"0000",
"1":"0001",
"2":"0010",
"3":"0011",
"4":"0100",
"5":"0101",
"6":"0110",
"7":"0111",
"8":"1000",
"9":"1001",
"10":"1010",
"11":"1011",
"12":"1100",
"13":"1101",
"14":"1110",
"15":"1111"}
source = "LD R3 15"
newS = source.split(" ")
for item in newS:
if item in functionTable[item]:
functionField = functionTable[item]
else:
functionField = "00"
if item in registerTable[item]:
registerField = registerTable[item]
else:
registerField = "00"
print(functionField + registerField)
L'aide est appréciée.
Il n'y a pas de clé 'LD' dans registerTable. Peut mettre un essai sauf le bloc:
try:
a=registerTable[item]
...
except KeyError:
pass
Vous cherchez à savoir si la clé potentielle item
existe dans le dictionnaire à item
. Vous devez simplement supprimer la recherche dans le test.
if item in functionTable:
...
Bien que cela puisse même être amélioré.
Il semblerait que vous essayiez de rechercher l'élément ou que vous définissiez «00» par défaut. Les dictionnaires Python ont la fonction intégrée .get(key, default)
pour essayer d'obtenir une valeur, ou une valeur par défaut.
Essayer:
functionField = functionTable.get(item, '00')
registerField = registerTable.get(item, '00')