Advertisement

2024年最新Python-流程控制总结(if、elif、else、for、while、continue

阅读量:

pass

循环中的else

内置函数

enumerate(iterable, start=0)

range(start, stop[, step])

zip(*iterables)


条件

if、elif、else

关键字 ' elif ' 是 ' else if ' 的简写形式,在编程逻辑中二者功能等同;在一个由多个连续的if... elif... else...组成的序列中,则相当于使用其他编程语言中的switch-case结构。

可以有零个或多个 elif部分,以及一个可选 的 else部分。

可与and、or、not 等一起使用

格式:

复制代码
    if <条件判断1>:
    <执行1>
    elif <条件判断2>:
    <执行2>
    elif <条件判断3>:
    <执行3>
    else:
    <执行4>

举例:

复制代码
>     x = 80
>     if 0 < x < 60:
>         print('bad')
>     elif 60 <= x < 90:
>         print('excellent')
>     else:
>         print('perfect')
>  
>  
>       
>       
>       
>       
>       
>       
>       
>  
> ```
>
>

**结果:**

>
>
> excellent
>
>

#### 三元操作符???

在C++中有?,那么python中没有?,要实现三元操作符如何办呢?**X if C else Y**

**举例:**

>
>

>>

>>

>>>

>>>

>>>>

>>>>

>>>> grade = 90  
>  a = ‘good’ if grade>=90 else ‘bad’  
>  a  
>  ‘good’
>>>>

>>>>

>>>

>>>

>>

>>

>
>

### 循环

#### for

对任意序列进行迭代(例如,列表、元组、字符串等),使用关键字in。

**举例:**

>
复制代码
words = ['hello', 'lady', 'killer', '9']
for w in words:
    print(w, len(w))
复制代码

结果:

hello 5
lady 4
killer 6
9 1

如果你希望在循环过程中对序列进行增删操作,则一种常用的方法是通过切片操作实现。对于某些可迭代类型来说,则提供cop y函数也是一种方便的方式。

复制代码
>     nums = [3, 7, 8, 3, 4, 6, 1]
>  
>     for num in nums[:]:
>         if num > 5:
>             nums.pop(nums.index(num))
>     print(nums)
>  
>  
>       
>       
>       
>       
>       
>       
>  
> ```
>
>

**结果:**

>
>
> [3, 3, 4, 1]
>
>

#### while

循环语句,与if相比,若满足条件,一直运行,而不是一次。

>
复制代码
while expression:
    something need to repeat
复制代码
无限循环

while True即可,不再举例

计数循环

使用cnt进行计数

复制代码
>     cnt = 0
>     while cnt < 5:
>         print(f'第{cnt+1}次循环')
>         cnt += 1 
>  
>  
>  
>       
>       
>       
>       
>       
>  
> ```
>
>

**结果:**

>
>
> 第1次循环  
>  第2次循环  
>  第3次循环  
>  第4次循环  
>  第5次循环
>
>

##### do…while???

在C++中你可以找到doo…while,然而,python中没有。python的开发者希望语言变得更简单,如果不是有人使用语言中的其他关键字模仿三元操作符经常出错,甚至连if…else实现三元操作符也不会有。当然,do…while的实现就很简单了,使用一个flag即可,do…while就是先做,然后再判断。

**举例:**

>

导入模块random,并设置变量flag为True值。当变量flag为真时开始循环:从范围中选择一个数字num并输出该数值。如果该数字小于4,则将变量flag设置为False值并结束循环过程。

结果(当然,你的结果和我的可能不一样):

8
3

continue与break

continue 用于终止当前的循环迭代,并执行下次循环;break 用于退出当前的循环体。这两个关键字使得程序能够更加灵活地控制循环流程。

小综合举例:

复制代码
>     cnt = 3
>     password = 'lady_killer9'
>     while cnt != 0:
>         pwd = input('please input your password:')
>         if pwd == password:
>             print('log in success')
>             break
>         else:
>             print('password not right!!!')
>             cnt -= 1
>             continue
>  
>  
>       
>       
>       
>       
>       
>       
>       
>       
>       
>       
>       
>  
> ```
>
>

**结果:**

>
>
> E:\Workspace\python_workspace\learnpy>python learncondition.py  
>  please input your password:hi  
>  password not right!!!  
>  please input your password:lady  
>  password not right!!!  
>  please input your password:lady_killer  
>  password not right!!!
>
>
>
> E:\Workspace\python_workspace\learnpy>python learncondition.py  
>  please input your password:hello  
>  password not right!!!  
>  please input your password:lady_killer9  
>  log in success
>
>

### pass

python使用缩进而不是{},有些时候语法上需要写语句,但是我们又希望什么都不要做,这个时候就可以使用pass。

**举例(找到对3取余为1的数):**

>

初始值num设为0
数组nums定义为[1,2,5,6,4,7]
遍历列表nums中的每个元素i
如果i除以3的余数等于1:
打印出找到的数字:并继续下一条指令
如果i能被2整除:
打印出"偶数但不符合"
否则不做处理

结果:

找到了: 1
偶数但不符合
偶数但不符合
找到了: 4
找到了: 7

i为5时,pass掉了

循环中的else

Python中的循环结构可能会包含一个 else 子句。这个子句会在两种特定条件下被触发:当for循环完整遍历所有列表元素时(即使用for关键字),或者当while循环的条件变为False(即不再满足条件)时。不过,在for或while循环内部使用了break关键字终止循环的情况下,则该else子句不会被执行。换句话说,在没有break的情况下会执行else后面的语句

寻找最大因子

普通:

复制代码
>     def showMaxFactor(num):
>         flag = False
>         count = int(num/2)
>         while count > 1:
>             if num % count == 0:
>                 print(f'largest factor of {num} if {count}')
>                 flag = True
>                 break
>             count -= 1
>         if not flag:
>             print(num, 'is prime')
>  
>  
>     for n in range(10, 21):
>         showMaxFactor(n)
>  
>  
>       
>       
>       
>       
>       
>       
>       
>       
>       
>       
>       
>       
>       
>       
>       
>  
> ```
>
>

**结果:**

>
>
> largest factor of 10 if 5  
>  11 is prime  
>  largest factor of 12 if 6  
>  13 is prime  
>  largest factor of 14 if 7  
>  largest factor of 15 if 5  
>  largest factor of 16 if 8  
>  17 is prime
>
>

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以点击这里获取]()**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

全部评论 (0)

还没有任何评论哟~