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的内容进行格式化。