what's the 变量?
Python 中的变量赋值不需要类型声明。
变量在内存中创建,包括变量的标识,名称和数据。
变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
等号(=)用来给变量赋值。
变量的定义:name=Jack name即变量名,Jack即变量值。
python中允许同时为多个变量赋值,如
a=b=c=1#a=1,b=1,c=1 a,b,c=1,2,3#a=1,b=2,c=3
''' 变量的赋值方式有很多种 链式赋值:a=b=c=d=4 增量赋值:即将两个变量的值进行交换 ''' x=2 y=4 x,y=y,x
值的解压:
msg='hello' a,b,c,d,e=msg print(a,b,c,d,e) a,_,_,_,e=msg a,*_,e=msg print(a)#'h' print(e)#'o' dic={'a':1,'b':2,'c':3} x,y,z=dic print(x,y,z)#'a','b','c'
声明变量注意事项
- 变量名只能是 字母、数字或下划线的任意组合
- 变量名的第一个字符不能是数字
- 以下关键字不能声明为变量名['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
变量的比较:
is比较的是id,只要id相同就说明数据指向同一个内存地址,所有数据都相同。==比较的是值,值相同并不说明数据相同
程序交互:程序与用户之间的交互。如QQ界面的输入账户密码以登陆,就是一种程序交互。
执行输出
name = input("What is your name?") age = input("How old are you?") hometown = input("Where is your hometown?") print("Hello ",name , "your are ", age , "years old, you came from",hometown)
代码若很复杂,为了避免搞错或遗忘,可在相应代码后加注释,单行注释为代码后加#,再输入注释,多行注释就用三个引号引起来''' '''
基本数据类型
基本数据类型分为数字、字符串str、列表list、字典dict、元祖tuple、集合set、布尔值
数据类型分为可变数据类型和不可变数据类型。
- 可变数据类型:在id不变的情况下,值value可以发生改变,如列表、字典、元祖、集合
- 不可变数据类型:值value改变时id也会发生改变,如数字、字符串、布尔
python 的所有数据类型都是类,可以通过 type() 查看该变量的数据类型:
注:可变类型又可称为不可hash类型,不可变类型又可称为可hash类型。
数字:分为整型int和浮点型float
整型int(即整数形式):level=20;
浮点型float(即带有小数点的类型):weight=65.5 price=13.5等等
字符串str:
描述性的数据,必须包在引号里面(英文格式,无论单双三引都可以) name='jack' ,sex='male'
字符串可进行拼接,如
msg1='hello' msg2=' world' msg3=msg1+msg2 print(msg3)#'hello world'
列表list:
包含在[ ]内,内部的元素可以是字符串、数字、列表、元祖、集合、字典,各自以逗号隔开。
用途——存多个值,可以修改
list1=[3,2,1,'hello'] #增加元素 list1.append('world')#[3,2,1,'hello','world'] #删除元素 list1.remove(3)#[2,1,'hello','world'] del list[2]#[1,'hello','world'] #修改元素的值,中括号中的0是索引,代表第一个位置,python中的索引是由0开始的 list1[0]=8#[8,'hello','world']
字典dict(无序):
定义在{ }内,逗号分割,每一个元素的形式都是key:value。
用途——存多个值,这一点与列表相同,值可以是任意数据类型。
特征:每一个值都一个对一个的对应关系,即key,强调一点,key必须是不可变类型:字符串,数字。
dic={'name':jack,'age':17,'hobby':['girls','money','delicious food']} #增加 dic['sex']='male' #删除 del dic[‘age'] #修改 dic['age']=18
元祖tuple:
可以存放多个值。元祖是不可变类型,更多的是用来查询,元祖的写法与列表相似,只是将[ ] 改为( )。元祖也可以作为字典的key。
t=(1,[1,3],'sss',(1,2)) #t=tuple((1,[1,3],'sss',(1,2))) print(type(t))#<class 'tuple'>
虽然元祖为不可变类型,但是只要元祖内部的元素的id不发生变化,其内部元素发生变化是允许的,如列表为元祖的元素,列表内元素发生变化但id不变是可以允许的。
集合set:
定义在{ }内,可以包含多个元素,用逗号分隔。集合的元素必须是不可变类型,在集合中不会出现重复的元素(集合具有自动去重的功能),集合是无序的。
布尔值:
布尔值只有两种——True和False,布尔值的作用就是用来判断。
总结
变量赋值不需要声明类型,非常好用。
数字类分为整型和浮点型,是不可变数据类型,改变数字数据类型会分配一个新的对象。
列表用 "[ ]" 标识,内部元素用逗号隔开。
元组用 "( )" 标识,内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。
集合用 "{ }" 标识,内部元素用逗号隔开,集合中不会出现重复的元素,集合是无序的。
字典用 "{ }" 标识,字典由索引 key 和它对应的值 value 组成,字典是无序的。
列表可以直接赋值,元组不可以赋值,字典按照 dict[k]=v 的方式赋值。
索引的下标是从0开始算起。