你的if
情况很奇怪:
print ("%s\n" % item).rstrip('\n')
如果item == ''
,(item + '\n').rstrip('\n')
将等于item
, 即''
. 我很确定您可以摆脱该代码。
- 重新排序您的
if
语句可以消除MOVEI
/MOVE
问题。
- 添加到Tadeck 的答案,您需要使用
item.find(':') > 0
作为您的条件。如果您的字符串以 , 开头:
,string[0 - 1] == string[-1]
这是字符串的最后一个字符。
这是代码的可能固定版本
if item == '':
print ''
elif item.startswith('MOVEI'):
print 'Found MOVEI'
elif item.startswith('MOVE'):
print 'Found MOVE'
elif item.startswith('BGT'):
print 'Found BGT'
elif item.startswith('ADD'):
print 'Found ADD'
elif item.startswith('INC'):
print 'Found INC'
elif item.startswith('SUB'):
print 'Found SUB'
elif item.startswith('DEC'):
print 'Found DEC'
elif item.startswith('MUL'):
print 'Found MUL'
elif item.startswith('DIV'):
print 'Found DIV'
elif item.startswith('BEQ'):
print 'Found BEQ'
elif item.startswith('BLT'):
print 'Found BLT'
elif item.startswith('BR'):
print 'Found BR'
elif item.startswith('END'):
print 'Found END'
elif item.find(':') > 0 and item[(item.find(':') - 1)].isalpha():
print 'Mya have found a label'
else:
print 'Not sure what I found'
这是您的代码的稍微 Pythonic 版本:
def test_item(item):
tests = ['MOVEI', 'MOVE', 'BGT', 'ADD', 'INC', 'SUB', 'DEC', 'MUL', 'DIV', 'BEQ', 'BLT', 'BR', 'END']
for test in tests:
if item.startswith(test):
return 'Found ' + test
if item.find(':') > 0 and item[(item.find(':') - 1)].isalpha():
return 'Mya have found a label'
else:
return 'Not sure what I found'