from xml.etree import ElementTree as ET
tree1 = ET.parse('file1.xml')
tree2 = ET.parse('file2.xml')
w_elements = tree1.findall('.//w')
w_ids = [w.attrib['id'] for w in w_elements]
g_elements = tree2.findall('.//g')
g_spans = [g.attrib['span'] for g in g_elements]
print(g_spans)
for i, span in enumerate(g_spans):
for j, id_ in enumerate(w_ids):
if id_ == span:
print('Found matching id and span -- [{} - {}]'.format(id_, span))
print('`pos` attribute of matching elements: [{}]'.format(w_elements[j].attrib['pos']))
if w_elements[j].attrib['pos'] != 'NE':
print('`pos` not equals \'NE\' for element with id [{}]'.format(id_))
try:
print('Checking previous elements `pos` attribute...')
if w_elements[j-1].attrib['pos'] == 'NE':
print('Previous element\'s `pos` attribute is matching.')
g_elements[i].attrib['span'] = w_ids[j-1]
except IndexError:
print('IndexError raised at index [{}].'.format(j))
print([g.attrib['span'] for g in g_elements])
在这段代码中,我尝试从用户那里得到两个号码并将它们加在一起,最后显示答案。这就是我尝试做的事情:
首先:向用户显示输入第一个号码的消息
第二名:获得第一个号码
第三:向用户显示输入第二个号码的消息
第四名:第二名:获得第二个数字
第五步:将数字加载到两个寄存器中以进行添加
第六名:将两个数字加在一起
第七:将结果保存回内存
最后:向用户显示答案
我输入1和2作为输入,但输出为:c2
请我完全不熟悉这种语言。我犯了什么错误?
答案 0 :(得分:1)
在“将两个数字加载到寄存器中以进行添加”时,加载两个qwords。
然而,实际存储的是两个2字节字符串。因此,它们不仅尺寸错误,而且格式错误。这些字符串通过其代码点值添加,'1'= 0x31,'2'= 0x32,'c'= 0x63,并且额外的'2'显示,因为从num1
读取整个qword读取{同样{1}}(以及num2
)。打印了两个额外的字节,但显然没有显示在输出中。
然后你给sum_temp
写了一个qword,这比为它保留的空间多,然后打印成一个字符串,它仍然是一个普通的整数(或者它应该是一个普通的整数但是它是一个受损的字符串,取决于你如何看待它。)
将每个步骤的数据转换为正确的格式。你也应该对尺寸更加小心。