内容概要
- 基本数据类型
- 与用户交互
- 格式化输出
- 基本运算符
- 常用赋值符
- 逻辑运算符
- 成员运算符
- 身份运算符
内容详细
一.基本数据类型
1.python基本数据类型
1.什么是数据类型
在日常生活中数据的表现形式多种多样 在程序中也是如此
2.为何学习数据类型
针对不同的数据采用最佳的数据类型来表示出该数据的价值
3.本次学习数据类型仅仅是了解
只要看到每个数据类型能够叫出它们的名字以及代码如何编写即可
4.学前必会
如何查看数据值的数据类型
type(数据值)\type(变量名)
2.数据类型之整型int
大白话的意思其实就是整数
应用场景:年龄 班级人数 年份
代码实现:
age = 18
stu_num = 56
year = 2022
3.数据类型之浮点型float
大白话的意思其实就是小数
应用场景:身高 体重 薪资
代码实现:
height = 1.83
weight = 75.5
salary = 3.1
4.数据类型之字符串str
大白话的意思其实就是文本类型的数据>>>:引号引起来的部分都是字符串
应用场景:姓名 地址 爱好
代码实现:
name = '姓名'
addr = '地址'
hobby = '爱好'
1.定义字符串有四种方式
name = '姓名'
name1 = "姓名"
name2 = '''姓名'''
name3 = """姓名"""
2.为什么定义字符串需要有多种方式
我们在字符串中编写文本也可能会使用到引号 为了避免冲突 有了多种方式
info = "Jason老师说:'年轻不是用来挥霍的资本'"
3.如何区分三引号是字符串还是注释
关注左侧是否含有赋值符号和变量名 如果有则为字符串 没有则为注释
5.数据类型之列表list
大白话的意思其实就是可以存储多个数据值的类型 并且可以非常方便的取
应用场景:存储多个数据值 并且将来可能需要单独取其中一些
代码实现:
name_list = ['jason', 'tony', 'kevin', 'oscar', 'jerry']
1.列表的文字描述
中括号括起来 内部可以存放多个数据值 数据值与数据值之间逗号隔开 数据值可以是任意数据类型
l1 = [11, 11.11, 'jason',[11, 22]]
2.索引取值
起始数字是从0开始
l1[索引值]
"""
PEP8规范补充
1.逗号后面与数据值空一格
2.赋值符号左右都得空一格
"""
6.数据类型之字典dict
能够非常精确的存储和表达数据值的含义
代码实现:
info_dict = {
'username': 'jason',
'age': 18,
'hobby': 'read',
}
1.字典文字描述
大括号括起来 内部可以存放多个数据 数据的组织形式是K:V键值对
键值对与键值对之间逗号隔开
K是对V的描述性性质的信息(解释说明) 一般都是字符串类型
V是真正的数据值 可以是任意数据类型
2.按K取值
字典只能按K取值 因为字典是无序的 没有索引的概念
info_dict['username']
7.基本数据类型之布尔值bool
1.用来判断事物的对错,是否可行 主要用于流程控制中
2.只有两种状态
True 对的 真的 可行的
False 错的 假的 不可行的
3.python中所有的数据都自带布尔值
布尔值为False的数据有:0 None '' [] {}
布尔值为Ture的数据有:除了以上为False的数据都是Ture
4.存储布尔值的变量名一般推荐使用is开头
is_delete = False
is_alive = True
# 将布尔值True赋值给变量a
a = True
# 将布尔值False赋值给变量b
b = False
print("输出布尔值:")
print(a)
print(b)
print("用type函数查看变量a,b的数据类型:")
print(type(a))
print(type(b))
8.基本数据类型之元组tuple
1.也称为'不可变'的列表
元组内索引绑定的内存地址不能修改
2.小括号括起来 内部存放多个数据 数据值与数据值之间用逗号隔开
数据值可以是任何数据类型
3.代码实现
t1 = (111, 222, 'jason')
4.元组与列表的对比
l1 = [11, 22, 33]
print(l1[0]) # 获取索引0对应的数据值
l1[0] = 666
print(l1) # [666, 22, 33]
t1 = (11, 22, 33)
print(t1[0])
t1[0] = 999
print(t1)
t1 = (11, 22, [111, 222])
t1[2][1] = 666
print(t1) # (11, 22, [111, 666])
5.元组内如果只有一个数据值
t1 = (1)
t2 = (11.11)
t3 = ('jason')
print(type(t1), type(t2), type(t3)) # <class 'int'> <class 'float'> <class 'str'>
t1 = (1,)
t2 = (11.11,)
t3 = ('jason',)
print(type(t1), type(t2), type(t3)) # <class 'tuple'> <class 'tuple'> <class 'tuple'>
"""
建议:以后在使用可以存放多个数据值的数据类型时 如果里面暂时只有一个数据值 那么也建议你加上逗号
"""
|
元组tuple |
列表list |
表现方式 |
小括号括起来,内部存放多个数据,数据值与数据值之间用逗号隔开,数据值可以是任何数据类型 |
用中括号括起来,内部存放多个数据,数据值与数据值之间用逗号隔开,数据值可以是任何数据类型 |
区别 |
元组是静态数组,它们不可变,且其内部数据一旦创建便无法改变。 |
列表是动态数组,它们可变且可以重设长度(改变其内部元素的个数)。 |
9.基本数据类型之集合set
1.集合只能用于去重和关系运算
2.集合内的数据只能说不可变类型
3.大括号括起来 内部存放多个数据值 数据值与数据值之间用逗号隔开 数据值不是k:v键值对
4.代码实现
s1 = {1, 2, 3, 4, 5, 6}
5.定义空集合与空字典
{} 默认是空字典
set() 定义空集合
|
集合set |
字典dict |
表现 |
大括号括起来,内部存放多个数据值,数据值与数据值之间用逗号隔开 |
大括号括起来,内部可以存放多个数据,数据的组织形式是K:V键值对键值对与键值对之间要用逗号隔开 |
区别 |
没有键和值的配对,是一系列无序的、唯一的元素组合。 |
字典是一系列由键(key)和值(value)配对组成的元素的集合 |
二.与用户交互
1.什么是用户交互?
用户向计算机输入数据,计算机反馈给用户输出结果就是交互
2.为什么要交互?
让计算机能和人一样与用户相互沟通交流
3.如何与用户交互?
1.获取用户输入
input
username = input('请输入您的用户名>>>:')
1.先执行input获取用户输入
2.将输入的数据绑定给变量名username
3.以后在程序中就可以使用变量名反复调用用户数据
强调:input获取到的数据都会统一处理成字符串类型
2.输出内部信息
print
1.括号内既可以放数据值也可以放变量名 并且支持多个 逗号隔开即可
2.print自带换行符
换行符:\r\n \n(斜杠与字母组合到一起可能会产生特殊的含义)
3.print也可以切换结束符
print(数据,end='默认是\n')
"""
python2与python3中两个关键字的区别
python2中
input方法需要用户自己提前指定数据类型 写什么类型就是什么类型
raw_input方法与python3中input一致 输入的统一处理成字符串
python2中
print方法有两种使用方式
print 数据值
print(数据值)
"""
三.格式化输出
1.什么是格式化输出
提前定义好一些内容 将来需要使用的时候可以局部修改
2.如何格式化输出
通过占位符%s %d 把参数格式化成指定的数据
eg:
a = '您好%s!您本月的话费为%s,余额为%s'
print(a % ('Tony', 59, 41))
# 您好Tony!您本月的话费为59,余额为41
"""
注意事项:有几个占位符就需要几个数据值
"""
补充:%s可以表示任意数据占位,%d只能表示数字占位
print('%08d' % 123) # 000000123
# 08代表满足8位不够0补
print('%08d' % 123456789) # 123456789
# 就算数字占位超出规定,也正常输出数字
四.基本运算符
1.数学运算符
运算符 |
描述 |
实例 |
= |
简单的赋值运算符 |
c=a + b 将 a + b的运算结果赋值为c |
+= |
加法的赋值运算符 |
c += a等效于c = c + a |
-= |
减法的赋值运算符 |
c -= a等效于c = c - a |
*= |
乘法的赋值运算符 |
c *= a等效于c = c * a |
/= |
除法的赋值运算符 |
c /= a等效于c = c / a |
%= |
取模赋值运算符 |
c %= a等效于c = c % a |
**= |
幂赋值运算符 |
c **= a等效于c = c ** a |
//= |
取整除的赋值运算符 |
c //= a等效于c = c // a |
|
|
|
2.比较运算符
运算符 |
功能 |
|
< |
小于。返回第一个对象是否小于第二个对象 |
1 < 2 返回True |
> |
大于。返回第一个对象是否大于第二个对象 |
1 > 2 返回False |
<= |
小于等于。返回第一个对象是否小于等于第二个对象 |
1 <= 2 返回True |
>= |
大于等于。返回第一个对象是否大于等于第二个对象 |
1 >= 2 返回False |
== |
等于。比较对象是否相等 |
1 ==2 返回False |
!= |
不等于。比较两个对象是否不相等 |
1 != 2 返回True |
<> |
不等于。比较两个对象是否不相等。Python3已废弃。这个运算符类似 != |
1 <> 2 返回True |
3.常用赋值符
1.链式赋值
# name = 'jason'
# name1 = name
# name2 = name
# 链式赋值
name = name1 = name2 = 'jason'
2.交叉赋值
m = 100
n = 999
'''让m和n互相转换绑定的值'''
"""奇葩式写法"""
# m = n
# n = m
# print(m, n) # 999 999
'''方式1:采用中间变量'''
# temp = m
# m = n
# n = temp
# print(m, n) # 999 100
'''方式2:交叉赋值语法'''
m, n = n, m
print(m, n) # 999 100
3.解压赋值
name_list = ['jason', 'kevin', 'tony', 'oscar']
'''low的写法'''
# name1 = name_list[0]
# name2 = name_list[1]
# name3 = name_list[2]
# name4 = name_list[3]
'''解压赋值语法'''
# name1, name2, name3, name4 = name_list
'''解压赋值在使用的时候 正常情况下需要保证左边的变量名与右边的数据值个数一致'''
# a, b = name_list # 变量名少了不行
# a, b, c, d, e = name_list # 变量名多了也不行
'''当需要解压的数据个数特别多 并且我们只需要使用其中的几个 那么可以打破上述的规则'''
# a, *b = name_list # *会自动接收多余的数据 组织成列表赋值给后面的变量名
# print(a) # jason
# print(b) # ['kevin', 'tony', 'oscar']
# a, c, *b = name_list
# print(a)
# print(c)
# print(b) # ['tony', 'oscar']
# a, *b, c = name_list
# print(a) # jason
# print(b) # ['kevin', 'tony']
# print(c) # oscar
'''当数据值不准备使用的时候 可以使用下划线作为变量名绑定'''
a, *_, c = name_list
4.逻辑预算符
'''主要配合条件一起使用'''
and(与)
and连接多个条件必须要全部成立 结果才成立
1 > 2 and 4 < 8 and 10 < 1 and 1 == 2 如果条件中全部有and组成那么判断起来非常简单 只要发现一个不成立 结果就不成立
print(1 < 10 and 666) # 666 成立
print(1 < 10 and 2 < 8) # True 成立
print(111 and 222) # 222 成立
print(1 > 10 and 111) # False 不成立
如果需要你准确的说出具体的结果值 那么需要按照下列方式
如果and左边的条件是成立的 那么就完全取决于右边的条件
右边如果直接是数据值 那么结果就是该数据值 如果是含有表达式 则为布尔值
or(或)
or连接的多个条件只要有一个成立,结果就成立
> 2 or 4 < 8 or 10 < 1 or 1 == 2 如果条件中全部由or组成那么判断起来非常的简单 只要发现一个成立 结果就成立
# print(1 < 10 or 666) # True
# print(666 or 1 > 10) # 666
print(0 or False) # False
print(0 or 111) # 111
规律用and
not(非)
取反
类似于说反话
"""
三者混合使用的时候有优先级之分 但是我们不需要记忆优先级 应该通过代码的形式提前规定好优先级
eg: 先乘除后加减 但是可以使用括号来改变优先级
(3>4 and 4>3) or ((1==3 and 'x' == 'x') or 3 >3)
"""
5.成员运算符
判断个体数据是否存在某个群体里(in 或者 not in)
# name_list = ['jason', 'kevin', 'oscar', 'jerry']
# print('tony' in name_list) # False
# print('tony' not in name_list) # True
# print('j' in name_list) # False 列表最小单位是数据值 不能再细分
# s1 = 'hello world'
# print('d' in s1) # 字符串最小单位是单个单个的字符
d1 = {
'username': 'jason',
'pwd': 123
}
print('jason' in d1) # False 字典成员运算只有键参与
print('username' in d1) # True 'username' 'pwd'
6.身份运算符
"""
id() 返回一串数字 该数字可以看成是内存地址
"""
is 判断内存地址是否相同
== 判断数据值是否相同
# l1 = [11, 22, 33, 44, 55, 66, 77, 88]
# l2 = [11, 22, 33, 44, 55, 66, 77, 88]
# print(l1 == l2) # True
# print(id(l1))
# print(id(l2))
# print(l1 is l2) # False
# 小整数池
i1 = 11
i2 = 11
print(i1 is i2)
s1 = 'jason jason jason'
s2 = 'jason jason jason'
print(s1 is s2)
不同的环境下可能优化的程度不一样
"""
了解
值相同 内存地址可能不同
内存地址相同 值肯定相同
"""
五.作业
1.获取用户输入并打印成下列格式
------------ info of Jason -----------
Name : Jason
Age : 18
Sex : male
Job : Teacher
---------------- end -----------------
解答:
Name = input('请输入你的姓名>>>:')
Age = input('请输入你的年龄>>>:')
Sex = input('请输入你的性别>>>:')
Job = input('请输入你的职业>>>:')
a1 = ( '------------ info of %s -----------\n'
'Name:%s\n'
'Age:%s\n'
'Sex:%s\n'
'Job:%s\n'
'---------------- end -----------------')
print(a1 % (Name, Name, Age, Sex, Job))
2.准备说出下列变量名v绑定的结果
v1 = 1 or 3
答:1
v2 = 1 and 3
答:3
v3 = 0 and 2 and 1
答:0
v4 = 0 and 2 or 1
答:1
v5 = 0 and 2 or 1 or 4
答:1
v6 = 0 or False and 1
答:False