python学习(4)-变量 数据类型和运算符
第二章:变量、数据类型、运算符
思考:怎么理解变量和内存?
变量:就等同于上面图中的age name hobby
内存:存储位置里所装的内容 18 张三 打球
变量一定是存在某个地址,可以从变量名找到对应的。
#声明3个变量 声明变量就是为了下一步去使用它 name="张三" # age="18" hobby="打球" print(age) print(name) print(hobby)
1、变量不是随便定义的,变量名也有统一规则
变量命名规则:
●变量名必须是大小写英文字母、数字或下划线_ 的组合,不能用数字开头,并且对大小写敏感
●关键字不能用于命名变量(31个),如and、as、assert、 break. class.continue、def. del等
import keyword print (keyword.kwlist)
[‘False‘, ‘None‘, ‘True‘, ‘and‘, ‘as‘, ‘assert‘, ‘async‘, ‘await‘, ‘break‘, ‘class‘, ‘continue‘, ‘def‘,
‘del‘, ‘elif‘, ‘else‘, ‘except‘, ‘finally‘, ‘for‘, ‘from‘, ‘global‘, ‘if‘, ‘import‘, ‘in‘, ‘is‘, ‘lambda‘,
‘nonlocal‘, ‘not‘, ‘or‘, ‘pass‘, ‘raise‘, ‘return‘, ‘try‘, ‘while‘, ‘with‘, ‘yield‘]
2、注释
python语言通过注释符号识别出注释的部分,将它们当作纯文本,并在执行代码时跳过这些纯文本
单行注释符号:#
多行注释符号:‘‘‘ ‘‘‘
3、数据类型
Python语言常用数据类型包括:整型、浮点型、字符串、布尔型、空值
a.数据类型-整型
整型(int)
整型的取值为整数,有正有负,如-2,-666,666等
0也为整型
#整数,注意后面的值不要加引号
x=5
y=5
a=x+y
print (a)
b.数据类型-浮点型
●浮点型的取值为小数,当计算有精度要求时被使用,由于小数点可以在相应的二进制
的不同位置浮动,故而称为浮点数
●如3.14, -6.66 等,但是如果是非常“:或者非常小的浮点数,就需要使用科学计数
法表示,用e代替10
f=5.20 l=5.30 b=f+l print(b) 10.5 c=3.14 d=2.8 print(c+d) 5.9399999999999995 a=3.14e9 print(a) 3140000000.0 #整型+浮点型=浮点型 ll=12 bb=3.14 cc=ll+bb print(cc) 15.14
a="明天是" b="2020年的第一天" print(a+b) 明天是2020年的第一天
a1=‘明天是‘ b1=‘2020年的第一天‘ print(a1+b1) 明天是2020年的第一天 字符串不能与整型进行拼接! 要在一串字符里面换行或者给个字符 字符串中的转义字符 字符串中的转义字符 转义字符:字符串里常常存在一些如换行、制表符等有特殊含义的字符,这些字符称之为转义字符 比如\n表示换行,\t表示制表符,python还允许用r""表示" "内部的字符串默认不转义 #期望:my name is ‘Jack‘ and "lili" print(‘my name is \‘jack\‘ and \"lili\" ‘) #不转义的情况下,会使前面的‘ 与‘组成一组 会导致不再解析后面的内容 a="祖国\n我爱你!" b="祖国\t我爱你!" c=r"祖国\t\n我爱你!" #r表示取消转义 print(a) 祖国 我爱你! print(b) 祖国 我爱你! print(c) 祖国\t\n我爱你!
d.数据类型-布尔型布尔型(bool)布尔型只有True和False两种值。比较运算和条件表达式都会产生True和False用print()打印1==1试试
布尔值可以进行and、or not运算,and和or运算分别用&和|表示 例1: print(1==1) #判断表达式是否相等 True 例2: h=True print(h) True 例3: a1=True a2=False print(a1&a2) #结果是False &运算符原理是:两者有其一为False结果就为False,都为True结果为True &符号用and也行 print(a1|a2) #结果是True |运算符原理是:两者有其一为True结果就为True,都为False结果为False a3=True a4=True print(a3&a4) #结果是True print(a3|a4) #结果是True a5=False a6=False print(a5&a6) #结果是False print(a5|a6) #结果是False
空值是Python里一个特殊的值,用None表示,一般用None填充表格中的缺失值 使用type()函数来获取某值的类型。 a=2 b=3.14 c=‘哈哈哈欧文‘ d=True e=None print(type(a)) print(type(b)) print(type(c)) print(type(d)) print(type(e)) 结果: <class ‘int‘> <class ‘float‘> <class ‘str‘> <class ‘bool‘> <class ‘NoneType‘>
4、数据类型转换
例1: 整型-->浮点型 float() -->字符串 str() -->布尔型 bool() a=3 b=float(a) c=str(a) d=bool(a) print(b) print(c) print(d) 结果: 3.0 3 True 例2: 浮点型-->整型 int() -->字符串 str() -->布尔型 bool() a=3.54 b=int(a) #不会做四舍五入 c=str(a) d=bool(a) print(b) print(c) print(d) 结果: 3 3.54 True 例3-(1): 字符串-->整型 int() -->浮点型 float() -->布尔型 bool() a=‘35‘ b=int(a) c=float(a) d=bool(a) print(b) print(c) print(d) 结果: 35 35.0 True 例3-(2): 字符串-->整型 int() 不支持字符串转成int -->浮点型 float() 不支持字符串转成float 总结:只有在形态相同的情况下才可以转换,不能凭空转换成int float -->布尔型 bool() a=‘hha哈哈哈‘ #b=int(a) #c=float(a) d=bool(a) #print(b) #print(c) print(d) 结果: True 例4-(1): 布尔型-->整型 int() -->浮点型 float() -->字符串 str() a=True b=int(a) c=float(a) d=str(a) print(b) print(c) print(d) 结果: 1 1.0 True 例4-(2): 布尔型-->整型 int() -->浮点型 float() -->字符串 str() a=False b=int(a) c=float(a) d=str(a) print(b) print(c) print(d) 结果: 0 0.0 False 例5: 空值-->整型 int() 不支持转换 -->浮点型 float() 不支持转换 -->字符串 str() a=None #b=int(a) #c=float(a) d=str(a) #print(b) #print(c) print(d) 结果: None 结合系统例子: yue=2000 cunkuan=‘1000‘ #用户输入的金额 print("存款后,余额为:",yue+int(cunkuan)) 存款后,余额为: 3000 例子例子--》》》 a="" b=‘‘ c=0 d=None e=30 f=30.12 j="hahaha" x1=bool(a) x2=bool(b) x3=bool(c) x4=bool(d) x5=bool(e) x6=bool(f) x7=bool(j) print(x1) print(x2) print(x3) print(x4) print(x5) print(x6) print(x7) 结果: False False False False 总结:只有空字符串,0,None空值转成布尔值会是False,其他都是True True True True
5、运算符(1)
4+5=9
4和5被称之为操作数,"+"称为运算符
Python语言支持以下类型的运算符:
a.算术运算符
a=20 b=6 print(a/b) print(a//b) print(2**3) 结果: 3.3333333333333335 3 8
b.赋值运算符
a+=3 #a=a+3
之前考过一个题目:
a=a+1
a+=1
待补充
c.比较运算符/关系运算符
a=10 b=20 print(a==b) print(a!=b) print(a>b) print(a<b) print(a>=b) print(a<=b) 结果: False True False True False True
比较运算符计算的结果都为布尔值
6、运算符(2)
d.逻辑运算符
and左右都是布尔类型
not前面只跟一个值
a= 1==1 #布尔值True b= 3!=3 #布尔值False c=True print(a and b ) print(a and c ) print(a or b) print(a or c) 结果: False True True True a= 1==1 #布尔值True b= 3!=3 #布尔值False c=True print(not a) print(not b) d=not 5+4==6-1 print(d) #运算符顺序 加减再算= 也可以通过括号来改变运算符的优先级顺序 结果: False True True
7、列表/数组list(1)
list数组
数组是一种有序的集合,可以随时添加和删除其中的元素
数组/列表使用方括号[],元组使用小括号()
#数组定义 []就是定义一个列表 list1=[1,2,3,4,"hello","世界"] print(list1) print(type(list1)) student=[‘jack‘,‘Bob‘,‘Harry‘,‘Mickle‘] print(student) print(type(student)) 结果: [1, 2, 3, 4, ‘hello‘, ‘世界‘] <class ‘list‘> [‘jack‘, ‘Bob‘, ‘Harry‘, ‘Mickle‘] <class ‘list‘>
思考: 列表 元组 字典 集合 如果想保存班级所有人名字? 定义36个变量,打印36个变量,如果是3600人没办法通过变量很好处理 []就是定义一个列表 举例:student=[‘jack‘,‘Bob‘,‘Harry‘,‘Mickle‘] <1>如何获取到已定义的列表list? 列表是有序的,列表的索引从0开始计数,如果一个列表有12个值,那么索引最大的是11,用索引来访问list中每一个位置的元素 列表名[对应的value所在的索引] print(student[0]) #访问第一个元素 print(student[1]) #访问第二个元素 print(student[-1]) #访问最后一个元素 print(student[4]) #报错信息:IndexError: list index out of range 注意:当索引超出范围时,Python会报一个IndexError错误,所以要确保索引不要越界。 <2>如何更改已定义的列表list的指定数据?比如学生改名 方法:重新单独定义 student=[‘jack‘,‘Bob‘,‘Harry‘,‘Mickle‘] student[0]=‘Yuan‘ print(student) 结果: [‘Yuan‘, ‘Bob‘, ‘Harry‘, ‘Mickle‘] 上述两种是列表比较常用的写法。
8、列表/数组list(2)
a.列表正向切片: student=[‘a‘,‘b‘,‘c‘,‘d‘,‘jack‘,‘Bob‘,‘Harry‘,‘Mickle‘] student[0]=‘Yuan‘ print(student) print(student[0:4]) #从索引=0开始到索引=4-1=3时结束 student[n:m]从索引=n开始到索引=m-1时结束 print(student[3:5]) #从索引=3开始到索引=5-1=4时结束 结果: [‘Yuan‘, ‘b‘, ‘c‘, ‘d‘, ‘jack‘, ‘Bob‘, ‘Harry‘, ‘Mickle‘] [‘Yuan‘, ‘b‘, ‘c‘, ‘d‘] [‘d‘, ‘jack‘] b.列表逆向切片: student=[‘a‘,‘b‘,‘c‘,‘d‘,‘jack4‘,‘Bob3‘,‘Harry2‘,‘Mickle1‘] print(student) print(student[-4:-1]) #从索引=-4开始到索引=-1-1=-2时结束 student[n:m]从索引=n开始到索引=m-1时结束 <3>如何删除已定义的列表list的指定数据?比如某学生退学 student=[‘a‘,‘b‘,‘c‘,‘d‘,‘jack4‘,‘Bob3‘,‘Harry2‘,‘Mickle1‘] #删除指定元素value student.remove(‘c‘) #期望:‘c‘被移除了 print(student) #默认删除末尾元素 student.pop() #期望:‘Mickle1‘被移除了 print(student) #在指定位置删除元素 del student[2] #期望:‘c‘被移除了 print(student) #在指定位置删除元素 student.pop(2) #期望:‘c‘被移除了 print(student) #删除整个数组 del student print(student) <4>如何新增数据到已定义的列表list?比如转入一名学生 student=[‘a‘,‘b‘,‘c‘,‘d‘,‘jack4‘,‘Bob3‘,‘Harry2‘,‘Mickle1‘] #默认在末尾处新增值 student.append("zhangsan") print(student) #在指定索引序号处新增值,用逗号分隔开 student.insert(3,"hahahahaha") print(student)
student=[‘a‘,‘b‘,‘c‘,‘d‘,‘jack4‘,‘Bob3‘,‘Harry2‘,‘Mickle1‘] print(len(student)) #打印数组的个数
9、元组和字典
10、集合