python学习笔记
今日内容概要
- 基本数据类型
- 与用户交互
- 格式化输出
- 诸多运算符
- 流程控制简介
今日内容详细
数据类型之列表(list)
1.本质
能够存储多个数据,并且能够方便的获取整体或者局部
2.基本使用
l1 = [1,2,3,4,5]
3.语言描述
用方括号([ ])来表示列表,并用逗号( , )来分割其中的元素,你可以将任何东西加入列表,其中元素之间可以没有任何关系
4.索引取值
name_list = ['陈志燕', '沈月', '李五' ]
'''索引取值:在IT领域数字的起始位置通常是从0开始,现实生活中是从1开始'''
print(name_list)
print(name_list[1]) # 沈月
print(name_list[0]) # 陈志燕
print(name_list[100]) # 索引超出范围直接报错
l1 = [11, 22, [111, 222, 333, [123, 321, 666], 444]]
'''遇到复杂构造的数据,先明确整体有几个数据值,然后再一步步拆分'''
1.先获取666所在的小列表
print(l1[2]) # [111, 222, 333, [123, 321, 666], 444]
l2 = l1[2] # 将索引取值获取到的数据绑定给l2
print(l2) # 之后就可以通过l2获取列表
2.再获取666所在的小小列表
print(l2[3]) # [123, 321, 666]
l3 = l2[3] # 将索引取值获取到的数据绑定给l3
3.变成了最简单的索引取值情况
print(l3[2])
'''熟练之后,上述可以简写成一步完成'''
print(l1[2][3][2])
数据类型之字典(dict)
1.本质
能够储存多个数据,并且能够方便的获取整体或者局部,并且对于数据具有解释
2.基本使用
info_dict = {'姓名': 'jason', '年龄': '18', '爱好':'read'}
3.语言描述
大括号括起来,内部可以存放多个数据,数据的组织形式是k:v键值对
k是对v的描述性性质的信息,一般是字符串
v是真实的数据值,可以是任意数据类型
4.按K取值
info_dict = {'姓名': 'jason', '年龄': '18', '爱好': 'read'}
'''字典取值:字典无法使用索引取值(因为字典是无序的) 可以使用按K取值'''
print(info_dict['姓名']) # jason
print(info_dict['年龄']) # 18
print(info_dict['爱好']) # 爱好
print(info_dict['家产']) # K不存在直接报错
5.取值练习题
'''单纯为了练习取值操作而已'''
data = {
'name': 'jason',
'others': [111, 222, {
'a1': '嘿嘿',
'a2': '哈哈',
'a3': [123, {'name': 'jason1', 'age': 18}]}]}
1.先获取大列表
l1 = data['others']
# print(l1) # [111, 222, {'a1': '嘿嘿', 'a2': '哈哈', 'a3': [123, {'name': 'jason1', 'age': 18}]}]
2.获取大列表中的字典
d1 = l1[2]
# print(d1) # {'a1': '嘿嘿', 'a2': '哈哈', 'a3': [123, {'name': 'jason1', 'age': 18}]}
3.获取字典的值
l2 = d1['a3']
# print(l2) # [123, {'name': 'jason1', 'age': 18}]
4.获取列表的数据
l3 = l2[1]
# print(l3) # {'name': 'jason1', 'age': 18}
5.按k取值
# print(l3['age'])
"""上述可以简写成一步"""
print(data['others'][2]['a3'][1]['age'])
基本数据类型之布尔值(bool)
1.本质
用来表示事物是否可行,是否正确,是否合理,
总共就两个值
2.基本使用
is_right = True # 真 可以 正确
is_delete = False # 假 不可以 错误
3.详细介绍
布尔值看似很简单,很少见,其实在程序中是最多的,也是使用频率最高的
存储布尔值的名字一般使用is开头 # 君子协定
4.布尔值类型转换
程序中所有的数据类型都可以转成布尔值
布尔值为False的数据有
eg:0 None 空字符串 空列表 空字典 ...
除上述之外所有的数据对于的布尔值都是True
5.所有的编程语言都有布尔值 只不过关键字和值可能有变化(了解)
typeof true
'boolean' # js中就不一样
基本数据类型之元组(tuple)
1.本质
能够储存多个数据,并且能够方便的获取整体或者局部,与列表的区别在于元组内数据值不能"直接修改"而列表可以,所以元组有一个小外号:不可变的列表。
2.作用
一般用于储存一些只能看不能改的数据
3.基本使用
t1 = (111, 222, 333)
4.语言描述
小括号括起来,内存可以存放多个数据值,数据值与数据值之间逗号隔开,数据值可以是任意数据类型
5.与列表对比
l1 = [11, 22, 33]
t1 = (11, 22, 33)
print(l1[0])
print(t1[0])
l1[0] = 'jason' # 将列表索引0重新绑定数据值jason
print(l1) # ['jason', 22, 33]
t1[0] = 'tony' # 将元素索引0重新绑定数据值tony直接报错!!!
print(t1)
基本数据类型之集合(set)
1.本质
集合只用于 去重 和 关系运算
去重:制动去除重复的数据
关系运算:判断两个集合之间数据的关系(共同好友 共同点赞)
2.基本使用
s1 = {1, 2, 3, 4, 5}
3.定义空集合
d1 = {}
s1 = {}
print(type(d1)) # dict
print(type(s1)) # dict
ss = set() # 必须使用关键字才能定义空集合
print(type(ss))
与用户交互
1.输入
向计算机传递信息
input() # 获取用户输入
name = input('请输入您的用户名>>>:')
"""1.先获取用户输入的数据
2.在赋值给左边的名字name
3.之后就可以通过名字name反复地使用用户输入的数据
"""
print(name)
input获取到的用户输入都会转成字符串类型
2.输出
计算机向外界输出信息
print() # 打印数据值
print(123) # 括号内可以直接放数据值
name = 'jasen'
print(name) # 括号内也可以放名字
print(123,321,323) # 括号内也可以一次性打印多个值
print(name1,name2,name3,name4)
print(123,name,3333,name1)
换行符:\n \r \r\n
最早起的换行是 \r\n
后面简化成了 \n \r(不同的操作系统可能会有变化)
不同版本的解释器
python3.x print()
python2.x print
格式化输出
1.本质
如何格式化输出字符串呢,例如你好XX,你的额度是xx,其中xx的变量,我们无法预知,这个时候就需要格式化输出,和C语言一样,我们可以使用占位符%?,其中?代表不同的字符,例如%s代表字符串,%d代表十进制整数
2.基本使用
1.%s代表字符串
%s: 支持所有数据类型替换 (以后我们使用最多的就是%s)
info1 = "亲爱的%s你好!你%s月的话费是%s,余额是%s"
print(info1 % ('jason', 5, 100, 999999999999))
print("亲爱的%s你好!你%s月的话费是%s,余额是%s" % ('tony', 5, 999, -100))
2.%d代表十进制整数,只支持给数字占位
info2 = "亲爱的%d你好!你%d月的话费是%d,余额是%d"
print(info2 % (123, 5, 100, 999999999999))
print("亲爱的%d你好!你%d月的话费是%d,余额是%d" % (123, 5, 999, -100))
产生固定位数的数据(总共8位 不够则使用0填充)
print('%08d' % 123) # 00000123
基本运算符
1.算数运算符
加 +
减 -
乘 *
除 /
整除 //
取模 %
幂指数 **(次方)
# 变种情况
x = 10
x = x + 100 # x += 100
x = x - 10 # x -= 10
x = x * 10 # x *= 10
x = x / 10 # x /= 10
2.比较运算符
== 等于
!= 不等于
多种赋值符号
1.链式赋值
链式赋值是用一行语句将多个变量赋值为同一个值
# x = 10
# y = x
# z = y
x = y = z = 10
这种执行效果表示所有变量都指向同一个对象
2.交叉赋值
将两个变量互换赋值
m = 999
n = 100
让m绑定n绑定的数据值 让n帮忙m绑定的数据值
'''方式1:利用中间变量'''
tmp = m
m = n
n = tmp
print(m, n)
'''方式2:交叉赋值'''
m, n = n, m
print(m, n)
3.解压赋值
可迭代序列或者可迭代对象解压后赋值给多个变量
"""变量的数量必须和序列元素的数量一样多"""
name_list = ['jason', 'tony', 'kevin']
# 用三个不同的名字存储三个不同的人名
# name1 = name_list[0]
# name2 = name_list[1]
# name3 = name_list[2]
# name1, name2, name3 = name_list
变量个数多于序列元素个数报错 # a, b, c, d, e = name_list
变量个数少于元素个数报错 # a, b = name_list
"""特殊情况 带解压的数据非常的多"""
l1 = [11, 22, 33, 44, 55, 66, 77, 88, 99]
# a, b, *c, d = l1 # *在解压赋值的时候会自动将多余的数据值组织成列表赋值给*号后面的变量名
# print(a) # 11
# print(b) # 22
# print(c) # [33, 44, 55, 66, 77, 88]
# print(d) # 99
*c, a, b = l1
print(a)
print(b)
print(c)
今日作业
- 获取用户信息并打印出下列格式
l1 = ['Name:xxx', 'Age:xxx', 'gender:xxx', 'Job:xxx']
print('------------ info of XXX -----------')
print(l1[0])
print(l1[1])
print(l1[2])
print(l1[3])
print('------------- end -----------------')
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了