今日内容概要

  • 成员运算

  • 身份运算

  • 流程控制(重点)

    if判断
    
    while循环
    
    for循环
    

今日内容详细

成员运算

in
    判断在...里面
    某一个对象包含于另外一个对象则返回True
    字符串、列表、元组、字典、集合都支持成员运算
not in
    取反
    某一个对象没有包含于另外一个对象则返回True
 
print('a' in 'hello world aaa')
print('hello' in 'hello world aaa')
print('jason' in ['jason', 'egon', 'kevin'])

# 字典参与成员运算 只有key参加 value无法参与
print('jason' in {'name': 'jason', 'pwd': 123})
print('name' in {'name': 'jason', 'pwd': 123})

身份运算

==  仅仅判断值(value)是否相等   
is  判断内存地址是否相等(id),相等则返回True
is not 在两个对象的id不同时is not会返回True

l1 = ['jason', 'egon', 'kevin']
l2 = ['jason', 'egon', 'kevin']
# print(id(l1),id(l2))
print(l1 == l2)  # True
print(l1 is l2)  # False
"""
值相等内存地址不一定相等
内存地址相等值一定相等
id相同,内存地址必定相同,意味着type和value必定相同
value相同type肯定相同,但id可能不同
"""

流程控制

流程控制即控制流程,具体指控制程序的执行流程,而程序的执行流程分为三种结构:顺序结构(之前我们写的代码都是顺序结构)、分支结构(用到if判断)、循环结构(用到while与for)
顺序结构
	代码自上而下依次运行(我们之前所写的代码都是顺序结构)
分支结构
	代码运行到某个节点之后根据条件的不同执行不同的代码(if判断)
循环结构
	代码运行到某个节点之后一直重复执行某一段代码直到结束(while、for)

分支结构

分支结构就是根据条件判断的真假去执行不同分支对应的子代码

"""
必备知识
	1.代码缩进
	在python中使用缩进来表示代码的从属关系
	一般情况下我们采取四个空格来表示缩进(推荐)
	
	并不是所有的代码都可以拥有子代码
	截至目前为止只有if可以拥有子代码
	
	同属于一个关键字的子代码必须要保持相同的缩进量
	ps:可以简单的记忆遇到冒号下面的代码必缩进
	2.条件可以是任意表达式,但执行结果必须为布尔类型
    在if判断中所有的数据类型也都会自动转换成布尔类型
       2.1、None,0,空(空字符串,空列表,空字典等)三种情况下转换成的布尔值为False
       2.2、其余均为True
"""
#1. 如果女孩子的年龄小于30岁 打印小姐姐
girl_age = 58
if girl_age < 30:  # if判断
    print('小姐姐好')
    print('小姐姐好')
    print('小姐姐好')
    print('小姐姐好')
"""
if 条件:
   条件成立之后才会执行的代码
"""

#2. 如果女孩子的年龄小于30岁 打印小姐姐 否则打印认错人了
girl_age = 68
if girl_age < 30:
    print('小姐姐好')
else:
    print('认错人了')

"""
if 条件:
    代码1
    代码2
    ...
else:
    代码1
    代码2
    ...
如果条件成立则走if的子代码
如果条件不成立则走else的子代码
"""

#3. 如果女孩子的年龄小于30岁 打印小姐姐 小于40随打印阿姨我不想努力了 小于50岁老宝贝 否则躺平
girl_age = 28
if girl_age < 30:
    print('小姐姐')
elif girl_age < 40:
    print('阿姨我不想努力了')
elif girl_age < 50:
    print('老宝贝')
else:
    print('躺平')

"""
if 条件1:
    代码1
    代码2
    ...
elif 条件2:
    代码1
    代码2
    ...
else:
    代码1
    代码2
    ...
    条件1成立 执行if的子代码 elif和else都不执行
    条件2成立(说明条件1没有成立) 执行elif的子代码 if和else都不执行
    如果条件都不成立 则走最后的else子代码 if和elif都不执行
    elif可以写多个
"""

分支结构补充

# 条件可以是一个 也可以是多个连接
gender = 'female'
age = 18
height = 165
is_beautiful = True
if gender == 'female' and age < 22 and height > 155 and is_beautiful:
    print('吃饭看电影 天黑了')
else:
    print('我有事先走了')


# if嵌套
gender = 'female'
age = 18
height = 165
is_beautiful = True
is_success = True
if gender == 'female' and age < 22 and height > 155 oand is_beautiful:
    print('能否加个微信认识一下?')
    if is_success:
        print('吃饭 散步 看电影 交流')
    else:
        print('你是个好人')
else:
    print('我有事先走了')


#1. 成绩评判系统
"""
分数大于90 打印优秀
分数大于80 打印良好
分数大于70 打印一般
分数大于60 打印及格
分数小于60 打印挂科
"""
score = input('score>>>:')
# 暂且先忽略
score = int(score)
if score > 90:
    print('优秀')
elif score > 80:
    print('良好')
elif score > 70:
    print('一般')
elif score > 60:
    print('及格')
else:
    print('挂科')



# 2.用户登录功能
# 1.获取用户的用户名和密码
username = input('username>>>:')
password = input('password>>>:')
# 2.判断用户名和密码是否正确
if username == 'jason' and password == '123':
    print('老板好 来宾三位!')
else:
    print('去你妹的')


# 3.根据星期的不同做出不同的动作  周一到周五划水  周六周日躺平
today = input('周几>>>:')
if today in ('一','二','三','四','五'):
    print('划水')
elif today in ('六','七'):
    print('躺平')
else:
    print('见了鬼了')

循环结构

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

while True:
    # 1.获取用户的用户名和密码
    username = input('username>>>:')
    password = input('password>>>:')
    # 2.判断用户名和密码是否正确
    if username == 'jason' and password == '123':
        print('登录成功')
    else:
        print('用户名或密码错误')

"""
while 条件:
    循环体代码1
    循环体代码2
    ...
当条件成立的情况下 会依次执行while子代码
子代码运行结束之后再次返回到条件处判断条件是否成立 如果成立继续执行
如果不成立则结束循环
"""

#while+break的使用
while True:
    res = input('start>>>:')
    while True:
        # 1.获取用户的用户名和密码
        username = input('username>>>:')
        password = input('password>>>:')
        # 2.判断用户名和密码是否正确
        if username == 'jason' and password == '123':
            print('登录成功')
            # 结束循环
            break  # 结束离它最近的一个循环  本层循环
        else:
            print('用户名或密码错误')
    break


#while+continue的使用
#break代表结束本层循环,而continue则用于结束本次循环,直接进入下一次循环
#循环打印1-10 除了数字7
count = 1
while count < 11:
    if count == 7:
        count += 1
        # 跳过本次循环 开始下一次循环
        continue
    print(count)
    # 让count自增1
    count += 1

#while+else的使用
#在while循环的后面,我们可以跟else语句,当while循环正常执行完并且中间没有被break 中止的话,就会执行else后面的语句,所以我们可以用else来验证,循环是否正常结束
count = 1
while count < 11:
    if count == 7:
        break
    print(count)
    # 让count自增1
    count += 1
else:
    print('当while没有被break主动结束的情况下自动结束了 则会走else')

循环嵌套

# while循环嵌套+break
#如果while循环嵌套了很多层,要想退出每一层循环则需要在每一层循环都有一个break
while True:
    # 1.获取用户的用户名和密码
    username = input('username>>>:')
    password = input('password>>>:')
    # 2.判断用户名和密码是否正确
    if username == 'jason' and password == '123':
        print('登录成功')
        # 循环结构
        while True:
            command = input('command>>>:')
            if command == 'q':
                break
            print('正在执行您的命令:%s'%command)
        break
    else:
        print('用户名或密码错误')


# 全局标志位
#针对嵌套多层的while循环,如果我们的目的很明确就是要在某一层直接退出所有层的循环,其实有一个窍门,就让所有while循环的条件都用同一个变量,该变量的初始值为True,一旦在某一层将该变量的值改成False,则所有层的循环都结束
flag = True
while flag:
    # 1.获取用户的用户名和密码
    username = input('username>>>:')
    password = input('password>>>:')
    # 2.判断用户名和密码是否正确
    if username == 'jason' and password == '123':
        print('登录成功')
        # 循环结构
        while flag:
            command = input('command>>>:')
            if command == 'q':
                flag = False
            print('正在执行您的命令:%s'%command)
    else:
        print('用户名或密码错误')

for循环

for循环能够做到的事情while循环都可以做到
但是for循环使用起来比while更加的简单快捷

name_list = ['jason','egon','kevin','tony']
print(len(name_list))  # 4
# 使用while循环将列表中的元素依次打印出来
count = 0
while count < len(name_list):
    print(name_list[count])
    count += 1

# for循环
for name in name_list:
    print(name)
"""
for 变量名 in 可迭代对象:  # 看成是 字符串 列表 字典等类型
    for循环的循环体代码

变量名如果你真的不知道起什么 一般都是以i、j、item命名
"""

for i in 'hello world':  # for循环字符串 将单个单个的字符依次赋值给变量名i
    print(i)


for i in {'name':'jason','pwd':123}:  # for循环字典 指挥依次拿到字典的key
    print(i)


#1. 打印0-10
count = 0
while count < 11:
    print(count)
    count += 1

for i in range(11):  # range简单的看成是一个能够产生一个含有多个元素的列表,range(11)会产生从0-10这11个数
    print(i)

for i in range(1,11):  # range简单的看成是一个能够产生一个含有多个元素的列表,range(1,11)会产生从1-10这10个数
    print(i)
"""
range(起始位置,终止位置)
    顾头不顾尾
"""

"""
range
在python3中 类似于是一个老母猪 
    需要值的时候才会给你 不需要的时候就不给    节省内存
在python2中 直接生成一个列表
    不节省内存
    xrange(10)  等价于 python3里面的range()
"""


#break 与 continue也可以用于for循环,使用语法同while循环
# break
for i in [1,2,3,4,5,6]:
    if i == 4:
        break  # 结束本层for循环  与while+break一致
    print(i)

# continue
for i in [1,2,3,4,5,6]:
    if i == 4:
        continue  # 结束本次for循环  与while+continue一致
    print(i)

# else  for循环正常结束之后走else 否则不走  与while+else一致
for i in range(5):
    if i == 3:
        break
    print(i)
else:
    print('快结束了')

#for循环嵌套
#2. 九九乘法表
for i in range(1, 10):
    for j in range(1, i + 1):
        print('%s*%s=%s' % (i, j, i * j), end=' ')
    print()

#3.金字塔
'''
#max_level=5
     *        # current_level=1,空格数=4,*号数=1
    ***       # current_level=2,空格数=3,*号数=3
   *****      # current_level=3,空格数=2,*号数=5
  *******     # current_level=4,空格数=1,*号数=7
 *********    # current_level=5,空格数=0,*号数=9

# 数学表达式
空格数=max_level-current_level
*号数=2*current_level-1
'''
max_level=5
for current_level in range(1,max_level+1):
    for i in range(max_level-current_level):
        print(' ',end='') #在一行中连续打印多个空格
    for j in range(2*current_level-1):
        print('*',end='') #在一行中连续打印多个*号
    print()
posted on 2021-06-01 20:02  橘子皮卡丘  阅读(45)  评论(0)    收藏  举报