1、运算符
①结果是数值:
算术运算符: +、-、*、/、%、//
赋值运算:= += -= *=
②结果是布尔值:
成员运算: in not in
比较运算: == > = <= != <>
逻辑运算: and or(括号优先)
***Ctrl+? 注释(#)
2、数据类型
(1)数字:整数、浮点
python3 int
python2 int long
方法: ①print(int('123'))——字符串转化成整数
②type()——查看类型
③16进制转化成10进制
num = "a"
print(int(num,base=16))
④ bit_length()——当前数字的二进制,至少n位表示
#二进制 1—1 2—10 3—11 4—100 5—101
num=5r=num.bit_length()print(r) #3
(2)字符串 str
方法: find() strip() split() join() upper() lower() replace()
test='moTohalu'
#首字母大写
v1=test.capitalize()
print('首字母大写:'+ v1)
#所有字母变小写
v2=test.lower()
print('所有字母变小写:'+ v2)
#设置宽度,并将内容居中,20—是总长度,“*”空白位置填充
v3=test.center(20,"*")
print('居中:'+ v3)
#寻找字符串中子序列的个数
v4=test.count('o',3)
print(v4)
#是否以...开始,以...结尾,返回布尔值
v5=test.endswith("u")
print(v5)
v6=test.startswith("m")
print(v6)
#从开始往后找,找到第一个,获取其位置(可以设置起始位置和结束位置 >和<=)
#未找到 -1
# index()方法若未找到则报错
v7=test.find("lu")
print(v7)
#格式化,将一个字符中占位符替换为指定的值
read1= 'I am {name},age {a}'
v8=read1.format(name='Amy',a=33)
print(v8) ##I am Amy,age 33
#占位符的位置
read2= 'I am {0},age {1}'
v9=read2.format('apple',77)
print (v9) ##I am apple,age 77
###断句20个位置 \t 制表符 \n 换行,可制作类似表格
test2='username\tpassword\temail\nhujuanju\t12334\tsdffdc@163.com'
v10=test2.expandtabs(20)
print(v10)
###结果 username password email
####### hujuanju 12334 sdffdc@163.com
是否判断型方法
#判断字符串中只包含字母和数字,结果是布尔值
test='sdsfdg__'
v11=test.isalnum()
print(v11) ###False
#是否字母(汉字也行),返回布尔值
test1='dscfd董'
v12=test1.isalpha()
print(v12)
#是否是数字,返回布尔值
##123 true true
##① true true
##一二 false true
test2='1234'
v13=test2.isdigit()
v14=test2.isalnum()
print(v13,v14)
#是否全部是空格
test3=' '
v15=test3.isspace()
print(v15)
#是否是标题,每一个字母首字母大写
test4='Return money host'
v16=test4.istitle()
print(v16) ##False
v17=test4.title()
print(v17) ###Return Money Host
#将字符串中的每一个元素按照指定分隔符进行拼接
test='床前明月光'
v18='-'.join(test)
print(v18) ##床-前-明-月-光
#left左边填充*满20个字符
v19=test.ljust(10,"*")
print(v19) ##床前明月光*****
#right右边填充*满20个字符
v20=test.rjust(10,"*")
print(v20) ##*****床前明月光
#小写
test='BOBfdsv'
v21=test.islower()
v22=test.lower()
print(v21,v22) ###False bobfdsv
#大写
test='BOBfdsv'
v23=test.isupper()
v24=test.upper()
print(v23,v24) ###False BOBFDSV
#### 默认 去除空格 和 \n \t
#### 去除某个元素(优先最多匹配)
test=' gulu gulu'
v25=test.lstrip()
v26=test.rstrip('dlu')### gulu g
v27=test.strip(' ')###左右都去
print(v26)
## 分割成3份(包含分割的元素)
test="疑似地上霜疑似地上霜地上霜"
v28=test.partition('霜')
print(v28) ##('疑似地上', '霜', '疑似地上霜地上霜')
v29=test.rpartition('霜')
print(v29) ##('疑似地上霜疑似地上霜地上', '霜', '')
##分割(不包含分割的元素)
v30=test.split('霜')
print(v30) ##['疑似地上', '疑似地上', '地上', '']
##换行分割
test1='fedbg\ndefvd\n'
v31=test1.splitlines()
print(v31)
##大小写转换
test='aBcDeFg'
v32=test.swapcase()
print(v32) ###AbCdEfG
##替换
test="静夜思静夜hh静夜hdh"
v33=test.replace("静夜","姑姑",2)
print(v33) ##姑姑思姑姑hh静夜hdh
len() join() for循环 索引 切片 在其他数据类型也能使用
索引(下标,从0开始)
##索引,获取字符串中的某一个字符
test='abcdefg'
v1=test[3] ### d
print(v1)
##范围索引
v2=test[0:2] ## >=0&&<2
print(v2) ## ab
##切片
v3=test[0:-1]
print(v3) ###abcdef
##字符长度
v4=len(test)
print(v4) ## 7
##汉字 python3—3 python2—9
v5=len('哈哈哈')
print(v5)
###len() join() 在其他数据类型也能使用
###单个字符输出(循环)
test='葫芦噶华丽的时间长了'
#### while
index = 0
while index < len(test):
v1=test[index]
print(v1)
index += 1
print('---END---')
### for
for v2 in test:
print(v2)
test=' 咕噜冒泡呼呼呼哈'
for item in test:
print(item)
break ### 咕 结束整个循环
for item in test:
print(item)
continue ## 终止当前循环
*****字符串一旦创建,不可修改,一旦修改或拼接,都会重新生成新的字符串
range()
### range 创建连续的数字
v1=range(100)
print(v1) ###range(0, 100) (>=0 && <100)
for item in v1:
print(item) ###输出 0 1 2 ...99
###步长为5
v2=range(0,100,5)
print(v2)
for item in v2:
print(item) ###输出 0 5 10 ...95
####将用户输入的索引打印出来
test = input('>>>')
print('输入的字符为:'+test)
l = len(test)
print('输入字符的长度为:',l)
r = range(0,l)
for item in r:
print(item,test[item])
(3)布尔值 bool True \ Flase
False: None " " () [ ] { } 0
(4)列表 List
列表是有序的,元素可以被修改
—中括号括起来 [ ]
— ,分割每个元素
— 列表中可以是数字,字符串,布尔值,列表...
— 索引取值
— 切片取值,切片结果仍是列表
— for循环
— while循环
— in操作
— 列表元素,可以被修改(链式存储)
li = [1, 3, 5, 'kkkk', '噗噗吗', ['dsc', 89]]
print(li)
##索引修改
li[2] = '第二'
print(li) ##[1, 3, '第二', 'kkkk', '噗噗吗', ['dsc', 89]]
##索引删除
del li[1]
print(li) ##[1, '第二', 'kkkk', '噗噗吗', ['dsc', 89]]
##切片修改
li[1:3] = [23, 'saas']
print(li) ##[1, 23, 'saas', '噗噗吗', ['dsc', 89]]
##切片删除
del li[0:3]
print(li) ##['噗噗吗', ['dsc', 89]]
### 嵌套查找
li = [1, 3, 5, 'kkkk', '噗噗吗', ['dsc', 89,'咕咕哒'],True]
print(li[5][0][1]) ## s
字符串和列表相互转换
### 字符串转换成列表
s = 'ssfervh1232'
new_li = list(s)
print(new_li) ###['s', 's', 'f', 'e', 'r', 'v', 'h', '1', '2', '3', '2'# ]
### 数字不能直接转换成列表
### 列表转字符串
li = [12, 34, 45, 'ddsc', 'sds']
print(str(li)) ### [12, 34, 45, 'ddsc', [334, 'dfs', True]]
###自写for循环(既有数字又有字符串)
s = ''
for i in li:
s = s + str(i)
print(s) ###123445ddscsds
####列表元素只有字符串
li = ['ds', '普马马', 'dcs']
v = ''.join(li)
print(v) ###ds普马马dcs
方法:
## 在列表最后增加元素
li = [23,54,345,'dgs',23,23]
li.append(55)
print(li) ###[23, 54, 345, 'dgs', 55]
###计算元素出现的个数
n = li.count(23)
print(n) ### 3
###扩展原列表, 参数,可迭代对象
li.append([776,'fsvt'])
print(li) ###[23, 54, 345, 'dgs', [776, 'fsvt']]
li.extend('不肯')
print(li) ### [23, 54, 345, 'dgs', '不', '肯']
li.extend([776,'fsvt'])
print(li) ###[23, 54, 345, 'dgs', 776, 'fsvt']
### 获取当前值索引位置(左边优先),可设置起止位置
li=[22,23,45,23]
v = li.index(23)
print(v) ### 1
### 在指定索引位置插入元素
li =['vw',465,67,'fgd']
li.insert(1,'一号') ###['vw', '一号', 465, 67, 'fgd']
### pop() 默认删除最后一个元素,并获取
li =['vw',465,67,'fgd']
v = li.pop()
print(li,v) ### ['vw', 465, 67] fgd
### 也可指定索引
li =['vw',465,67,'fgd']
v = li.pop(2)
print(li,v) ##['vw', 465, 'fgd'] 67
### 删除列表中的指定值,左边优先
li =['vw',465,67,'fgd',67]
v = li.remove(67)
print(li) ## ['vw', 465, 'fgd', 67]
### 删除 pop() remove() del li[4] del li[1:4]
### 将当期列表进行反转
li =['vw',465,67,'fgd',67]
v = li.reverse()
print(li) ### [67, 'fgd', 67, 465, 'vw']
### 排序
li = [22,44,66,12,53,33]
li.sort() ##从小到大 ## [12, 22, 33, 44, 53, 66]
li.sort(reverse=True) ##从大到小 ## [66, 53, 44, 33, 22, 12]
print(li)
(5)元祖 tuple
元祖,有序,元素不可被修改,不能被增加或删除
— 括号包含元素 ( )
— 一般写元祖,推荐最后加 ,
— 索引
— 可以切片
tu = (12,44,34,'dsdf')
print(tu)
## 索引
print(tu[0]) ### 12
##切片
print(tu[1:3]) ## (44, 34)
## for循环 , 可迭代对象
for i in tu:
print(i)
#### 字符串、列表、元祖 -—可迭代对象
### 字符串转换成元祖
s = 'effesd'
tu = tuple(s)
print(tu) ##('e', 'f', 'f', 'e', 's', 'd')
### 列表转换成元祖
li = ['ds',23,443]
tu = tuple(li)
print(tu) ###('ds', 23, 443)
### 元祖转换成列表
tu = ('fewsf',223,23)
li = list(tu)
print(li) ## ['fewsf', 223, 23]
### 字符串转换成元祖 (只有字母)
tu = ('ds','sdas','sad')
v = "".join(tu)
print(v) ### dssdassad
### 字符串转换成元祖 (既有数字又有字母)
tu = ('fewsf',223,23)
s=""
for i in tu:
s += str(i)
print(s) ## fewsf22323
## 嵌套获取
tu = ('wd',12,('ssa',12),(['sdd',2333],23),'sa',True)
print(tu[3][0][1]) ###2333
##元祖一级元素不可修改,元祖内嵌套的列表可以修改
tu = ('wd',12,('ssa',12),(['sdd',2333],23),'sa',True)
tu[3][0][1] = 555
print(tu) ###('wd', 12, ('ssa', 12), (['sdd', 555], 23), 'sa', True)
方法: count() index()
(6)字典 dict
— 字典的value可以是任何值
— 字典的key 不能用 布尔值(可用,和0、1重复)、列表、字典
— 字典 无序(可用for、不可用while)
info = {"k1": "v1", ##键值对
'df': 123,
1: "sdsd",
(12, 34): ['dsfs', 34],
'sds': True}
print(info) ## {'k1': 'v1', 'df': 123, 1: 'sdsd', (12, 34): ['dsfs', 34], 'sds': True}
### 索引方式找到指定元素
v = info[(12, 34)][1]
print(v) ## 34
### 删除
del info['sds']
print(info) ##{'k1': 'v1', 'df': 123, 1: 'sdsd', (12, 34): ['dsfs', 34]}
## for循环
for i in info:
print(i) #### 获取key
for i in info.keys():
print(i) #### 获取key
for i in info.values():
print(i) #### 获取values
for k, v in info.items():
print(k, v) ### 获取key 和 value (键值对)
方法: clear() —清空 copy()—拷贝
keys() value() items() get update
### 根据序列创建字典,并指定特定的值,默认为None
v=dict.fromkeys(["k1",123,"er"],123)
print(v) ### {'k1': 123, 123: 123, 'er': 123}
### get() 根据key取字典的value,key不存在时,可以指定值,默认为None
info = {"k1":"vv"}
v = info.get("k111","没这个key!")
print(v)
### 删除,并可返回value
dic = {"k1":"vv",
"k2":"uuu"}
v = dic.pop('k2')
print(v) ###获取删除的value uuu
### 删除(随机),返回key+value
k,v = dic.popitem()
print(k,v)
### 设置值
### 若不存在,设置值
dic = {"k1":"vv",
"k2":"uuu"}
v = dic.setdefault('k3',123)
print(dic) ###{'k1': 'vv', 'k2': 'uuu', 'k3': 123}
### 若已存在,不设置,获取当前key的值
v = dic.setdefault('k2',44)
print(v) ## uuu
print(dic) ## Process finished with exit code 0
### 更新
dic = {"k1":"vv",
"k2":"uuu"}
dic.update(k1=123,k3='sadd')
print(dic) ### {'k1': 123, 'k2': 'uuu', 'k3': 'sadd'}