Python基础小知识
1 Python2与3区别
1.1 版本
python2 源码不标准,混乱,重复代码太多,
python3 统一 标准,去除重复代码。
1.2 环境
1.2.1 编译型
一次性将所有程序编译成二进制文件。
缺点:开发效率低,不能跨平台。
优点:运行速度快。
eg:C,C++等等。
1.2.2 解释型
当程序执行时,一行一行的解释。
优点:开发效率高,可以跨平台。
缺点:运行速度慢。
eg:python ,php,等等。
1.3 编码
python2默认编码方式是ascii码
解决方式:在文件的首行:#-*- encoding:utf-8 -*-
python3 默认编码方式utf-8
utf-8:一个中文用三个字节表示
gbk:国内使用,一个中文用两个字节表示
Unicode:一个中文用四个字节表示
1.4 变量
将一些运算的中间结果暂存到内存中,以便后续代码调用。
1.必须由数字,字母,下划线任意组合,且不能数字开头。
2.不能是python中的关键字。
3.变量具有可描述性。
4.不能是中文。
关键字如下:
['and', 'as', 'assert', 'break', 'class', 'continue','def', 'del', 'elif', 'else', 'except', 'exec','finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
1.5 字符串
python当中凡是用引号引起来的都是字符串。
相加:字符串的拼接。
相乘:str * int
print('you are beautiful '*5) print('you'+' and me')
结果
you are beautiful you are beautiful you are beautiful you are beautiful you are beautiful you and me
1.6 注释
单行注释:#
多行注释:'''被注释内容''' """被注释内容"""
1.7 基础用户交互,input
age=input('please input age:')
当运行代码输入age的值时,返回为字符串格式.
注:
字符串→数值型:int(str)
数值型→字符串:str(int)
1.8 循环(if/while)
1.8.1 if
1>.if 条件:
结果
else:
结果
2>.if 条件:
结果
elif 条件:
结果
else:
结果
3>.if 条件:
结果
if 条件:
结果
else:
结果
1.8.2 while
1> while 条件:
所要执行的程序
2> while 条件:
所要执行的程序
break/continue
1.8.3 while…else…
count=0 while count < 5 : count+=1 if count==3:pass print('loop',count) else: print('循环完了')
注:当while循环没有被break打断时,else中的语句执行,否则不执行。
1.9 运算符
优先级:()→not→and→or
x or y x为True,则返回x
非零转化为bool值为True,0为False
x and y x为True,则返回y
如果逻辑运算符左右均为表达式时,则返回bool值。
print(0 or 4 and 3 or 2) print(1>2 and 3 or 4 and 3<2) print(2 or 1 < 3) print(2 or 1 < 3 and 2)
结果:
3
False
2
2
1.10 格式化输出
name=input('请输入名字:') age=input('请输入年龄:') job=input('请输入工作:') hobbies=input('请输入爱好:\n') msg='''---- Introduce Of %s----- Name:%s Age:%d Job:%s Hobbies:%s ------------end--------------''' %(name,name,int(age),job,hobbies) print(msg) 注:如果想要加入“%”作为输出字符时,则必须用“%%”,前面的%表示转义字符 eg: msg='''---- Introduce Of %s----- Name:%s Age:%d Job:%s Hobbies:%s 学习进度为3%% ------------end--------------''' %(name,name,int(age),job,hobbies) print(msg)
1.11 习题
1.求1-100之间的奇数。
2.输出 1 2 3 4 5 6 8 9 10。
3.求1-100的和。
4.计算1-2+3-4+5……99。
5.除88外的奇数值和加偶数相反数的和。1-2+3-4+5……+99
1. i=0 while i < 100: i += 1 if (i%2): print(i) else: continue
2. i=0 while i < 10: i += 1 if i==7: continue print(i)
3. i=1 sum=0 while i <=100: sum=sum+i; i +=1 print(sum)
4. i=1 sum=0 while i<100: if (i%2): s=i else: s=-i sum=sum+s i +=1 print(sum)
5. i=1 sum=0 while i<100: if i==88: i +=1 continue elif (i%2): s=i else: s=-i sum=sum+s i +=1 print(sum)
结果:请自行运行。
1.12 数据类型
1. int 用于计算
2. bool:用户判断
3.str:存储少量数据,便于操作
4. list:[1,'2','345',[1,2,3]],存储大量数据
5. 元组:(1,'2','345',[1,2,3]) ,只读
6.dict:字典{'name':'eric','age':20}
7.字典{'eric':[各种信息],'lucifer':[各种信息]} ,主要为关系型数据存储
1.13 字符串操作
s.capitalize():首字母大写。 s.upper():全部大写。 s.lower():全小写。 s.swapcase():大小写翻转。 s.center(20,'#'):设置总长度并将字符串居中,第二个参数表示用“#”填充。 s.title():如果中间用特殊字符(包括数字)隔开,则可以通过此将所有首字母大写。 s='sadhhj' s.startswith('sa'),返回为bool类型,判断字符串以什么开头。 s.startswith('d',2,5),判断2-5位是否以d开头。 s.find('s'),找到了返回所查字符的索引,没找到返回-1。 s.index('s'),找到了返回所查字符的索引,没找到报错。 s.strip(),默认去空格,只能开头、结尾,参数可以设置需要删除的符号。 s.count(),统计个数,参数可以设置想要的计数。 s.split(),按照指定的形式分割。str→list s.replace(old,new),替换,参数分别为以前值和以后值,默认为所有替换。 s.isaphla(),字符串只由字母组成。 s.isdigit(),字符串只由数字组成。 s.isalnum(),字符串由数字或字母组成。
注:
1.空字符串为F,非空均为T。
2.字符串操作同数组操作。
3.字符串切片取值:顾头不顾尾s[i:i+j]。
4.从后往前取值,用s[-i],s[:]=s[0:]。
5.间隔取值:s[首:尾:步长]。
6.bit_length(i):将i转化为二进制最少的个数。 公共方法:len(s)。
1.14 格式化输出之format()
res='{} {} {}'.format('egon',18,'male') res='{1} {0} {1}'.format('egon',18,'male') res='{name} {age} {sex}'.format(name='egon',age=18,sex='male')
1.15 模拟登陆
i=3 username='Eric_one' password='123456' while i>0: username1=input('请输入用户名:') if username1==username: password1=input('请输入密码:') if password1==password: print('您登陆成功') break else: print('密码输入错误,请重新输入') i=i-1 print('你还有%d次机会'%i) if i==0: in_value=input('再试试?Y or N\n') if in_value=='Y': i=3 else: print('用户名错误,请重新输入') i=i-1 print('你还有%d次机会'%i) if i==0: in_value=input('再试试?Y or N\n') if in_value=='Y': i=3
注:只有三次机会,三次过后需进行确认是否重新确认继续登录尝试。
python在编译安装时,可以通过参数--enable-unicode==ucs2 或--enable-unicode==ucs4,分别用于指定使用2个字节、4个字节表示一个Unicode字符;Python3无法进行 选择,默认使用ucs4。查看当前Python中表示Unicode字符串时占用的空间:
import sys
print(sys.maxunicode)
如果值为65535,则表示使用ucs2标准,即:2个字节表示
如果值为1114111,则表示使用ucs4标准,即:4个字节表示
1.16 列表的增删改查以及嵌套
1.16.1 增
1>增加append
li=['one','ericone','eric','alex','sdfg','123'] li.append('men') li.append(1) print(li) 需求:输入人名进行添加,输入'q'退出 while 1: input_value=input('请输入人名,准备添加:\n') if input_value.lower()=='q': break else: li.append(input_value)
2>按照位置插入
li.insert(index,object)
3>可迭代的添加li.extend(iterable),int不可迭代,添加的是元素(元素分割后)
li.extend([1,2,3])
1.16.2 删
1>pop:按索引删除pop(index),有返回值,返回值为删除的元素,默认删除最后一个
2>remove:按元素去删,remove(value),无返回值
3>clear:清空列表,无返回值
4>del li:删除列表
5>del li[想要删除的首元素:尾元素]:切片删
1.16.3 改
1>根据索引直接赋值
li[0]
2>切片改
li[0:2]='efg'#按元素添加进列表
1.16.4 查
for i in li: print(i) 通过for循环查询 列表中只有index查找索引
1.16.5 列表的嵌套
li[1][1]
1.17 join方法、range、排序
s='sfgjjf' s1='++'.join(s)#上面字符通过++连接 li=['sd','sf','aasd','神人'] s1=''.join(li)#字符串无缝拼接 li→str join() str→list:split() for i in range(0,10,2): print(i) for i in range(0,10,-1): print(i) li=[1,3,5,7,82,2,4,6,9] li.sort()#默认升序 li.sort(reverse=True)降序 li.reverse()反转 print(li)
1.18 习题
1.18.1 li=['alex','wusir','eric','rain','alex']
1.计算列表的长度并输出。
2.列表中追加元素‘seven’,并输出添加后的列表。
3.请在列表的第1个位置插入元素‘Tony’,并输出添加后的列表。
4.请修改列表第2个位置的元素为‘Kelly’,并输出修改后的列表。
5.请将列表I2=[1,'a',3,4,'heart']的每一个元素添加进列表li中,一行代码实现,不允许使用循环添加。
6.请将字符串s='qwert'的每一个元素添加到列表里,一行代码实现。
7.请删除列表中的元素'eric',并输出删除后的列表。
8.请删除列表中的第2个元素,并输出删除的元素和删除后的列表。
9.请删除列表中的第2至4个元素并输出删除元素后的列表。
10.请将列表所有的元素反转,并输出反转后的列表。
11.请计算出'alex'元素在列表中出现的次数并输出次数。
示例代码如下:
li=['alex','wusir','eric','rain','alex'] l1=len(li),print(l1) li.append('seven'),print(li) li.insert(0,'Tony'),print(li) li[1]='kelly' print(li) li[0:0]=[1,'a',3,4,'heart'] print(li) li[1:1]='qwert' print(li) li.remove('eric') print(li) print(li.pop(1)) print(li) del li[1:4] print(li) li.reverse() print(li) print(li.count('alex'))
1.18.2 写代码,有如下列表,利用切片实现每一个功能
li=[1,3,2,'a',4,'b',5,'c']
1>通过对li列表的切片形成新的列表l1,l1=[1,3,2]。
2>通过对li列表的切片形成新的列表l2,l2=['a',4,'b']。
3>通过对li列表的切片形成新的列表l3,l3=[1,2,4,5]。
4>通过对li列表的切片形成新的列表l4,l4=[3,'a','b']。
5>通过对li列表的切片形成新的列表l5,l5=['c']。
6>通过对li列表的切片形成新的列表l6,l6=['b','a',3]。
示例代码如下:
li=[1,3,2,'a',4,'b',5,'c'] print(li[0:3] print(li[3:6]) print(li[0:-1:2]) print(li[1:-2:2]) del li[0:-1] print(li) print(li[-3::-2])
1.18.3 写代码,有如下列表,按照要求实现每一个功能
li=[2,3,'k',['qwe',20,['kl',['tt',3,'l']],89],'ab','adv']
1>将列表li中的'tt'变成大写 (两种方式)。
2>将列表中的数字3变成字符串'100' (两种方式)。
3>将列表中的字符串'l'变成数字101 (两种方式)。
示例代码如下:
li=[2,3,'k',['qwe',20,['kl',['tt',3,'l']],89],'ab','adv'] li[3][2][1][0]='TT' li[3][2][1][0]=li[3][2][1][0].upper() print(li) li[1] = '100' li[3][2][1][1] = '100' print(li) li[3][2][1].remove(3) li[3][2][1].insert(1,'100') print(li) li[3][2][1][2]=101 li[3][2][1][2].replace('1',101) print(li)
1.18.4 请用代码实现
li=['alex','eric','rain']
利用下划线将列表的每一个元素拼接成字符串'alex_eric_rain'。
li=['alex','eric','rain'] s='_'.join(li) print(s)
1.18.5 代码实现以下功能
查找列表li中的元素,移除每个元素的空格。
并找出以’A’或者’a’开头,并以’c’结尾的所有元素,
并添加到一个新列表中,最后循环打印这个新列表。
li = ['taibai ','alexC','AbC ','egon',' Ritian',' Wusir',' aqc'] b=[] for i in li: s=i.strip() if (s.startswith("A")or s.startswith("a"))and s.endswith("c"): b.append(s) for x in b: print(x) for i in li: s=i.strip() if s[0].upper() == 'A' and s[-1] == 'c': b.append(s) for x in b: print(x)
1.18.6 实现下面功能
开发敏感词语过滤程序,提示用户输入评论内容,如果用户输入的内容中包含特殊的字符:
敏感词列表 li = ["苍老","京热",”藤兰”,”野结”]
则将用户输入的内容中的敏感词汇替换成***,并添加到一个列表中;
如果用户输入的内容没有敏感词汇,则直接添加到上述的列表中。
li=["苍老","京热","藤兰","野结"] new_li= [] info = input("评论") # 苍老,京热 法律框架第三 for i in li: if i in info: l = len(i) info=info.replace(i,'*'*l) new_li.append(info) print(new_li)
1.18.7 统计字符串中的整数
info=input('>>>').strip() for i in info: if i.isalpha(): info=info.replace(i,' ') l=info.split() print(len(l))
1.18.8 简易加法计算器
input_value=input('请输入算式:\n').strip() list_value=input_value.split('+')以加号进行分割 sum=0 for i in list_value: sum+=int(i) print(sum)
可用来normalize代码格式:https://www.bootcdn.cn/。