格式化输出
%为占位符
在下面代码中可以看出,%s代表着字符占位符,此外%d代表数字占位符
name = input('请输入姓名:') age = input("请输入年龄:") hobby = input("请输入爱好:") msg = ''' ---------info of %s----------- Name:%s Age:%s Hobby:%s ''' %(name,name,age,hobby) print(msg)
要注意的是,Input的输入全是字符串,要想把字符串转化为数字,用int(),()里写想要转换的字符串即可,如:
Age = input(">>>") age = int(Age) print(type(age))
>>> <class 'int'>
既然%为占位符,那想输出10%时怎么办呢?这时只用输入两个%%就行了,如
msg = "我是%s,年龄%d,目前学习进度为80%%"%('haohao',22) print(msg)
>>> 我是haohao,年龄22,目前学习进度为80%%
既然写到输出了,顺便写下format(),format()的三种形式:
name = input('请输入姓名:') age = input("请输入年龄:") hobby = input("请输入爱好:") #第一种方法,用{}做占位符 msg1 = ''' ---------info of {}----------- Name:{} Age:{} Hobby:{} '''.format(name,name,age,hobby) print(msg1) #第二种方法,用{1}、{2}、、、编号更加方便 msg2 = ''' ---------info of {0}----------- Name:{0} Age:{1} Hobby:{2} '''.format(name,age,hobby) print(msg2) #第三种方法,用{_name}、{_age}、、、这样在定义时更随意 msg3 = ''' ---------info of {_name}----------- Name:{_name} Age:{_age} Hobby:{_hobby} '''.format(_age = age,_name = name,_hobby = hobby) print(msg3)
初识编码
Ascii码 起初是7位,设计时经考虑设计了8位用于扩展,但第8位全是0,一个Ascii码占一个字节
unicode码 起初设计为所有字符都为16位,也就是两个字节,经升级后变为4个字节
utf-8 英文、数字、特殊符号一个字节 ; 欧洲 2个字节 ;中文 3个字节
1024byte == 1kb 1024kb == 1MB 1024MB == 1GB 1024GB == 1TB
运算符
算术运算符 + 、 - 、 * 、 / 、 ** 、 // 、%
比较运算符 > 、 < 、 != 、<> 、 == 、 >= 、 <=
赋值运算符 += 、 -= 、 *= 、/= 、%= 、**= 、 //=
逻辑运算符 and 、 or 、 not 三者优先级关系为 ()>not > and > or
判断下列两组逻辑运算输出结果:
print(3>4 or 4<3 and 1==1) print(1 < 2 and 3 < 4 or 1>2 ) print(2 > 1 and 3 < 4 or 4 > 5 and 2 < 1) print(1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8) print(1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6) print(not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6)
print(3>4 or 4<3 and 1==1) print(1 < 2 and 3 < 4 or 1>2 ) print(2 > 1 and 3 < 4 or 4 > 5 and 2 < 1) print(1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8) print(1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6) print(not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6)
数据类型
int :用于计算 eg:1,2,3 i.bit_length() 转换成二进制需要的位数 int( 1)=1 空格无效
int -->str str(123) ; int -->bool bool(0)=False
bool :用于判断语句 True False
bool --> int int(True)=1 int(False)=0 ; bool -->str str(False)='False'
str :字符串,存储少量数据进行操作 'asfaas'
str --> int int('123')=123 only number OK ; str -->bool s = '' bool(s)=False only str is empty ;others will turn to True ; str -->list slipt() ;
list:列表 ,用来存储大量数据 [2,3,4,'as','dsf',[2,5,6],'dd']
list --> str join()
tuple:元组 ,只读列表 (1,2,3,'22',[3,4,5],('a',2,4),8)
dict : 字典 ,存储一些有关联的数据 {'name':'haoaho','age':16}
集合:{1,5,6,'alex2','ss'}
字符串操作
索引与切片
s = 'asdGHKJsdf' # 索引 字符串编号从0开始计数 s1 = s[0] print(s1) # 切片 'asdG' s2 = s[0:4] # 注意切片时顾首不顾尾 print(s2) # 取全部字符串 s3 = s[:] s4 = s[0:] print(s3,s4) # 切片时加入步长 s5 = s[0::2] # 隔一个取出一个字符 print(s5) # 切片时可以倒着取,注意倒着取时也是顾首不顾尾,但首尾已经互换 s6 = s[-1:-3:-1] # s[-1]代表s的最后一个字符 print(s6)
capitalize 首字母大写
s = 'haohao shuai' s1 = s.capitalize() print(s1)
upper全部大写 lower全部小写 注:对字符串中的数字无效,可放心使用
s = 'haohao Shuai' s2 = s.upper() s3 = s.lower() print(s2,s3)
swapcase 大小写转换
s = 'haohao Shuai' s4 = s.swapcase() print(s4)
title 被特殊字符隔开的字符首字母大写 注:数字也算特殊字符
s = 'hao;hao1shuai' s5 = s.title() print(s5)
center 默认居中,空白填充 注:括号里的参数20为填充的宽度,+为填充的符号
s = 'haohao Shuai' s6 = s.center(20,'+') print(s6)
expandatabs 若字符串中有\t,在\t前的字符补足8位或16位
s = 'haohao\tShuai' s7 = s.expandtabs() print(s7)
startswith('$',m,n) / endswith('$',m,n) 是否以 '$ '为开头/结尾,True/False startswith/endswith (可以切片,顾头不顾尾)
s = 'haohao Shuai' s8 = s.startswith('h') s9 = s.endswith('i') print(s8,s9)
s8_1 = s.startswith('h',3,6)
s9_1 = s.endswith('a',-5,-1)
print(s8_1,s9_1)
find('$') index('$') 返回 ' $' 的索引(下标) find 找到时返回索引,找不到返回-1 ; index 找到时返回索引,找不到报错
s = 'haohao Shuai' s10 = s.find('u') s11 = s.index('u') print(s10,s11)
strip 删除字符串中的空格 (也可以自定义删除字符串中的什么字符) 注:从两边开始删除,碰到非删除元素时停止。
另有 lstrip 从左边开始删除;rstrip 从右边开始删除 ps: '\n'代表转行
s = ' +haohao Shuai ' s12 = s.strip() s12_1 = s.strip(' +') print(s12,'\n',s12_1)
count('$',m,n) 计算字符 ' $'在字符串中出现了多少次 (可以切片,顾头不顾尾)
s = 'haohao Shuai' s13 = s.count('h') s13_1 = s.count('h',0,5) print(s13,s13_1)
split('$',n) 重点哦 以 ' $' 为界分割字符串,不写默认空格 可以把 str 分割成 list 还可以确认分割n次
s = 'hao+hao Shuai' s14 = s.split() s14_1 = s.split('+',1) print(s14,s14_1)
replace('a','b',n) 把字符串中 ' a' 全部替换为 ' b',替换n次
s = 'haohao Shuai' s15 = s.replace('hao','h',1) print(s15)
isalnum 判断字符串是否由字母数字组成 ; isalpha 判断字符串是否由字母组成 ;isdigit 判断字符串是否由数字组成
s = 'haohaoShuai' s16 = s.isalnum() print(s16)
公共方法:
a=len(s) s有几个字符(长度)
列表的增删改查
列表的增
ps:增后还是原列表,应该打印原列表
append( '$' ) 在列表的最后增加 '$'
insert( n , '$' ) 在列表的第n个位置增加 '$'
extend( [1,2,3]) 在列表的最后迭代增加(分别增加每个元素)
li = [1,2,'haohao',[3,4,5,'xingcing'],'huahua','qiange'] li.append('anshao') print(li) li.insert(2,3) print(li) li.extend([1,2,'fengla']) print(li) li.extend('haha') print(li)
列表的删
s = pop(n) 删除列表第n个元素(从0开始),返回值为删掉的元素,不写索引则默认删除最后一个元素
remove('a') 删除列表中的 'a'
clear 清空列表
del li 删除列表 del li[2:] 可以切片删除
li = [1,2,'haohao',[3,4,5,'xingcing'],'huahua','qiange'] li.pop(-1) print(li) li[3].remove(3) print(li) li[3].clear() print(li) del li[0:2] print(li)
列表的改
直接赋值法
li = [1,2,'haohao',[3,4,5,'xingcing'],'huahua','qiange'] li.[2] = 'hh' print(li)
切片迭代填充 ps:把切片的删掉,进行迭代填充
li = [1,2,'haohao',[3,4,5,'xingcing'],'huahua','qiange'] li[0:1] = 'anshao' print(li)
列表的查
同字符串 li[0]=.....
列表的排序
li = [1,4,6,3,5,2] #列表反转 li.reverse() print(li) #列表的排序 若是字母,则按照ASCII码排序 li.sort() print(li) #倒序排序 li.sort(reverse = True) print(li)
列表的嵌套
li = ['haohao','anshao',['qiange','huahua'],'xinghui'] print(li[2][1]) li[2][1]=li[2][1].upper() print(li)
公共方法:
l = len(li) 列表长度(元素个数)
li.count('a') 'a'出现在列表中的次数 可以切片
列表的索引only index()
join 可以把列表转化为字符串 ps:不能对int类型使用
li = ['haohao','xingcing','huahua','qiange'] s = ",".join(li) print(s)