day03_八大基本数类型+程序交互+基本运算符+流程控制语句

文章目录

今日习题

python 复制代码
1.如何实现多版本Python解释器共存
2.如何修改默认Python解释器版本
3.什么是变量,什么是常量。各有什么特点。
4.变量的三大特性有哪些,如何查看
5.八大基本数据类型有哪些各有什么特点

昨日内容回顾

python 复制代码
# 【零】多版本Python解释器共存
# 电脑上面安装了多个版本的 Python 解释器
# 想要使用特定版本的解释器的时候  python
# 解决方案:复制原本的 Python 执行文件 ---> 改革名字

# 如何确定当前系统默认的Python解释器版本
# 看自己的系统环境变量中不同版本解释器的环境顺序

# 【零】Python知识补充
# 【1】PIP换源
# 我们使用的 Python解释器是国外的大佬写的,有很多大佬开发的第三方模块,模块库在国外,所以下载速度很慢,所以我们需要换源
# 于是各大名校和机构就在自己的场地内建立了一个公共的平台
# 全局换 : pip set global_index 源地址
# 局部换 :  pip install 模块名 -i 源地址

# 【2】系统环境和虚拟环境
# 系统环境就是安装在我们电脑上面的解释器环境
# 虚拟环境是单独为某个项目创建的系统解析器的副本

# 为什么要使用虚拟环境
# 为了让不同项目之间的环境进行隔离

# 【3】如何创建虚拟环境
# (1)方案一:通过Python自带的虚拟环境工具 venv
# python310 -m venv 虚拟环境名称
# python38 -m venv 虚拟环境名称
# 激活虚拟环境:进入到创建的虚拟环境的文件加中 ---> scripts 文件加 ---> activate.bat
# 退出虚拟环境:在虚拟环境中打开cmd ---> 输入deactivate
# (2)方案二:借助第三方模块 virtualenv # pip install virtualenv
# 创建虚拟环境:virtualenv 虚拟环境名称 默认是根据计算机的默认解释器版本
# 创建不同解析器版本的虚拟环境 , 就要加上解析器版本
#  virtualenv -p python310 虚拟环境名称
# 激活虚拟环境:进入到创建的虚拟环境的文件加中 ---> scripts 文件加 ---> activate.bat
# 退出虚拟环境:在虚拟环境中打开cmd ---> 输入deactivate
# (3)方案三:直接使用Pycharm

# 【零】Pycharm安装
# 【1】打开官网下载安装包
# 一路下一步 : 安装路径不建议选择C盘路径

# 【2】社区版和专业版
#  社区版 : 免费,功能少
#  专业版 : 收费,功能多


# 【一】注释
# 为什么要添加注释:为了解释代码的含义
# 注释语法
# 单行注释 : # + 注释内容
# 多行注释 : 三个单引号或者三个双引号包裹起来的内容

# 【二】变量
# 变量就是存储计算机运行过程中产生的动态变化的量
# 【1】变量命名规则:
# 可以用字母+数字+下划线任意组合
# 数字不能作为变量名的开头
# 变量名不能是关键字 (打出来带橙色的代码)

# 【2】变量的命名风格
# 驼峰体 :
# 大驼峰 每一个单词的首字母都大写
# 小驼峰 第一个单词的首字母小写 其他首字母大写
# 字母+下划线组合 :字母+数字+下划线任意组合

# 【3】变量的定义和调用
# 定义:变量名 = 变量值
# = : 赋值符号

# 调用:直接使用变量名即可找到对应的变量值
# 原理:开辟一块内容空间 , 在这块空间里存储变量值 , 然后用变量名指向这个变量值

# 【4】变量的三大特性
# 变量值 : 变量原本的值
# 直接打印变量名即可获取到变量值
# 变量内存空间地址 : 开辟内存空间存储变量值的位置
# 借助 id 去查看当前变量值所在的内存空间地址
# 变量值的类型 : 不同的类型
# 借助 type 去查看当前变量值的类型

# 【三】常量
# 常量其实是一种特殊的变量
# 常量就是在程序运行过程中不会轻易发生改变的量
# 在Python中常量定义后可以被改变,但是在其他语言常量是不允许修改的

# 【四】PEP8编码规范
# 对Python相关的代码进行了约束
# 大家大多人不遵循协议

【一】八大基本数据类型

python 复制代码
# 【一】学习变量的目的
# 为了在程序运行过程中,能够保存一些数据供后续的代码使用

# 【二】学习基本数据类型的目的
# 基本数据类型是Python中最基本的
# 也是最重要的数据类型

# 【三】八大基本数据类型
# 【1】数字类型
# 整数类型 int
# 浮点数类型 float
# 【2】字符串类型 str
# 【3】列表类型 list
# 【4】字典类型 dict
# 【5】元组类型 tuple
# 【6】布尔类型 bool
# 【7】集合类型 set

# 【一】数字类型
# 【1】整数类型 int
# 语法:变量名 = 整数值
age = 18
print(age, type(age))  # 18 <class 'int'>
# 主要功能:进行算数运算

# 【2】浮点数类型
# 语法:变量名 = 浮点数值(小数值)
salary = 100.23
print(salary, type(salary))  # 100.23 <class 'float'>
# 主要功能:为了更加精确的表示某个数据,可以进行算数运算

# 浮点数和整数可以运算但是精确度会发生变化
# print(3.11 + 1)
# 4.109999999999999

# 【二】字符串类型
# 用来表示一些常用的文本信息
# 名字 住址 ...
name = "dream"
print(name, type(name))  # dream <class 'str'>

# 语法:四种
# 一 单引号包裹的字符
# 二 双引号包裹的字符
# 三 三个双引号包裹的字符
# 四 三个单引号包裹的字符

# 【1】可以索引取值
# 字符串的每一个元素都有自己的索引下表
# 正向索引 : 从 0 开始 从左向右
# 反向索引 : 从 -1 开始 从右向左

# 字符串[索引下标]

# 【2】数学运算
# 字符串 + 字符串 = 字符串首尾拼接
# 字符串 * 数字 = 字符串重复出现数字次数

# 【3】字符串的格式化输出语法
# (1) %s 站位
# "my name is %s" % ("dream")
# %s 表示任意的文本类型 如果不是文本类型也可以被转换为文本
# %d 表示站位的是整数
# %f 表示站位的是浮点数
# %x 表示站位的是十六进制
# (2)format格式化输出
# "my name is {}".format("dream")
# 上面只能按照位置传递参数
# 可以按照关键字传递参数
# "my name is {name}".format(name="dream")
# (3) f" {name} "
# 在字符串的最前面 + f 在字符串的里面用 大括号站住位置 放变量名

# 【三】列表类型
# 当我们需要存储多个学生名字的时候,如果用字符串 字符串不好讲每一个名字取出来
# 列表里面可以存储多个相同类型的变量值或者不同类型也可以

# 语法:变量名 = [元素1, 元素2, 元素3, ...]
# 【1】索引取值
# 列表的每一个元素都有自己的索引下表
# 正向索引 : 从 0 开始 从左向右
# 反向索引 : 从 -1 开始 从右向左

# 列表[索引下标]

# 列表如果嵌套了很多层,只需要清楚地知道么一个元素的下表按下表不断取值即可

# 【四】字典类型
# 上面的列表 可以放多个值但是 这些值 没有标志
# 为每一个值增加上必要的说明
# 语法 : 在大括号{} 中以键值对的方式存储的变量名和变量值

# {"key":"value"}
# key : 一般是对 value的描述性信息 建议大家 键 都是用字符串类型或者是数字类型
# value 是对键的补充 真正的数据

# {"name":"dream","age":18}

# 字典可以索引取值吗?

num_list = [1, 2, 3]
print(num_list[0])
data = {
    "name": "dream",
    "age": 18
}

# 字典[值] 按照键去字典中取值 字典中如果没有这个件就会报错
# 字典.get(键) 按照键去字典中取值 字典中如果没有这个键 就会返回 None
# print(data[0])

info = {
    'name': 'Dream',
    'addr': {
        '国家': '中国',
        'info': [666, 999, {'编号': 466722, 'hobby': ['read', 'study', 'music']}]
    }
}
print(f'''
    my name is {info.get("name")}
    my 国家 is {info.get("addr").get("国家")}
    my luck_num is {info.get("addr").get("info")[0], info.get("addr").get("info")[1]}

''')

# 【五】布尔类型
#  布尔类型 只有两个值 True 和 False
# 就是用来表示逻辑的对与错的两个值
# 用于判断 / 循环 ...
# 语法 变量名 = True / False

# 在Python中为真 True
# 除了假的情况以外的其他情况都是真的
# 1.数字1
# 2.True
# 3.非空的字符串 ...
print(bool(1))
print(bool(True))
print(bool(" "))

# 在Python中为假 False
# 1.False
# 2.0
# 3.空的变量 (空的字符串 / 空的 列表 / 空的字典 ... )
print(bool(False))
print(bool(0))
print(bool(""))
print(bool([]))
print(bool({}))

# 字符串中有空格 也被算作是 真
print(bool(" "))  # True

# 【六】元组类型
num_list = [1, 2, 3]
print(num_list[0])
num_list[0] = 999
print(num_list)

# ● 元组(tuple)是一种不可变的序列类型,类似于列表,用于存储多个有序元素。
# ● 元组与列表的主要区别在于元组的元素不能被修改、删除或添加,是不可变的数据类型。
# ● 元组通常用于存储相关联的数据,保持数据的完整性。

# num_tuple = (1,2,3)
# num_tuple[0] = 999 # 'tuple' object does not support item assignment

# 字符串 如果后面加了一个 ,

name = "dream",
name_tuple = ("dream")
name_tuple = (1)
print(name, type(name))  # ('dream',) <class 'tuple'>
print(name_tuple, type(name_tuple))  # dream <class 'str'>

# 总结
# 当元组中只有一个元素的时候要加 ,
# 如果是字符串或者整数类型的时候加上  , 就变成了元组类型

# 元祖按照位置解包
name_age = ("dream", 18)
name, age = ("dream", 18)
print(name, age)

# 【七】集合类型
#  集合(set)是一种无序且不重复的数据类型
#  用于存储多个无序且不重复的元素。
# 语法:以单个元素的形式在大括号中存储数据
num_set = {1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 11, 1}
print(num_set, type(num_set))  # {1, 2, 3} <class 'set'>

dream_set = {"d", "r", "e", "a", "m"}
print(dream_set)

# 当集合中的类型是数字类型的时候顺序一般不会被打乱
# 但是如果集合中的类型是字符串 就会被打乱

# 集合里面不能放 列表 或者 元祖 和 字典
set_list = {True}

# 集合运算:并交叉补

# 并集:将两个集合中的元素都放到一个集合中
# 交集: 两个集合共有的元素放到一个集合中
# 差集: 两个集合中独有的元素放到一个集合中
# 补集: 两个集合中独有的元素放到一个集合中

# 【1】向集合中添加元素
print("--------")
name_set = {"dream", "opp"}
name_set.add("oppp")
# 【2】集合中删除元素
# 按照指定的值删除指定元素
name_set.remove("opp")

# 【3】集合运算
set_a = {1, 2, 3, 4, 5, 6}
set_b = {4, 5, 6, 7, 8, 9}
# (1)并集
print(set_a.union(set_b))
# (2)交集
print(set_a.intersection(set_b))
# (3)差集
print(set_a.difference(set_b))

print(name_set)

【二】程序与用户交互

python 复制代码
# 【一】什么是程序要与用户交互
# 就是人向代码中输入内容
# 代码运行结果输出内容

# 【二】为什么要交互
# 登陆某个网站的时候需要输入用户名和密码
# 代码如何知道你的用户名和密码正确与否 ---> 经过逻辑认证
# 程序向我们反馈登陆的结果

# 【三】如何交互
# 【1】用户输入内容
# input : 在 输入框内提示需要用户输入的信息
# username = input("username :>>>> ")  # 1
# password = input("password :>>>> ")  # 2

# 通过 input 语句输入的内容获取到的结果是字符串类型
'''
print(username, type(username))  # 1 <class 'str'>
print(password, type(password))
result = username + password  # 1 + 2 = 3
print(result)  # 12
'''

# 既然得到的事字符串的 1  ---> 转换成 数字类型的 1
# 数字类型  int 类型
# 只能转换符合整数类型的字符串
'''
username = int(username)
password = int(password)
result = username + password  # 1 + 2 = 3
print(result)
'''
# 【2】输出
# 就是 print 语句
print("Hello World")
# 打印变量
name = "dream"
print(name)
# 有一个默认参数 end="\n" \n 表示换行
print("dre\nam")
print(1,end="*")
print(2)
print(3)

【三】基本运算符

python 复制代码
# 算数运算符
# 逻辑运算符
# 比较运算符
# 增量运算符
# ...

# 【一】算数运算符
# 进行算数运算的运算符
# + - * / % ** //
a = 10
b = 3

print(a + b)
print(a - b)
print(a * b)
print(a / b)
print(a % b)  # 取余数
print(a ** b)  # 幂次方
print(a // b)  # 取模

# 【二】比较运算符
# > >= < <= == !=
a = 10
b = 3
print(a > b)
print(a >= b)
print(a < b)
print(a <= b)
print(a == b)
print(a != b)

# 【三】赋值运算符
# = += -= *= /= %= //= **=
a = 10
b = 3

a += b
# a = a + b
print(a)  # 13

a -= b
# a = a - b
print(a)  # 10

a *= b
# a = a *  b
print(a)  # 30

a /= b  # 30 / 10
print(a)  # 10.0

a %= b
# a = a % b
# 10.0 % 3 = 1.0
print(a)

a //= b  #
# a = a // b
# 1.0 // 3
print(a)  # 0.0

# 【1】链式赋值
a = b = c = d = 99

# 【2】交叉赋值
a = 10
b = 3
print(a)
print(b)
a, b = b, a

print(a)
print(b)

# 【3】解压赋值
# 可以将列表 / 元组 / 集合 能够索引取值的类型中的每一个元素按照位置获取出来
num_list = [1, 2, 3]
a, b, c = num_list
# a,b,c = [1, 2, 3]
print(a)
print(b)
print(c)

# 列表中的元素个数不够前面的变量解压的时候就会报错
# a, b, c, d = num_list
# print(d)
# not enough values to unpack (expected 4, got 3)

# 如果列表中的元素多余位置变量的时候也会报错
# a, b = num_list
# print(a)
# print(b)  # too many values to unpack (expected 2)

# 可以用下划线来存储不需要的变量值
# a, b, _ = num_list
# print(a)
# print(b)

# 【四】逻辑运算符
# 与或非
# 与 : 两者都必须 and
# 或 : 两者任一 or
# 非 : 取反 not
a = 10
b = -10
print(a > 0 and b < 0)
print(a > 0 and b > 0)
print(a > 0 or b < 0)
print(a > 0 or b > 0)
# a < 0 False not False ==> True
print(not a < 0)

# 连续多个and
print(10 > 0 and 5 > 0 and 3 < 0)  # False
print(10 > 0 and 5 > 0 or 3 < 0)  # True
print(10 > 0 or 5 > 0 or 3 < 0)  # True

# 提高运算的优先级 对优先的部分加 ()

# 运算优先级 : not > and > or
print(3 > 4 and 4 > 3 or 1 == 3 and 'x' == 'x' or 3 > 3)
#       假  and  真    or  假   and       真     or    假
#             假         or         假     or  假

print(3 > 4 and (4 > 3 or 1 == 3) and ('x' == 'x' or 3 > 3))
#       假  and   真    or  假   and       真     or    假
#       假  and    真  and 真
# 假

# 【五】成员运算
# 判断某个成员在某个成员里面
# in / not in
num_list = [1, 2, 3]
print(1 in num_list)
print(6 in num_list)
print(6 not in num_list)

# 【六】身份运算
# 判断这这个值是否是另一个值
a = 1
b = "1"
print(a == b)  # 比较值 # False
print(a != b)  # True
print(a is b)  # False
print(a is not b)  # True

# 【== 和 is 的区别】
# == 比较的是值 两个值是否相等
# is 比较的是值 和 内存地址是否相等

name = "dream"
name_one = "dream"
print(id(name))
print(id(name_one))
print(name == name_one)  # True
print(name is name_one)  # True

【四】流程控制语句

【1】什么是流程控制语句

python 复制代码
# 就是程序在运行过程中控制流程的语句
# 程序到了 10:00 发邮件通知上班
# 17:30 发邮件通知下班

【2】流程控制的三种方式

python 复制代码
# 顺序结构 ----> 按照顺序执行代码
# 分支结构 ----> 有条件约束,达到了某个条件才会执行代码
# 循环结构 ----> 循环执行代码

【3】顺序结构

python 复制代码
# 程序按照顺序依次执行代码,一句接一句的执行
# 我们平常写的代码都是顺序结构
print("a")
print("b")
print("c")

【4】分支结构

python 复制代码
# 【1】分支结构式程序在运行过程中达到某一条件才会执行代码的结构

# 【2】单分支结构
#  程序在运行过程中,如果达到了某个条件,就会执行该条件下的代码
'''
score = 89
if score >= 90:
    print(f"优秀")
'''

# 【3】双分支结构
# 程序在运行过程中有两个条件 要么达到条件一 执行条件一的代码
# 要么达到条件二 执行条件二的代码
'''
if 条件1:
    ...
else:
    ...
'''

'''
score = 60
if score >= 90:
    print(f"优秀")
else:
    print(f"还需努力")
'''

# 【3】多分支结构
# 程序在运行过程中有多个条件进行约束和判断
# 当程序执行遇到某一个条件就执行当前条件下的代码
'''
if 条件一:
    条件1执行的代码
elif 条件二:
    条件2执行的代码
elif 条件三:
    条件3执行的代码
else:
    上面所有条件均不符合的代码
'''
'''
age = 20
if 28 >= age >= 18:
    if age == 20:
        print(f"请注意节制")
    print(f"当前已成年可以看爱情动作片")
elif 38 >= age >= 28:
    print(f"当前已成熟可以看 日本 爱情动作片")
elif 48 >= age >= 38:
    print(f"当前已成熟可以看 韩国 爱情动作片")
elif 58 >= age >= 48:
    print(f"当前已成熟可以看 大陆 爱情动作片")
else:
    print(f"身体不行就别看了!好好休息!")
'''
python 复制代码
# true_username = "dream"
# true_password = "521"


# 登录注册练习
# 让用户输入 用户名和密码
# 比对用户名和密码是否正确
# 正确打印登陆成功
# 失败就打印登陆失败 并且告诉用户是用户名失败了还是密码失败了

true_username = "dream"
true_password = 521

username = input("请输入用户名:")
password = input("请输入密码:")

# 理想状态下 用户只输入数字
password = int(password)

if username != true_username:
    print(f"当前输入的用户名错误")
elif password != true_password:
    print(f"当前输入的用户名错误")
elif username != true_username and password != true_password:
    print(f"当前输入的用户名和密码错误")
else:
    print(f"登陆成功")

【5】循环结构

python 复制代码
python 复制代码
# 循环结构:重复执行代码直至代码达到某个条件才会终止

# 循环结构 while

'''
while 终止条件:
    代码
# 让 while 里面的代码一直执行 执行到 符合 终止条件 的时候自动终止循环
#
'''

'''
count = 0

while count < 5:
    print(count)
    count += 1
'''

# 【1】关键字 range
# int 转换符合数字类型字符串
# (1)生成一个 指定区间的数字列表
print(range(1, 5))  # range(1, 5)
print(list(range(1, 5)))  # [1, 2, 3, 4]
print(tuple(range(1, 5)))  # (1, 2, 3, 4)
print(set(range(1, 5)))  # {1, 2, 3, 4}

# (2)重复执行代码 执行次数
'''
print("你好")
print("你好")
print("你好")
'''

# range(起始数字,结束数字)
# range 结束的数字是取不到 顾头不顾尾
for i in range(0, 3):
    print(i)
    print("你好")

# range 如果第一个位置的参数不写 默认就是 0
for i in range(3):
    print(i)
    print("你好")

# 【2】continue
# 搭配 while 循环使用
# 在while循环内部 如果当前条件满足的时候不需要执行跳过即可
count = 0

while count < 5:
    count += 1
    # 当count = 3的时候不打印3 其他的打印
    # continue : 让当前while循环跳出本次循环
    if count == 3:
        print(f"已跳出本次循环 {count}")
        continue
    else:
        print(count)
# 【3】break关键字
# 当程序循环执行达到某一条件的时候就想结束整个程序

count = 0

while count < 5:
    count += 1
    # 当count = 3的时候不打印3 其他的打印
    # continue : 让当前while循环跳出本次循环
    if count == 3:
        print(f"已跳出本次循环 {count}")
        continue
    elif count == 4:
        # 当count = 4的时候 结束整个程序
        print(f"已结束循环 {count}")
        break
    else:
        print(count)

# 【标志位】
count = 0
tag = True
while tag:
    count += 1
    # 当count = 3的时候不打印3 其他的打印
    # continue : 让当前while循环跳出本次循环
    if count == 3:
        print(f"已跳出本次循环 {count}")
        continue
    elif count == 4:
        # 当count = 4的时候 结束整个程序
        print(f"已结束循环 {count}")
        # break
        tag = False
    else:
        print(count)

# 【死循环】
# while 的循环条件一直为真的时候就会一直循环执行
# while 内部的代码
# 在写代码的时候应该避免出现死循环
while True:
    print(1)

【五】作业

python 复制代码
# 猜年龄
# 提前给定一个确认的年龄  18
# 让用户输入年龄 ---> 和真的年龄比较 如果大了就提示大了 如果小了 就提示小了
# 错误的时候让用户重复尝试 3 次
# 3次全部错误再结束程序


# 进阶
# 3次结束以后让用户选择是否再继续猜
# 继续猜再给他 3 次机会
相关推荐
hui函数6 小时前
Python全栈(基础篇)——Day06:后端内容(定义函数+调用函数+实战演示+每日一题)
后端·python
qq_546937276 小时前
Cryptomator:免费的加密工具,
python
IT学长编程7 小时前
计算机毕业设计 基于k-means的校园美食推荐系统 Python 大数据毕业设计 Hadoop毕业设计选题【附源码+文档报告+安装调试】
大数据·python·毕业设计·kmeans·课程设计·毕业论文·美食推荐系统
如竟没有火炬7 小时前
LRU缓存——双向链表+哈希表
数据结构·python·算法·leetcode·链表·缓存
咖啡续命又一天8 小时前
python 自动化采集 ChromeDriver 安装
开发语言·python·自动化
松果集9 小时前
【1】数据类型2
python
且慢.5899 小时前
命令行的学习使用技巧
python
海琴烟Sunshine9 小时前
leetcode 66.加一 python
python·算法·leetcode
罗橙7号9 小时前
【pyTorch】关于PyTorch的高级索引机制理解
人工智能·pytorch·python