for..in语句是循环语句,它迭代一个对象的序列,例如经历序列中的第一项。一个序列只是一个有序的项目的集合。

1 for i in range(1, 5):
2     print(i)
3 else:
4     print('for循环结束')

输出:
1
2
3
4
for循环结束

它是如何工作的? 打印一个数字序列,我们使用内置的range函数生成这个数字序列。

range格式语法:range(1,5,2)。第1个数字是开始值,第2个数字是小于值,第3个数字是步距。

我们在上面的例子中是提供了两个数字,range返回一个从第1个数字到第2个数字的一个数字序列。

例如,range(1,5)给出序列[1, 2, 3, 4]。range默认步距为1。如果我们提供第3个数字,那么第3个数字就是步距。例如range(1,5,2)得到[1,3]。范围扩展到第2个数字,即最大值小于第2个数字。

注意,range()生成一个数字序列,当for循环请求下一个项目时,它一次只生成一个数字。如果你想立刻看到完整的数字序列,使用list(range())。

 

for i in range(1,5)相当于 for i in [1, 2, 3, 4],for循环遍历这个范围。这就像把序列中的每一个数(或对象)分配给i,一次一个,然后为每个i值执行语句块。在本例中,在语句块中我们只是打印i的值。

记住,else部分是可选的。当包括它时,除非遇到[break][#中断)语句,当for循环结束时,它执行一次。

 for..in循环可以作用于任何序列。在这里,我们对一个由内建的range函数生成的一个数字列表,但是一般来说,我们可以使用任何种类对象的任何类型的序列!

例子:

 1 import getpass,os,sys
 2 i=0
 3 while i<3:
 4     username = input('Enter your acount:')
 5     lock_file = open('lock_acount','r+')
 6     lock_list = lock_file.readlines()
 7     print(lock_list)
 8     for lock_line in lock_list:
 9         lock_line = lock_line.strip('\n')
10         print(lock_line)
11     if username == lock_line:
12         sys.exit('Your {name} are locked!'.format(name=username))
13     i +=1

使用for..in循环遍历 lock_list内容,并把获得的内容赋给lock_line,然后再在语句块中通过strip()函数对lock_line的内容进行格式化。

 

posted on 2016-12-30 13:18  魔力大王  阅读(21100)  评论(1编辑  收藏  举报