在if语句中传递语句

时间:2015-07-07 13:04:55

标签: python python-2.7 loops if-statement for-loop

我试着在这段代码中理解为什么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', '!')
>>>  

2 个答案:

答案 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

这将提高代码的效率。