day4-01 流程控制

我的未来我决定 提交于 2019-12-03 12:05:26

一、if语法

1.什么是if?

编程的主要目的就是让机器帮助人类工作,所以机器需要有一定的判断力。

主要用于判断事物的对错,真假,是否可行

2.语法结构

  • python用相同的缩进来决定代码块的归属
  • 条件可以是任意表达式,但执行结果必须是bool类型
    • 在if判断中所有的数据类型也都会自动转换成bool类型
    • None,0,空(空字符串,空列表,空字典等)三种情况下转换成布尔值为False
    • 其余均为True

2.1、if 条件:

语法

if 条件:
    代码块1
    代码块2
    ......

案例1:

如果女人年龄>30岁,那么叫阿姨。

# 如果女人年龄>30岁,那么:叫阿姨
gender = 'female'
age = 32
is_beautiful = True

if gender == 'female' and age > 30 and is_beautiful:
    print('阿姨好')

2.2、if...else:

语法

if 条件:
    代码块1
    代码块2
    ...
else:  # 若条件不成立,将要执行的代码块
    代码块1
    ...

案例2:

如果女人年龄>30岁,那么叫阿姨,否则叫小姐姐

age_of_girl = 18

if age_of_girl > 30:
    print('阿姨好')
else:
    print('小姐姐好')

2.3、if...elif...else:

语法

若判断条件较多,中间可以加多个elif

if 条件1:
    代码块1
    代码块2
    ...
# 在这个流程控制语句中可以加n多个elif
elif 条件2:
    代码块1
    代码块2
    ...
elif 条件3:
    代码块1
    代码块2
    ...
else:
    代码块n

案例3:

如果:成绩>=90,那么:优秀

如果成绩>=80且<90,那么:良好

如果成绩>=70且<80,那么:普通

其他情况:很差

score = eval(input('请输入你的成绩:').strip())

if score >= 90:
    print('优秀')
elif 90 > score >= 80:
    print('良好')
elif 80 > score >= 70:
    print('普通')
else:
    print('很差')

2.4、if嵌套

案例4:

如果对方是22岁以下,并且很漂亮,那就告白,如果表白成功,那么在一起,否则打印,阿姨好

age_of_girl = 20
is_beautiful = True
success = False

if age_of_girl < 22 and is_beautiful:
    print('小姐姐我喜欢你')
    if success:
        print('表白成功,在一起')
    else:
        print('表白失败,爱情没啥重要的')
else:
    print('阿姨好')

二、循环结构

2.1 什么是循环结构

循环结构就是重复执行某段代码块

2.2 为什么要用循环结构

人类某些时候需要重复做某件事情

所以程序中必须有相应的机制来控制计算机具备人的这种循环做事的能力

三、while循环语法

3 语法

python中有while与for两种循环机制,其中while循环称之为条件循环,语法如下

while的运行步骤:

  • 如果条件为真,那么依次执行:代码1,代码2,代码3,.....
  • 执行完毕后再次判断条件,如果条件为True则再次执行:代码1,代码2,代码3....,如果条件为False,则循环终止。
while 条件:
    代码块1
    代码块2
    代码块3
    ......
# 死循环
count = 0
while True:
    print(count)
    count += 1

3.1 continue

  • 跳过本次循环,执行下一次循环

  • continue下面不管有多少行代码,都不会执行

3.2 break

  • 结束本层循环
  • 只能结束一层循环

3.3 while + continue

count = 0
while count < 10:
    count += 1
    if count == 5:
        continue
    else:
        print(count)
else:
    print('执行成功')

3.4 while + else

  • 当你的while正常执行结束,就会执行else下面的代码块
  • 如果不正常结束,类似于被break打断,就不会执行
count = 0
while count < 10:
    print(count)
    count += 1
    if count == 5:
        break
else:
    print('执行成功')

3.5 登录认证案例

user_name = '高弟'
user_password = '123'
count = 0
tag = True

while tag:
    inp_name = input('请输入你的用户名:').strip()
    inp_pd = input('请输入你的密码:').strip()
    if inp_name == '高弟' and inp_pd == '123':
        print('登录成功!')
        while tag:
            inp_cmd = input('>>>').strip()
            if inp_cmd == 'exit':
                tag = False
            else:
                print(f'执行{inp_cmd}成功')
    else:
        print('登录失败!')
        count += 1
    if count == 3:
        print('登录超过三次,账户锁死!')
        tag = False

四、for循环语法

for:给我们提供了一种不依赖与索引的取值方式

for取值方式更加简洁

4 语法:

for 变量 in 容器类型:
  • 容器对象中有几个值,他就循环几次
  • 字典对象,直接访问无法访问value
l1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

for i in l1:
    print(i)

image-20191104172233848

d = {'name': 'kody', 'age': 21}
for i in d:
    print(i)

name
age
# 返回的值是key,无法直接取字典对象的value
d = {'name': 'kody', 'age': 21}
for i in d:
    print(d[i])  # 取字典的value,需要通过字典的key

案例5:

# 打印
"""
******
******
******
"""

for i in range(3):  # range(3)等价于range(0, 3),返回的结果是0,1,2
    print('******', end=' ')
    print()

4.1 for循环的嵌套

案例6:

九九乘法表

for i in range(1, 10):  # range(1, 10)输出的是1-9的数字,顾头不顾尾,所以没有数字10
    for j in range(1, i+1):
        print(f'{i}x{j}={i*j}', end=' ')
    print()

但是我们发现打印出来的不是很齐,因为有的结果是个位数,因此少占了一个字符的位置,因此,我们再加一个嵌套的if语句

for i in range(1, 10):
    for j in range(1, i+1):
        if 0 < i*j < 10:
            print(f'{i}x{j}={i*j}', end='  ')
        else:
            print(f'{i}x{j}={i*j}', end=' ')
    print()

image-20191104170722738

4.2 for + continue

案例:

打印1到10的数字,除了5之外

# 循环打印出来1到10数字,如果遇到数字5,则跳过
for i in range(1, 11):
    if i == 5:
        contiune  # 跳过本次循环,执行下一次循环
    else:
        print(i)
print('打印结束')

4.3 for + break

案例:

打印1到10的数字,除了5之外

# 循环打印出来1到10数字,如果遇到数字5,则停止
for i in range(1, 11):
    if i == 5:
        break  # 中断本层代码循环,本层后面代码不在执行
    else:
        print(i)
else:
    print('打印结束')

4.4 for + else

for循环正常执行结束,就会执行else对应的代码块,非正常结束,例如break打断,就不会执行。

案例:

循环打印出来1到10数字,如果遇到数字5,则停止

# 循环打印出来1到10数字,如果遇到数字5,则停止
for i in range(1, 11):
    if i == 5:
        break  # 中断本层代码循环,本层后面代码不在执行
    else:
        print(i)
else:
    print('打印结束')

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!