花式赋值
链式赋值
a = b = c = 10
print(a, b, c)
交叉赋值
x = 10
y = 20
z = y
y = x
x = z
print(x,y)
列表(list)
列(序列)表(表格),一列(存储多个元素)表格描述一个人的
爱好:read/run/music
存不是目的,取才是目的
hobby = 'read run music'
-
作用:存储多个(任意数据类型)元素
-
定义方式,[]内用逗号隔开多个元素(任意数据类型)
yuyang_hobby_list = ['bibi', 'zantong', 'jiao', 'niuyangge', [160, 150], 160]
-
使用方法
索(搜索)引(引路)
yuyang_hobby_list = ['bibi', 'zantong', 'jiao', 'niuyangge', [160, 150], 160] # 0 1 2 3 4 5 # -4 -3 -2 -1 print(yuyang_hobby_list[1]) print(yuyang_hobby_list[5]) print(yuyang_hobby_list[-1]) print(yuyang_hobby_list[-2]) print(yuyang_hobby_list[-2][-1])
字典(dict)
字典是另一种可变容器模型,且可存储任意类型对象。
值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
user_info = ['nick', 'male', '19', ['oldboy', 'shanghai', 50]]
print(user_info[1]) # 'male'
print(user_info[0]) # 'nick'
print(user_info[3][1]) # 'shanghai'
-
作用:存储多个值,但是每个值都由描述信息,按照key:value的方式存值,取的时候可以通过key而非索引去取值,key对value具有描述性的作用。存放数据的种类各种各样并且数据较多的时候可以使用字典。
-
定义方式
在{}内用逗号分隔开多个元素,每一个元素都是key: value的格式,其中value是任意格式的数据类型,key由于具有描述性的作用,所以key通常是字符串类型。
user_info = {'name': 'nick', 'gender': 'male', 'age': 19, 'company_info': ['oldboy', 'shanghai', 50]} print(id(user_info)) print(type(user_info)) print(user_info)
-
使用方法
字典没有索引,而是依赖于key,通过[key]即可获取key对应的value值。
# 字典套列表 user_info = {'name': 'nick', 'gender': 'male', 'age': 19, 'company_info': ['oldboy', 'shanghai', 50]} print(user_info['name']) print(user_info['company_info'][0])
布尔类型(bool)
-
作用
用于判断条件结果
-
定义方式
True、False通常情况不会直接引用,需要使用逻辑运算得到结果。
-
使用方法
print(type(True))
print(True)
<class 'bool'>
True
所有数据类型都自带布尔值
除了 0/None/空(空字符/空列表/空字典)/False 之外
所有数据类型自带布尔值为True。
print(bool(1))
print(bool(0))
print(bool(''))
print(bool([]))
print(bool({}))
print(bool(None))
解压缩
解压缩可以这样理解:超市打包是把多个商品放在一起,解压缩其实就是解包把多个商品一次性拿出来。解(解开)压缩(容器类数据类型):只针对2-3个元素容器类型的解压
lt = [1, 2, 3, 4, 5]
print(lt[1],lt[2],lt[3])
s1,s2,s3,s4,s5 = lt
print(s1,s2,s3,s4,s5)
单个下划线表示这个东西不需要(约定俗成)
s1,_,_,_,_ = lt
print(s1)
print(_) # 可以打印,但是不要去打印
s1,*_,s5 = lt
print(s1)
print(_)
# *_: *把后面的元素全部合成放到列表里去了
python与用户交互
-
为什么要交互
让我们来回顾计算机的发明有何意义,计算机的发明是为了奴役计算机,解放劳动力。假设我们现在写了一个ATM系统取代了柜员,如果我们要在这台ATM上取款,那么这个ATM是不是会要求我们输入姓名、密码?是不是需要我们输入我们需要取款金额?这是不是就可以理解为一种交互。现在让我们了解下Python是怎么实现交互的。
-
如何交互
无论我们输入的值是数字类型、字符串类型、列表类型,input的接收值都是字符串类型。
1. 可以让程序暂停 2. 接收的永远是字符串
print('*' * 50) s = input('kkk') 让程序暂停# s = input('请输入你的身高:')
-
python2的交互
python2当中的raw_input()和python3中的input()是一模一样的。
name = raw_input('请输入你的姓名:') pwd = raw_input('请输入你的密码:') print(type(name)) # 'str' print(type(pwd)) # 'str'
Python3的交互相比较于Python2应该是更合理的,虽然Python3的交互在程序中使用是麻烦了,因为如果输入年龄还需要强制转换,但是如果用python2的input,用户需要知道自己输入的数据是什么数据类型的,对用户不友好,如此写出的程序可能明天就没人使用了。
python2和python3中input的区别 python2和python3多版本共存 python.exe复制粘贴一份,然后重命名为python2.exe/python3.exe 更换python解释器 file --> settings --> project --> project interpreter
格式化输出的三种方式
-
占位符
%s(针对所有数据类型)%d(仅仅针对数字类型)
name = 'nick' age = 19 print('my name is %s my age is %s' % (name, age))
age = 19 print('my age is %d' % age)
-
fomat格式化
print('{} {}'.format(s1,s2)) # s1-->0 s2-->1 print('{1} {1}'.format(s1,s2))
-
f-strinq格式化
相比较占位符的方式,python3.6版本新增了f-String格式化的方式,比较简单易懂,这是目前我用的最多的方式,推荐使用这种方式
大写的F也适用
name = "nick" age = 19 print(f"Hello, {name}. You are {age}.")
Hello, nick. You are 19.
name = "nick" age = 19 print(F"Hello, {name}. You are {age}.")
Hello, nick. You are 19.
上节课回顾
变量
什么是变量
变量的组成
变量名的命名规范
常量
python变量内存管理
引用计数(变量值)
垃圾回收机制
小整数池
变量的三种打印方式
数字类型
整数int
浮点型 float
字符串 str