python基础(补充)
1. 赋值方式 (之前介绍过增量赋值)
a. 链式赋值
y=1
y=x
y=x=a=b=c=1 (id相同)
b. 交叉赋值 (m,n值交换)
m=1
n=2
x=m
m=n
n=x
m=1
n=2
m, n=n, m
c. 变量的解压
salaries = [11,12,13,14,15]
mon1_sal=salaries [0]
……
mon5_sal=salaries [4]
mon1_sal, mon2_sal, mon3_sal, mon4_sal, mon5_sal = salaries
注:左右数量必须一一对应,否则报错
mon1_sal, xxx, xx, xx, mon5_sal = salaries
mon1_sal, _, _, _, mon5_sal = salaries (约定‘_’代表抛弃的变量名)
*_, mon5_sal = salaries(‘*’代表所有)
2. input () for python2, python3
a. python3, 只有 input(); input()将用户输入的内容全部存为字符串类型
b. python2
raw_input() 等同于 python3 的input();将用户输入的内容全部存为字符串类型,不考虑输入类型。是python 2 的主要输入交互方式。
input() , 必须输入明确的数据类型,且输什么存什么。
3. while (条件循环) 条件:
循环体
else:
#若循环完毕后 while 没有被break打断,else所接的代码才被执行(最后被执行); 用处不大
4. 身份运算是is;==不是身份运算
5. and or not 从左向右直行
False or True and False or True
False or True and False or True # 取第一个运算符看左右,若仅凭左边和运算符可以判断,右边的式子可忽略, True
True and False or True # 重复上一步, True
False or True # 重复上一步, True
所以, 结果为True
6. pass #什么都不做,可以做占位符
if 条件:
pass
elif 条件:
pass
elif 条件:
pass
# 若无pass/循环体,系统报错; if 后面可不接else/ elif;if中只执行一层代码。
数据类型(数字,字符串)
1. 数据类型学习重点
a. 基本使用
用途
定义方式
常用操作 + 内置方式
b. 总结
存一个值or 多个值(值都是什么类型的)
有序or无序
可变or 不可变
** 可变==值变,id不变==不可hash; 不可变==值变,id变==可hash
print(hash(10)) =》10 可hash
print(hash ([1,2,3]) ) =》报错,list不可hash
2. 整型 int
age = 10 #age = int(10); 造一个整数10,赋给age
right: int (‘10’), int (10)
wrong: int (’10.3’), int (10.3)
常用操作:+ - * /
无内置方式
可存一个值, 不可变,可hash, #有序无序不使用
3. 进制转化
10 = 1*10^1+0*10^0=10 #10在十进制中为10
10 = 1*2^1+0*2^0=2 #二进制
10 = 1*8^1+0*8^0=8 #八进制
10 = 1*16^1+0*16^0=16 #十六进制 0-9, A, B, C, D, E, F
bin (3) =》 0b11 #十进制转化为二进制, python的内置函数
oct (8) =》 0o10 #十进制转化为八进制,python的内置函数
hex (16) =》 0x10 #十进制转化为十六进制,python的内置函数
4. 浮点型 float
height = 1.81 #height = float(1.81); 造一个浮点数,赋给height
常用操作:+ - * /
无内置方式
可存一个值, 不可变,可hash, #有序无序不使用
5. 字符串
用途:存放描述性的数据,一个字符串只存一个值(等号右边); python没有字符类型;‘a’亦为字符串
定义:在单双三引号内的一串字符 #三引号里可放多行字符
name=‘egon’ # name = str (‘egon’)
str(10) # type(str(10)) =》 str
常用操作
**优先掌握的操作:
#1、按索引取值(正向取+反向取) :只能取, 不可以更改
正向取:
name =’egon’
print(name[0]) =》 e
#从0开始,超范围报错, 取出的字符为字符串类型
反向取:
name =’egon’
print(name[-1]) =》 n
#从-1开始,超范围报错, 取出的字符为字符串类型
#2、切片(顾头不顾尾,步长)
默认步长为1(向右移动)
msg = ‘alex say my name is sa’
print (msg[0:4]) =》alex
print (msg[0:6:2]) =》ae (空格)
print (msg[3:1:-1]) =》xe
print (msg[-1:-5:-1]) =》as s
print (msg[-1:-5:1]) =》无输出
msg[:] =》‘alex say my name is sa’
msg[::1] =》‘alex say my name is sa’
msg[::-1] =》‘sa si eman ym yas xela’
#3、长度len #len() 可用于字符串,也可用于其他数据类型
print(len(msg)) =》字符个数
#4、成员运算in和not in
print (‘a’ in msg) =》 True
print (‘alex’ in msg) =》 False
#5、移除空白(去除左右两边的空白)strip
默认:空白
s = ‘**egon***’
print(s.strip())=》**egon***
print(s.strip(‘*’))=》egon #s.strip()不改变s的值, s为不可变类型
name = input(‘用户名>>: ‘).strip()
name.strip(‘*”).strip(‘#’)
#6、切分split (用于有规律的字符串)
info = ‘egon:123:admin’
res= info.split(‘:’)
res =》['egon', '123', 'admin'] #输出类型为list
cmd = ‘get|a.tex|32123123’
print(cmd.split(‘|’) =). ['get', 'a.tex', '32123123']
#7、循环(循环取值)
msg = ‘alex’
i = 0
while True:
if i < len(msg):
print(msg[i])
i+=1
else:
break
‘
msg=’alex’
i=0
while i <len(msg):
print(msg[1])
i+=1
msg =’ale’ =》 a
for item in msg: =》 l
print(item) =》 e
for in : #可用于字符串,列表,字典,不可用于数字(1111)