我试着在这段代码中理解为什么python打印字母"w"
? (我使用python 2.7.8):
LetterNum = 1
for Letter in 'Howdy!':
if Letter == 'w':
pass
print 'Encountered w, not processed.'
print ('Letter', LetterNum, 'is', Letter)
LetterNum+= 1
我得到了这个结果:
>>>
('Letter', 1, 'is', 'H')
('Letter', 2, 'is', 'o')
Encountered w, not processed.
('Letter', 3, 'is', 'w')
('Letter', 4, 'is', 'd')
('Letter', 5, 'is', 'y')
('Letter', 6, 'is', '!')
虽然我认为我应该得到这个结果:
>>>
('Letter', 1, 'is', 'H')
('Letter', 2, 'is', 'o')
Encountered w, not processed.
('Letter', 4, 'is', 'd')
('Letter', 5, 'is', 'y')
('Letter', 6, 'is', '!')
>>>
答案 0 :(得分:5)
您正在尝试使用pass,就像它继续一样。传递不执行任何操作,而继续跳过当前迭代。以下代码可以正确使用continue来执行您想要的操作:
LetterNum = 1
for Letter in 'Howdy!':
if Letter == 'w':
print 'Encountered w, not processed.'
continue
print ('Letter', LetterNum, 'is', Letter)
LetterNum+= 1
答案 1 :(得分:0)
我希望你能通过@ DanDoe的回答在代码中得到逻辑错误 但是,如果您只想要所需的输出,则另一种解决方案是使用 else 语句。
LetterNum = 1
for Letter in 'Howdy!':
if Letter == 'w':
print 'Encountered w, not processed.'
else:
print ('Letter', LetterNum, 'is', Letter)
LetterNum+= 1
这将提高代码的效率。