Python基础(3)条件语句与循环语句

成员运算

​ 判断某个个体在不在某个群体之内
​ 关键字:in(在) not in (不在)
​ 输出结果为 True 或 False

name_list = ['tony', 'jason', 'jay', 'jake']
print('jake' in name_list)  # 输出结果为True

#在字典中只能通过查询K来访问V,所以如果直接问V是否在其中,大都是False
personal_information = {
    'name': 'tony',
    'age': 19,
    'job': 'idol'
}
print('tony' in personal_information)
#输出结果为False

身份运算

​ 判断两个数据值和地址是否相等

​ 1.判断值是否相等:用 ==
​ print([11, 22, 33, 444, 555] == [11, 22, 33, 444, 555]) # 输出结果为 True

​ 2.判断地址是否相等:用 is
​ print([11, 22, 33, 444, 555] is [11, 22, 33, 444, 555]) # 输出结果为 False

流程控制

​ 流程控制即控制事物的执行流程,分为三种结构

1.顺序结构

​ 自上而下依次运行

graph TD A[第一步] -->B(第二步) B --> C(第三步)

2.分支结构

​ 在运行过程中根据条件的不同可能会执行不同的流程

​ 关键字:if

2.1 单 if 分支结构

​ if 条件:条件成立之后执行的子代码块

graph TD A[第一步] -->B{if条件} B --> |条件成立|C[结果]
age = 17
if age < 18:	# 条件语句后必须要加冒号
    print('未成年')

2.2 if与else连用

​ 语法:
​ if 条件:
​ 条件成立后执行的子代码块

​ else:
​ 条件不成立的情况下执行的子代码块

​ 注 : if与else连用 两者的子代码永远只会执行一个

graph TD A[第一步] --> B{if条件} B --> |条件成立|C[执行if下的子代码] B --> |条件不成立|D[执行else下的子代码]
age = 19
if age < 18:
    print('未成年')
else:
	print('成年')

2.3 if elif else三者连用

​ 语法:
​ if 条件1:
​ 条件1成立之后执行的子代码块

​ elif条件2:
​ 条件1不成立 条件2成立之后执行的子代码块

​ elif条件3:
​ 条件1和2都不成立 条件3成立之后执行的子代码块

​ . . . . . .
​ else:
​ 上述条件都不成立 执行的子代码块

graph TD A[第一步] -->B{if条件1} B -->|条件1不成立|C{elif条件2} B -->|条件1成立|D(执行条件1后的子代码块) C -->|条件1和条件2都不成立|E{elif条件3} C -->|条件2成立|F[执行条件2下的子代码块] E -->|上述条件都不成立|G[执行else下的子代码块] E -->|条件3成立|H[执行条件3下的子代码块]
# 根据成绩评判分类
    # 大于90优秀 大于80良好 大于70一般 大于60及格 其他挂科
    score = 79
    if score > 90:
        print('优秀')
    elif score > 80:
        print('良好')
    elif score > 70:
        print('一般')
    elif score 78> 60:
        print('及格')
    else:
        print('挂科重修')

3.循环结构

while循环

​ while 条件:

​ 条件成立之后循环执行的子代码块

​ 例:

while True:
     # 1.获取用户输入的用户名和密码
    username = input('username:')
    pw = input('password:')
    # 2.判断用户名和密码是否正确
    if username == 'tony' and password == '111':
        print('login succeed')
    else:
        print('login failed')

上列代码执行的流程图:
image

while + break


# break结束本层循环
while True:
     # 1.获取用户输入的用户名和密码
     username = input('username>>>:')
     password = input('password>>>:')
     # 2.判断用户名和密码是否正确
     if username == 'jason' and password == '123':
        print('login succeed')
        # 直接结束本层循环
         break
     else:
         print('login failed')

上列代码执行的流程图:
image

break跳出本层循环的含义及while嵌套

# while嵌套
while True:
    # 1.获取用户输入的用户名和密码
    username = input('username>>>:')
    password = input('password>>>:')
    # 2.判断用户名和密码是否正确
    if username == 'jason' and password == '123':
        print('login succeed')
        while True:
            cmd = input('请输入您的指令>>>:')
            # 判断用户是否想退出
            if cmd == 'q':
                break
            print('正在执行您的指令:%s' % cmd)
        break
    else:
        print('login failed')

上述代码的流程图如下:

image

全局标志位

# 标志位的使用
flag = True
while flag:
    # 1.获取用户输入的用户名和密码
    username = input('username>>>:')
    password = input('password>>>:')
    # 2.判断用户名和密码是否正确
    if username == 'jason' and password == '123':
        print('login succeed')
        while flag:
            cmd = input('请输入您的指令>>>:')
            # 判断用户是否想退出
            if cmd == 'q':
                flag = False
            print('正在执行您的指令:%s' % cmd)
    else:
        print('login failed')

while+continue

​ continue会让循环体代码直接回到条件判断处重新判断

​ 例:使用while循环打印出0-10,但不打印5

count = 0
while < 11:
    if count == 5:
        count += 1
        continue
    print(count)
    count +=1

while+else

当while循环没有被人为中断的情况下才会执行else

count = 0
while count < 5:
     print(count)
     count += 1
else:
     print('end')  # 会执行else子代码

count = 0
while count < 5:
    if count == 3:
        break
    print(count)
    count += 1
else:
    print('end')  # 不会执行else子代码

死循环

​ 死循环会让CPU极度繁忙 甚至崩溃

while True:
    print(111)

for 循环

for循环能做到的事情 while循环都可以做到
但是for循环语法更加简洁 并且在循环取值问题上更加方便

语法结构:

for 变量名 in 可迭代对象: 如: 字符串、列表、字典、元组、集合
for循环体代码

流程图:
image

ps:变量名如果没有合适的名称 那么可以使用i,j,k,v,item等

例:

# 循环取出列表的每一个元素并打印
for name in ['tony', 'leo', 'jake', 'jay']:
    print(name)
    
# for循环字符串
for i in 'hello world':
    print(i)

# for循环字典:默认只能拿到k
d = {'username': 'tony', 'pwd': 111, 'job': 'doctor'}
for k in d:
    print(k, d[k])

range关键字

# 第一种:一个参数,从0开始,顾头不顾尾
for i in range(10):
    print(i)
    
# 第二种:两个参数,自定义起始位置,顾头不顾尾
for i in range(2,10):
    print(i)
    
#第三种:三个参数,第三个数字用来控制等差
for i in range(10,289,8):
    print(i)

range在不同版本的解释器中 本质不同

​ 在python2.X中range会直接生成一个列表
​ 在python2.X中有一个xrange也是迭代器
​ 在python3.X中range是一个迭代器,节省内存空间
​ 注:python2.X中xrange就是python3.x里面的range

for+break

​ break功能也是用于''结束''本层循环

	for i in range(10):
    if i == 4:
        break
    print(i)

for+continue

​ continue功能也是用于结束''本次''循环

for i in range(10):
    if i == 4:
        continue
    print(i)

for+else

​ else也是在for循环正常结束的情况下才会执行

for i in range(10):
    if i == 4:
        break
    print(i)
else:
    print('end')

for循环的嵌套使用

for i in range(3):
    for j in range(6):
        print('*', end='')
    print()

运行结果:
image

重点补充

​ 1.条件都会转成布尔值 从而决定子代码是否执行
​ 2.在python中 使用缩进来表示代码的从属关系
​ 3.并不是所有的代码都可以拥有子代码
​ 4.同属于某个代码的多行子代码 必须要保持相同的缩进量
​ 在python中推荐使用四个空格来缩进
​ ps:小技巧 上一行代码的结尾如果是冒号 那么下一行代码必缩进

作业 猜年龄的游戏

image

image

posted @ 2021-11-04 19:26  skuukzky  阅读(252)  评论(0)    收藏  举报