1、[if for while]关系
条件 If for while
次数 1 n 0~inf
if是单次的for 和 while
while和for是多次的if
while是可以无穷的、提前判断的for
for是方便指明对象的while
所以这些逻辑有许多共同的性质。
2、
for语句是python和C\JAVA等语言的不同之处。
python的思想:for就是对于,不是在判断语句,是为了指明对象,把判断交给if和while.
其他语言的for可能新建临时变量(i=0),判断(i<9999),计算(i++)(例如C)
C新手不擅长用while时,很喜欢for(i=0;i<9999;i++)来表达无穷循环
python不让你这么用。
3、[continue break]
continue用于跳过这一次for或while循环体剩下的语句
break用于结束这一层for或while循环,返回上一层。如果有不搭配if的break,代码一定可以简化。因为有break,前面就一定有if,才能使for和while有逻辑上的意义。除非是为了做毫无意义的代码逻辑输出实验。
While A do B if C break #如果满足A,那么做B,直到C或非A才结束
While true do B if C||!A break #区别在于第一次是否判断A。
While C||!A do B #区别在于最后一次是否再do B。
高考算法题经常考这一点,仅仅是没有用代码表示出来而已。
4、
for while if 等条件状语从句都可搭配else。
else 下的语句在条件不成立(或不再成立)时执行
如果for和while内的break退出了for,就不再执行else
否则else一定执行。
如果有不插入 if break 的for else或while else,代码一定可以简化。
如果有不插入 if的for break或while break,代码一定可以简化。
由于其中的else是否执行要看break是否执行,for else和while else前面一定有break才能使else不冗余,而break前面又一定要有if。所以以上两种代码的最简单形式为for if break else 和while if break else。所以如果有不搭配 if break 的for else和while else,代码一定可以简化。除非是为了做毫无意义的代码逻辑输出实验。
注意这里的else是与for或while同缩进,才不会被理解为与if的搭配。
5、
可不可以用for或while搭配break来退出上一层中的for或while循环?
不可以。continue和break识别的是最小for或while。
就像是跑得再努力你没法超越最后一名。
6、
#当不需要访问元素时,for是while的无穷版 for i in range(0,999999):#绝对有新手喜欢这样搞 print(“请等待!”) sleep(1000) | #当不需要访问元素时,while是for的无穷版 while True: print(“请等待!”) sleep(1000) |
#当需要访问元素时,for 是while的简化升级 sum=0 mylist=[9,8,7,6,5] for i in mylist: sum=sum+i print('sum=%d,\ni=%d\n'%(sum,i))
| i=0 sum=0 mylist=[9,8,7,6,5] while i<=len(mylist)-1: sum=sum+mylist[i] i=i+1 print('sum=%d,\ni=%d\n'%(sum,i)) |
7、总结
if | for | while |
单次 或者说循环一次 | 循环多次 [1,有限大] | 零到无穷次 [0,inf) |
可搭配break | 不建议搭配break | 不建议搭配break |
判断条件 | 自动判断溢出 | 判断条件 |
#最复杂句式 if elif else | #最复杂句式 For 对象指明: do A if X do B break else do C do D ‘’’ 执行AAA发现X 那么就是AAABD 执行AAAAA没问题 那么就是AAAAACD ‘’’ | #最复杂句式 while X1 do A if X2 do B break else do C do D ‘’’ 执行AAA发现X2 那么就是AAABD 执行AAAA发现X1非 那么就是AAAACD 执行AAAAA没问题 那么就是AAAAACD ‘’’ |