python基础2
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=5 r=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'}