While / for 语句


Python语法规则

1:语句逐行运行,除非碰见if等控制语句

2:块与语句的边界会自动检测,因为它没有大括号之类的东西,所以就是缩进

3:复合语句的形式:首句后紧跟“:”,紧接着是缩进语句

4:文档字符串!=注释,尽管同样都是被忽略,但是在运行时会自动附加在对象上,可以由文档工具显示。


语句分割符

Python语句一般是行尾表结束,但当语句太长时,我们可以通过一些方式让他位于多行之中

1:使用语法括号对,使语句跨行。括号对包括(),{},或[]

2:语句以反斜线结尾,实现跨行。(现不再使用)

3:其它规则,三重引号字符串块或者先用分号终止语句,然后紧接着输入

while 循环

while <test1>:    
    <statement1>         # loop body
    if <test2>: break    # Exit loop now, skip else
    if <test3>: continue # Go to top of loop now, to test1
else:                    # Optional else
    <statement2>         # Run if didn't exit loop with break
break      跳出整个循环

continue 跳出当前循环

pass        什么事都不做,只是空占位语句。或者写成...也是什么都不做

else         循环正常离开时执行,也就是没碰到break语句

下面C语言中常见的形式在Python里面是不行的 while (( x = next()) != null ) { ...process x...}


for 循环

是一个通用的序列迭代器,可以遍历任何有序的序列对象内的元素,可用于字符串,列表,元组以及其他内置可迭代对象

for <target> in <object>:
    <statements>
    if <test>: break
    if <test>: continue
else:
    <statements>


通过下面的例子,你会发现它实际上关键还是赋值的形式,与我们前面说学的区别就是它后面时一个序列,然后我们会以,为分隔符,一次用一段进行赋值。

>>> D={'a':1, 'b':2, 'c':3}
>>> for k in D:
... 	print(k, '=>', D[k])
... 
('a', '=>', 1)
('c', '=>', 3)
('b', '=>', 2)

>>> list(D.items())
[('a', 1), ('c', 3), ('b', 2)]
>>> for (k,v) in D.items():
... 	print(k, '=>', v)
... 
('a', '=>', 1)
('c', '=>', 3)
('b', '=>', 2)

>>> for ((a,b), c) in [((1,2),3),((4,5),6)]:
... 	print(a,b,c)
... 
(1, 2, 3)
(4, 5, 6)

Python 3的扩展赋值:关键也就是*的引入

>>> for (a,*b,c) in [(1,2,3,4),(5,6,7,8)]:
...	print(a,b,c)
...
1 [2,3] 4
5 [6,7] 8

>>> for all in [(1,2,3,4),(5,6,7,8)]:             #对比上面字典的时候,k为啥就只是一个值'a'?为啥现在为整个元组
...	a,b,c = all[0],all[1:3],all[3]
...	print(a,b,c)
...
1 (2,3) 4
5 (6,7) 8
佐证:for 循环的列表,会以逗号为界限,每次取出一组然后进行处理

>>> items = ["aaa", 111, (4,5),2.1]
>>> tests = [(4,5), 3.4]
>>> for k in tests:                                        #k 第一次值为(4,5)跟上面的all一样都是一次乘装一个分隔单元
... 	if k in items:
... 		print(k, "was found")
... 	else:
... 		print(k, "not found")
... 
((4, 5), 'was found')
(3.4, 'not found')

for 对文件循环读取

file = open('test.txt', 'r')
print(file.read())

file = open('test.txt')       #默认按read模式打开
while True:
    char =file.read(1)        #for会一次把文件加载至内存
    if not char: break        #文件结尾处,break      
    print(char)


file = open('test.txt')                
while True:
    line = file.readline()
    if not line: break
    print(line, end='')

file = open('test.txt', 'rb')
while True:
    chunk = file.read(10)     #因为上面它是按rb读的,所以就是每次读入10个byte.
    if not chunk: break
    print(chunk)

for char in open('test.txt').read():      #for会一次把文件加载至内存
    print(char)

for line in open('test.txt').readlines(): #readlines方法会一次把文件载入到行字符串列表,然后通过for在一次次读取。
    print(line, end='')

for line in open('test.txt'):             #iterator:best text input mode
    print(line, end='')                   #end来抑制一个\n,因为行字符串本身就有一个
while循环读取文件内容每次读取一行或一个字符,倒数2,3中的for和readlines的效果时先把文件都放入内存。你万一文件太大了呢?而iterator是文件迭代器,每循环一次读入一行。
while的机制跟最后一个for语句用的iterator一样,但是他俩速度还是有差别的,Itherator 在Python中是以C语言速度运行,而while循环版本时通过Python虚拟机运行Python字节码的。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值