python 基础学习一
> 记录学习 全部参考 https://github.com/datawhalechina/team-learning-program
注释
#:单行注释
''' ''' 或者 """ """ :多行注释
运算符
算数运算符
加(+)减(-)乘(*)除(/) 整除(//) 取余(%) 幂(**)
比较运算符
大于(>) 小于(<) 等于(==) 不等于(!=) 大于等于(>=) 小于等于(<=)
逻辑运算符
与(and) 或(or) 非(not)
位运算符
按位取反(~) 按位与(&) 按位或 (|) 按位异或(^) 左移(<<) 右移(>>)
三元运算符
res=cifa>belsed
# 若 a>b(true) res = c
# 若 a>b(false) res = d
三目运算符的嵌套
Python 三目运算符支持嵌套,如此可以构成更加复杂的表达式。在嵌套时需要注意 if 和 else 的配对
a,b,c,d=1,2,3,4
res=aifa>belsecifc>delsed# res = 4
res=aifa>belse(cifc>delsed)# res = 4
其他运算符
in 存在 'A' in ['A', 'B', 'C']
not in 不存在 'h' not in ['A', 'B', 'C']
is 是 "hello" is "hello"
is not 不是 "hello" is not "hello"
注:
is, is not 对比的是两个变量的内存地址
==, != 对比的是两个变量的值
比较的两个变量,指向的都是地址不可变的类型(str等),那么is,is not 和 ==,!= 是完全等价的。
对比的两个变量,指向的是地址可变的类型(list,dict,tuple等),则两者是有区别的。
# 两个变量均指向不可变类型
a="hello"
b="hello"
print(aisb,a==b)# True True
print(aisnotb,a!=b)# False False
# 比较的两个变量均指向可变类型
a= ["hello"]
b= ["hello"]
print(aisb,a==b)# False True
print(aisnotb,a!=b)# True False
运算符的优先级
一元运算符优于二元运算符。例如3 ** -2等价于3 ** (-2)。
先算术运算,后移位运算,最后位运算。例如 1 << 3 + 2 & 7等价于 1 << (3 + 2)) & 7。
逻辑运算最后结合。例如3 < 4 and 4 < 5等价于(3 < 4) and (4 < 5)。
数据类型与转换
整型
a=1031
print(a,type(a))
# 1031 <class 'int'>
浮点型
print(1.,type(1.))
# 1.0 <class 'float'>
a=0.00000023
b=2.3e-7
print(a)# 2.3e-07
print(b)# 2.3e-07
保留浮点型的小数点后 n 位
用 decimal 包里的 Decimal 对象和 getcontext() 方法来实现:
importdecimal
fromdecimalimportDecimal
a=decimal.getcontext()# Decimal 对象的默认精度值是 28 位 (`prec=28`)
print(a)
# Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999,
# capitals=1, clamp=0, flags=[],
# traps=[InvalidOperation, DivisionByZero, Overflow])
# 使 1/3 保留 4 位,用 getcontext().prec 来调整精度
b=Decimal(1)/Decimal(3)
print(b) # 0.3333333333333333333333333333
decimal.getcontext().prec=4
c=Decimal(1)/Decimal(3)
print(c)# 0.3333
布尔型
布尔 (boolean) 型变量只能取两个值,True 和 False。当把布尔型变量用在数字运算中,用 1 和 0 代表 True 和 False。
确定bool(X) 的值是 True 还是 False,就看 X 是不是空,空的话就是 False,不空的话就是 True。
对于数值变量,0, 0.0 都可认为是空的。
对于容器变量,里面没元素就是空的。
print(type(0),bool(0),bool(1)) # <class 'int'> False True
print(type(10.31),bool(0.00),bool(10.31))# <class 'float'> False True
print(type(True),bool(False),bool(True))# <class 'bool'> False True
# bool作用在容器类型变量:X 只要不是空的变量,bool(X) 就是 True,其余就是 False
print(type(''),bool(''),bool('python'))# <class 'str'> False True
print(type(()),bool(()),bool((10,)))# <class 'tuple'> False True
print(type([]),bool([]),bool([1,2]))# <class 'list'> False True
print(type(set()),bool(set()),bool({1,2}))# <class 'set'> False True
print(type({}),bool({}),bool({'a':1,'b':2}))# <class 'dict'> False True
获取类型信息
获取类型信息 type(object), type() 不会认为子类是一种父类类型,不考虑继承关系。
获取类型信息 isinstance(object, classinfo) ,isinstance() 会认为子类是一种父类类型,考虑继承关系.
如果要判断两个类型是否相同推荐使用 isinstance()。
print(type(1))# <class 'int'>
print(type(5.2))# <class 'float'>
print(type(True))# <class 'bool'>
print(type('5.2'))# <class 'str'>
print(isinstance(1,int))# True
print(isinstance(5.2,float))# True
print(isinstance(True,bool))# True
print(isinstance('5.2',str))# True
类型转换
转换为整型 int(x, base=10)
转换为字符串 str(object='')
转换为浮点型 float(x)
print(int('520'))# 520
print(int(520.52))# 520
print(float('520.52'))# 520.52
print(float(520))# 520.0
print(str(10+10))# 20
print(str(10.1+5.2))# 15.3
print() 函数
print(*objects,sep=' ',end='\n',file=sys.stdout,flush=False)
将对象以字符串表示的方式格式化输出到流文件对象file里。其中所有非关键字参数都按str()方式进行转换为字符串输出;
关键字参数sep是实现分隔符,比如多个参数输出时想要输出中间的分隔字符;
关键字参数end是输出结束时的字符,默认是换行符\n;
关键字参数file是定义流输出的文件,可以是标准的系统输出sys.stdout,也可以重定义为别的文件;
关键字参数flush是立即把内容输出到流文件,不作缓存。
citylist= ['Shanghai','Beijing','Chengdu','Wuhan']
print("This is printed without 'end'and 'sep'.")
foritemincitylist:
print(item)
'''
This is printed without 'end'and 'sep'.
Shanghai
Beijing
Chengdu
Wuhan
'''
citylist= ['Shanghai','Beijing','Chengdu','Wuhan']
print("This is printed with 'end='&''.")
foritemincitylist:
print(item,end='&')
'''
This is printed with 'end='&''.
Shanghai&Beijing&Chengdu&Wuhan&
'''
citylist= ['Shanghai','Beijing','Chengdu','Wuhan']
print("This is printed with 'sep='--''.")
foritemincitylist:
print("welcome",item,sep='--')
'''
This is printed with 'sep='--''.
welcome--Shanghai
welcome--Beijing
welcome--Chengdu
welcome--Wuhan
'''
练习题:
怎样对python中的代码进行注释?
# 单行注释
'''
多行注释
多行注释
'''
"""
多行注释
多行注释
"""
python有哪些运算符,这些运算符的优先级是怎样的?
python 中 is, is not 与 ==, != 的区别是什么?
is, is not 对比的是两个变量的内存地址
==, != 对比的是两个变量的值
当指向地址都是不可变类型时 is,is not 和 ==,!= 是完全等价的
python有哪些运算符,这些运算符的优先级是怎样的?这些数据类型之间如何转换?
6个标准数据类型
*Number(数字)
*True=1
*False=0
*数值的除法(/)总是返回一个浮点数,要获取整数使用//操作符
*在混合计算时,python会把整形转换为浮点数
*String(字符串)
*字符串用'或"括起来,同时使用\转义特殊字符串
*如果不想让反斜杠发生转义,可以在字符串前面加个r表示原始字符串
*索引值以0为开始,-1为末尾的开始位置
*加号+是字符串的连接符,星号*表示复制当前的字符串,紧跟的数字为复制的次数
*List(列表)
*list写在方括号之间,元素用逗号隔开
*和字符串一样,list可以被索引和切片
*list可以使用+操作符进行连接
*list中的元素可以改变的
*Tuple(元组)
*元组与列表类似,不同之处在于元组的元素不能修改,元组写在小括号里。元素之间用逗号隔开
*元组也可以被索引和切片,方法一样
*注意构造包含0或1个元素的元组的特殊语法规则
*元组也可以用+操作符进行拼接
*Sets(集合)
*set是一个无需不重复的序列,基本功能是进行成员关系的测试和删除重复元素
Dictionary(字典)
*字典是一种映射类型,字典用{}标识,它是一个无序的建(key):值(value)对集合
*建(key)必须使用不可变类型。在同一个字典中建(key)必须是唯一的
*创建空字典使用{}
*int(x,base=10)x字符串或数字,base进制数,默认十进制 浮点转为整数
*float 整数转换为浮点型
*complex(1,2) 转换为复数
*str(10)将对象转换为字符串
*repe()将对象转换为表达式字符串
*repr(dict)将对象转换为表达式字符串
*eval(str)用来计算在字符串中有效的python表达式,返回一个对象
*tuple(listi)将列表转化为元组
*list()将元组转换为列表
*set转换集合