一木.溪桥学Python-07:集合set、条件判断if elif else、循环while、break、continu、else

一木.溪桥 在Logic Education跟Amy学Python

逻辑教育 :https://logicedu.ke.qq.com

12期:Python基础课

日期:2020年12月28日

一木.溪桥学Python-07:

集合set、条件判断if elif else、循环while、break、continu、else


学习目标:

  • 集合set()
  • 条件判断if elif else
  • 循环while、break、continu、else

学习内容:

集合set

set介绍

  • 集合是一个无序不重复元素的集
  • 基本功能:关系测试、消除重复元素
  • set 是可变数据类型
  • 核心:自动去重

set创建

  • set创建用{ele1,ele2,ele3…}框定元素,用逗号分隔
s = {1,2,3,4,5,6}   # 

s1 = {}             # 

print(type(s))    

print(s)          # {1, 2, 3, 4, 5, 6}

print(type(s1))

print(s1)         # {}
  • 用set()创建
s = set("hello everyone!")        

print(s)                                   # {'e', ' ', '!', 'v', 'n', 'l', 'r', 'h', 'y', 'o'}
  • tips:
    1.无序,不重复,自动去重!
    2.{} 不是创建空集合,而是空字典。要创建空集合用 set()

set添加元素

  • 用set.add(key)添加元素
    Add an element to a set.
    This has no effect if the element is already present.
s = set("hello everyone!")

s.add("My god!")

print(s)                # {'n', 'My god!', 'o', '!', ' ', 'r', 'h', 'v', 'e', 'l', 'y'}
  • tips:
    1.可以重复添加,但是会自动去重,所以无效果
    2.不能添加可变对象

set更新

  • 用 set.update() 更新
  • 新元素增加进去,并去重
s = set("hello everyone!")

s.add("My god!")

s.update("123")

print(s)                # {'n', '!', 'e', '1', '2', 'h', ' ', 'r', 'y', '3', 'v', 'l', 'o', 'My god!'}

set删除元素

  • set.remove(key) : 删除指定元素
s = set("hello!")

s.remove("e")

print(s)                # {'!', 'o', 'h', 'l'}

s.remove("x")           # KeyError: 'x' 没有对应删除的元素则报错
  • set.pop() : 随机删除元素(注意:无参数)
s = set("hello!")
i = 1
while i <= 5:
    s.pop()
    i += 1
    print(s)
    
Run:
{'o', '!', 'e', 'h'}
{'!', 'e', 'h'}
{'e', 'h'}
{'h'}
set()

'''
 运行删除空集合会报以下错误:
KeyError: 'pop from an empty set'
set()
'''
  • tips:
    1.集合不能取出某个元素,因为集合既不支持下标索引也不支持字典那样的通过键值对获取。

总结数据类型哪些为可变的哪些为不可变的

  • 可变数据类型:指改变数据本身,内存地址不改变
  • eg. : 列表 list()、字典 dict()、集合set()
s = set("hello!")
i = 1
while i <= 5:
    s.pop()
    i += 1
    print(s)
    print(id(s))

Run:
{‘l’, ‘e’, ‘o’, ‘h’}
2472898977352
{‘e’, ‘o’, ‘h’}
2472898977352
{‘o’, ‘h’}
2472898977352
{‘h’}
2472898977352
set()
2472898977352

  • 不可变数据类型:指改变数据本身,内存地址会改变
  • eg. : 数值、字符串str、字节bytes、元组tuple
s = "hello!"

s1 = s.replace("h","AA")

print(id(s))     # 2426813203040

print(id(s1))    # 2426814038736

程序顺序执行

  • Python代码在执行过程中,遵循下面的基本原则:
    普通语句,直接执行;
    碰到函数,将函数体载入内存,并不直接执行
    碰到类,执行类内部的普通语句,但是类的方法只载入,不执行
    碰到if、for等控制语句,按相应控制流程执行
    碰到@,break,continue等,按规定语法执行
    碰到函数、方法调用等,转而执行函数内部代码,执行完毕继续执行原有顺序代码

程序主入口

  • 一个 .py,除了可以被直接运行外,还可以作为模块,被其他 .py文件导入。不管是直接运行还是被导入,.py 文件的最顶层代码都会被运行(Python 用缩进来区分代码层次)。
  • 但是当一个 .py 文件作为模块被导入时,我们可能不希望一部分代码被运行。那么就可以将这部分代码的调用写在主程序中。
if __name__ == '__main__':
    pass

条件判断 if elif else

  • 条件判断是通过一条或多条判断语句的执行结果(True 或者 False)来决定执行的代码块。在Python 语法中,使用 if 、 elif 和 else 三个关键字来进行条件判断。

条件判断使用原则:

  • 每个条件后面要使用 冒号 作为 判断行的结尾,表示接下来是 满足条件(结果为True)后要执行的语句块。
  • 除了 if 分支必须有,elif 和 else 分支都可以根据情况省略。
  • 使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
  • 顺序判断每一个分支,任何一个分支首先被命中并执行,则其后面的所有分支被忽略,直接跳过!
  • 可以有多个 elif ,但只能有一个 else
  • 在 Python 中 没有 switch – case 语句。

条件判断嵌套

  • if…elif…else 语句可以嵌套,也就是把 if…elif…else 结构放在另外一个 if…elif…else 结构中。

循环控制 (while、break、continu、else )、for

循环控制介绍

  • 循环控制,就是让 程序循环运行某一段代码 直到 满足退出的条件,才退出循环Python 用关键字 for 和 while 来进行循环控制。

while 循环表达式

  • 当程序从上至下执行时,遇到 while 循环语句,则会判断表达式是否成立 ,当成立时 则会进入 while 循环体内,执行 循环体内部执行的代码块。直到判断表达式不成立时 ,则 终止循环。
    一木.溪桥学Python-07:集合set、条件判断if elif else、循环while、break、continu、else_第1张图片

break 与 continue 语句

  • break :
    当循环体执行的过程中想要退出循环体,就可以使用到 break 语句。
  • continue :
    continue 语句用于跳过当前循环体剩余部分的代码,直接开始下一轮循环。它不会退出和终止循环 。

while 的 else 从句

while 循环还可以增加一个 else 从句。当 while 循环 正常执行完毕,会执行 else语句。

  • tips:
  1. else 与 while 平级的缩进方式
  2. 如果是被 break 等机制 强制提前终止的循环,不会执行 else 语句。

while 循环嵌套使用

if 判断可以嵌套,while 当然也可以嵌套。但是建议大家不要嵌套 3 层以上,那样的效率会很低。


作业:

一木.溪桥学Python-07:集合set、条件判断if elif else、循环while、break、continu、else_第2张图片
一木.溪桥学Python-07:集合set、条件判断if elif else、循环while、break、continu、else_第3张图片


作业答案:

题3:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2020/12/30 8:52
# @Author :DXD
# @File : 作业.py
# @Software: PyCharm

print("同学最近学习了吗?")

s_input = input("请输入Yes/No:")

s_input = s_input.lower()

if s_input == "yes":

    print(''' Very good!
    学习的什么呢? 请选择以下选项:
    1.Python
    2.高数
    3.退出 ''')

    s_opt = input("请输入选项:")

    if s_opt == '1':

        print("Python 真不戳!")

    elif s_opt == '2':

        print("我待高数如初恋,高数虐我千百偏啊!")
        
    elif s_opt == '3':

        print("已退出")

    else:

        print("输入有误,请重新输入!")

elif s_input == "no":

    print("年青人,耗子尾汁!")
	
else:

    print("输入有误,请重新输入!")
	

  • Run:3.1
    同学最近学习了吗?
    请输入Yes/No:yes
    Very good!
    学习的什么呢? 请选择以下选项:
    1.Python
    2.高数
    3.退出
    请输入选项:1
    Python 真不戳!

******
请输入选项:2
我待高数如初恋,高数虐我千百偏啊!

******
请输入选项:3
已退出

******
请输入选项:haha!
输入有误,请重新输入!

******

Run:1.2
同学最近学习了吗?
请输入Yes/No:no
年青人,耗子尾汁!

******
Run:1.3
同学最近学习了吗?
请输入Yes/No:dfg
输入有误,请重新输入!

课后讲解自行优化程序

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2020/12/30 8:52
# @Author :DXD
# @File : 作业.py
# @Software: PyCharm

for i in range(1, 6):       # 用于循环测试5次

    print("同学最近学习了吗?", "", sep="\n")

    while 1:

        s_input = input("请输入Yes/No:")

        s_input = s_input.lower()

        if s_input in("yes", "no"):

            flag = 1

            break

        else:

            print("输入有误,请重新输入!", "", sep="\n")

    while flag:
        if s_input == "yes":

            print("Very good!学习的什么呢? 请选择以下选项:", "1.Python", "2.高数", "3.退出", "", sep="\n")

            s_opt = input("请输入选项:")

            if s_opt == '1':

                print("Python 真不戳!", "", sep="\n")

                break

            elif s_opt == '2':

                print("我待高数如初恋,高数虐我千百偏啊!", "", sep="\n")

                break

            elif s_opt == '3':

                print("已退出", "", sep="\n")

                break

            else:

                print("输入有误,请重新输入!", "", sep="\n")

        elif s_input == "no":

            print("年青人,耗子尾汁!", "", sep="\n")

            break

        else:

            print("输入有误,请重新输入!", "", sep="\n")

Run:
请输入Yes/No:dd
输入有误,请重新输入!

请输入Yes/No:

tips:课后思考
  • 1.修改后实现两个位置:“输入有误,请重新输入!”的跳转。
  • 2.开头增加了一个for循环来做代码调试用。

你可能感兴趣的:(Python学习之路,python)