第二章:Python逻辑控制


逻辑控制

一、条件语句

1. if语句

# 语法
if 条件:
    条件成立执行代码1
    条件成立执行代码2
    ……
# 举例 
In [1]: if True:
   ...:     print("代码1!")
   ...:     print("代码2!")
   ...:     
代码1!
代码2
  • 应用场景举例
In [1]: age=input("请输入年龄:")
请输入年龄:18

# 此处需要进行类型转换
In [2]: if int(age)>=18:
   ...:     print("您已成年,可以上网!")
   ...:     
您已成年,可以上网!
  • 以上代码需要注意数据类型,input输入的为str型,所以需要转为int

2. if else语句

  • 语法
if 条件:
    条件成立执行代码1
    条件成立执行代码2
    ……
else:
    条件不成立执行代码1
    条件不成立执行代码2
  • 应用场景举例
In [1]: age=input("请输入年龄:")
请输入年龄:10

In [2]: if int(age)>=18:
   ...:     print("您已成年,可以上网!")
   ...: else:
   ...:     print("您未成年,不可以上网!")
   ...:     
您未成年,不可以上网!

3. 多重判断

  • 语法
if 条件1:
    条件1成立执行的代码1
    条件1成立执行的代码2
elif 条件2:
    条件2成立执行的代码1
    条件2成立执行的代码1
else:
    以上条件都不成立执行的代码
  • 举例
In [1]: age=int(input('请输入您的年龄:'))
请输入您的年龄:45

In [2]: if age<18:
   ...:     print(f'您的年龄为{age},童工!')
   ...: elif (age>=18) and (age<60):
   ...:     print(f'您的年龄为{age},合法!')
   ...: else:
   ...:     print(f'您的年龄为{age},退休!')
   ...:     
您的年龄为45,合法!

4. if嵌套

  • 语法
if 条件1:
    条件1成立则执行的代码
    条件1成立则执行的代码

    if 条件2:
        条件2成立执行的代码
        条件2成立执行的代码
  • 举例
In [4]: money=1

In [5]: seat=1

In [7]: if money==1:
   ...:     print('有钱买票,请上车!')
   ...:     if seat==1:
   ...:         print('有空座位,请坐下!')
   ...:     else:
   ...:         print('没有空座,请等待!')
   ...: else:
   ...:     print('没有钱买票,请下车!')
   ...:     
   ...:     
有钱买票,请上车!
有空座位,请坐下!
  • 执行流程

在这里插入图片描述

5. 三目运算符

  • 语法
条件成立执行表达式 if 条件 else 条件不成立执行表达式
  • 举例
In [8]: a=1

In [9]: b=2

In [10]: c=a-b if a<b else a+b

In [11]: print(c)
-1

二、循环语句

  • 在python中,循环有while和for两种

1. while

1.1 语法

  • 语法
while 条件:
    条件成立重复执行的代码1
    条件成立重复执行的代码2
    ……
  • 举例
In [1]: result=0

In [2]: i=1

In [3]: while i<100:
   ...:     if i%2==0:
   ...:         result+=i
   ...:     i+=1
   ...:     

In [4]: print(result)
2450

1.2 break和continue

  • break控制循环,当遇到break直接退出循环

  • continue控制循环,当条件满足时会跳出本次循环,继续执行下一次循环

  • break举例

In [5]: count=0

In [6]: while True:
   ...:     count+=1
   ...:     if count==50:
   ...:         break
   ...:     

In [7]: print(count)
50
  • continue举例
In [24]: i=0

In [25]: while i<5:
    ...:     i+=1
    ...:     if i==3:
    ...:         continue
    ...:     print(i)
    ...:     
1
2
4
5
  • 以上代码我们看到3没有被打印,即当i=3时跳出了本次循环,但会继续执行后面的循环

1.3 while循环嵌套

  • 语法
while 条件1:
    条件1成立执行代码
    ……
    while 条件2:
        条件2成立执行代码
        ……
  • 举例
In [26]: i=0

In [27]: j=0

In [28]: while i<5:
    ...:     while j<3:
    ...:         j+=1
    ...:     i+=1
    ...:     

In [30]: print(i)
5

In [31]: print(j)
3
  • 运行流程
    在这里插入图片描述

1.4 应用举例

  • 打印九九乘法表
In [3]: i=1

In [4]: while i<=9:
   ...:     j=1
   ...:     while j<=i:
   ...:         print(f'%d*%d=%02d'%(j,i,j*i),end=' ')
   ...:         j+=1
   ...:     print()
   ...:     i+=1
   ...:     
   ...:     
1*1=01 
1*2=02 2*2=04 
1*3=03 2*3=06 3*3=09 
1*4=04 2*4=08 3*4=12 4*4=16 
1*5=05 2*5=10 3*5=15 4*5=20 5*5=25 
1*6=06 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 
1*7=07 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 
1*8=08 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 
1*9=09 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 

2. for循环

2.1 语法

  • 语法
for 临时变量 in 序列:
    重复执行的代码1
    重复执行的代码2
    ……
  • 举例
In [39]: str1='hello'

In [40]: for i in str1:
    ...:     print(i,end=' ')
    ...:     
h e l l o 

2.2 break和continue

  • 举例
# break
In [41]: str1='hello world'

In [42]: for i in str1:
    ...:     if i==' ':
    ...:         break
    ...:     print(i,end=' ')
    ...:     
h e l l o 

# continue
In [43]: str1='hello1 world'

In [45]: for i in str1:
    ...:     if i=='1':
    ...:         continue
    ...:     print(i,end=' ')
    ...:     
h e l l o   w o r l d 
# 打印结果中没有字符1

3. while…else

  • 语法
while 条件:
    条件成立重复执行的代码
else:
    循环正常结束之后要执行的代码
  • 举例
In [46]: i=0

In [47]: while i<5:
    ...:     i+=1
    ...: else:
    ...:     print(i)
    ...:     
5
# while语句中加break条件
In [48]: i=0

In [49]: while i<5:
    ...:     i+=1
    ...:     if i==3:
    ...:         break
    ...: else:
    ...:     print(i)
    ...:     

# 我们看到上面的代码没有输出i的值,因为while语句中有break属于非正常退出,所以else不会执行

# while语句中加continue条件
In [50]: i=0

In [51]: while i<5:
    ...:     i+=1
    ...:     if i==3:
    ...:         continue
    ...: else:
    ...:     print(i)
    ...:     
    ...:     
5
# 我们看到以上代码输出了i的值,所以continue不会影响else的正常输出

4. for…else

  • 语法
for 临时变量 in 序列:
    重复执行的代码
    ……
else:
    循环正常结束之后要执行的代码
  • 举例
In [54]: str1='hello'

In [55]: for i in str1:
    ...:     print(i,end=' ')
    ...: else:
    ...:     print()
    ...:     print('for循环正常结束执行的else代码!')
    ...:     
    ...:     
h e l l o 
for循环正常结束执行的else代码!
  • 我们看到以上代码输出了i的值,所以continue不会影响else的正常输出

### 4. for...else 

- 语法

```python
for 临时变量 in 序列:
    重复执行的代码
    ……
else:
    循环正常结束之后要执行的代码
  • 举例
In [54]: str1='hello'

In [55]: for i in str1:
    ...:     print(i,end=' ')
    ...: else:
    ...:     print()
    ...:     print('for循环正常结束执行的else代码!')
    ...:     
    ...:     
h e l l o 
for循环正常结束执行的else代码!
  • 当for循环配合break和continue时,执行方式和while循环配合它们使用时的执行方式是一样的

三、其他