alex python of day3
集合
# author:"Jason lincoln" list_1={1,4,5,7,3,6,7,9} list_1=set(list_1) #把集合变成列表 去重复 list_2=set([2,6,0,66,22,8,4]) print(list_1,type(list_1)) print(list_2) print(list_1.intersection(list_2)) #交集 print(list_1.union(list_2)) #并集 print(list_1.difference(list_2)) #差集 #子集 list_3=set([1,3,7]) print(list_3.issubset(list_1)) #list_3包含于list_1 print(list_1.issuperset(list_3)) #list_1包含list_1 #对称差集 print(list_1.symmetric_difference(list_2)) #并集然后去掉相同部分 list_4=set([5,7,8]) print(list_3.isdisjoint(list_4)) #有交集返回False没交集返回True #交集 print(list_1 & list_2) #并集 print(list_1 | list_2) #差集 print(list_1 - list_2) # in list_1 but not in list_2 #对称差集 print(list_1 ^ list_2)
集合的基本操作
list_1.add(999) #添加一项 list_1.update([888,777]) #添加多项 print(list_1) print(list_1.remove(777)) #删除 list_1.discard(888) #删除集合里面没有的元素不会报错 print(list_1) print(len(list_1)) print(list_1.pop()) #随机删除然后返回删除的那个数
文件操作
# author:"Jason lincoln" # author:"Jason lincoln" #data=open("yesterday",encoding="utf-8").read() #f=open("yesterday",'r',encoding="utf-8") #文件句柄,只读 #f=open("yesterday2",'w',encoding="utf-8") #建一个新文件 f=open("yesterday",'a',encoding="utf-8") # a==append 追加 #f.trunctate() #清空 #f.truncate(10) #从指定位置开始截断 """ f.write("\nwhen i was young ,i'd like listen to the radio") f.write('\n天安门上太阳升。。。') f.close() """ """ print(f.readline()) #读一行 #for i in range(5): #print(f.readline()) #print(f.readlines()) #列表,每行一个元素 for line in f.readlines(): #每循环一行返回一个元素 #print(line) print(line.strip()) #.strip去掉空格和换行 """ ''' # low loop for index,line in enumerate(f.readlines()): if index==9: print('-------我是分割线------') continue print(line.strip()) ''' # high bige ''' count=0 for line in f: #迭代器 if count==9: print('------我------') print(line.strip()) count+=1 ''' ''' print(f.tell()) print(f.readline()) print(f.readline()) print(f.readline()) print(f.tell()) #打印当前位置 f.seek(5) #回到某个位置 print(f.readline()) print(f.encoding) #打印编码 print(f.fileno()) #一个内存的编号,没什么卵用 f.readable #判断文件是否可读 print(f.flush()) #实时刷新 '''
文件写读和读写
# author:"Jason lincoln" #f=open("yesterday",'r+',encoding='utf-8') #读写 f=open('yesterday','w+',encoding='utf-8') #写读 #f=open('yesterday','a+',encoding='utf-8') #追加 #f=open("yesterday",'rb') #二进制模式 #f=open("yesterday",'wb') #f.write('helloiword!\n'.encode()) #f.close() ''' print(f.readline()) print(f.readline()) print(f.readline()) f.write('------diao--------') #写在后面 print(f.readline()) ''' f.write('--------diao--------1\n') f.write('--------diao--------1\n') f.write('--------diao--------1\n') f.write('--------diao--------1\n') print(f.tell()) f.seek(10) print(f.tell()) print(f.readline()) f.write('should be at the behinning of the second line') #不知道没什么鬼,貌似没什么卵用 print(f.readline()) f.close() #print(f.readline())
进度条——flush的使用
# author:"Jason lincoln" import sys,time for i in range(20): sys.stdout.write('#') sys.stdout.flush() time.sleep(0.1)
文件修改
# author:"Jason lincoln" f=open('yesterday2','r',encoding='utf-8') f_new=open('yesterday2.bak','w',encoding='utf-8') for line in f: if "那时多么幸福的时刻" in line: line=line.replace('那时多么幸福的时刻','现在也多么幸福的时刻') f_new.write(line) f.close() f_new.close()
字符转编码操作
GBK需要转换为UTF-8格式编程:
1、首先通过编码[decode]转换为Unicode编码
2、然后通过解码[encode]转换为UTF-8的编码
import sys print(sys.getdefaultencoding()) # author:"Jason lincoln" s='你好' #print(s) s_gbk=s.encode('gbk') print(s_gbk) print(s.encode()) gbk_to_utf8=s_gbk.decode('gbk').encode('utf-8') #先转成unicode再转成utf-8 print(gbk_to_utf8) #print(s.encode('gbk')) #python3默认unicode # b'\xe4\xbd\xa0\xe5\xa5\xbd' byte类型
with语句
# author:"Jason lincoln" import sys #with open('yesterday2','r',encoding='utf-8') as f: #自动关闭文件 with open('yesterday2','r',encoding='utf-8') as f,\ open('yesterday','r',encoding='utf-8') as f2: #打开多个文件,python官方建议一行代码不超过80个字符 for line in f: print(line)
gb2312转成utf-8再转成gb2312再转成gbk
# author:"Jason lincoln" #gb2312转成utf-8再转成gb2312再转成gbk s='你好' import sys print(sys.getdefaultencoding()) s_gb2312=s.encode("gb2312") print(s_gb2312) #gb2312 s_gb2312_to_utf8=s_gb2312.decode('gbk').encode('utf-8') print(s_gb2312_to_utf8) #utf_8 s_utf8_to_gb2312_again=s_gb2312_to_utf8.decode("utf-8").encode('gb2312') print(s_utf8_to_gb2312_again) #gb2312 s_gb2312_to_gbk=s_utf8_to_gb2312_again.decode('gb2312').encode('gbk') print(s_gb2312_to_gbk) #gbk
函数与编程
编程语言中函数的定义 :函数是逻辑结构化和过程化的一种编程方法。
python中函数定义方法:
def test(x)
"the function definitions"
x+=1
return x
def:定义函数的关键字
test:函数名
():内可定义形参
"":文档描述(非必要,但是强烈建议为你的函数添加描述信息)
x+=1:泛指代码块或程序处理逻辑
return:定义返回值
函数式编程就是:先定义一个数字函数,然后按照这个数字模型用编程语言去实现它。至于具体如何实现和这么做的好处。
函数返回值:
# author:"Jason lincoln" '''def test1(): print('in the test1') return 0 x=test1() #函数接收return返回的值。 print(x) ''' def test1(): print('in the test1') def test2(): print('in the test2') return 0 def test3(): print('in the test3') return 1,'hello',['alex','wupeiqi'],{'name','alex'} x=test1() y=test2() z=test3() print(x) print(y) print(z)
总结:
返回值数=0;返回none
返回值数=1;返回object
返回值数>1;返回tuple
函数的参数及调用
# author:"Jason lincoln" def test(x,y): #形参 print(x) print(y) #test(2,1) #实参 与形参一一对应 test(y=1,x=2) #与形参顺序无关 关键字调用 test(3,y=2) #关键参数不能写在位置前面
默认参数
# author:"Jason lincoln" #默认参数 def test(x,y=2): print(x) print(y) #test(1) test(1,3) #默认参数的特点:调用参数的时候,默认参数非必须传递
非固定参数
# author:"Jason lincoln" # #非固定参数 # def test(*args): #*args:接收N个位置参数,转换成元组形式 # # print(args) # # # test(1,2,3,4,5) # test(*[1,2,4,5,5]) #args=tuple([1,2,3,4,5]) # def test1(x,*args): # print(x) # print(args) # # test1(1,2,3,4,5,6,7) ''' def test2(**kwargs): #**kwargs把N个关键字参数,转换成字典的方式 print(kwargs) print(kwargs['name']) print(kwargs['age']) print(kwargs['sex']) test2(name='alex',age=8,sex='F') test2(**{'name':'alex','age':8,'sex':'F'}) ''' # def test3(name,**kwargs): # print(name) # print(kwargs) # test3('aelx',age=18,sex='m') ''' def test4(name,age=18,**kwargs): #参数组一定要放在最后 print(name) print(age) print(kwargs) #test4('alex',sex='m',hobby='tesla',age=3) #test4('alex',3,sex='m',hobby='tesla') test4('alex',sex='m',hobby='tesla') ''' def test5(name,age=18,*args,**kwargs): print(name) print(age) print(args) print(kwargs) test5('alex',age=34,sex='m',hobby='tesla')
全局变量与局部变量
在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。
全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序。
当全局变量和局部变量同名时;
在局部变量的子程序内,局部变量起作用;在其他地方全局变量起作用。
# author:"Jason lincoln" ''' school='Oldboy edu' #全局变量 def change_name(name): global school #将局部变量改成全局变量 school='Mage Linux' #局部变量 print('before change',name,school) name='Alex Li' #这个函数就是这个变量的作用域 age=23 print('after change',name) print(school) name='alex' change_name(name) print(name,school) ''' # def change_name(): # global name #尽量不用global # name='alex' # # # change_name() # print(name) school='oldboy edu' names=['alex','jack','rain'] #列表,字典,集合可以在函数里面改 def change_name(): names[0]='金角大王' print('inside func',names) change_name() print(names)
递归
在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就叫递归函数
1.必须有一个明确的结束条件
2.每次进入更深一层递归时,问题的规模相比上次递归都应有所减少
3.递归效率不高,递归层次过多会导致栈溢出
# author:"Jason lincoln" def calc(n): print(n) if int(n/2)>0: return calc(int(n/2)) print("-->",n) calc(10)
高阶函数
变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这个函数称之为高阶函数。
# author:"Jason lincoln" #abs 绝对值函数 def add(a,b,f): return f(a)+f(b) res =add(3,-6,abs) print(res)
alex python of day3的更多相关文章
- python笔记 - day3
python笔记 - day3 参考:http://www.cnblogs.com/wupeiqi/articles/5453708.html set特性: 1.无序 2.不重复 3.可嵌套 函数: ...
- python s12 day3
python s12 day3 深浅拷贝 对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...
- alex python of day2
模块 sys模块:sys模块是用c语言写的,所以在lib下是不会有sys.py这个文件存在 1 import sys 2 print(sys.path) #打印环境变量 3 print(sys.a ...
- python学习-day3
今天是第三天学习,加油! 第一部分 集合 一.集合 1.什么是集合以及特性? 特性:无序的,不重复的序列,可嵌套. 2.创建集合 方法一:创建空集合 s1 = set() print(type(s1) ...
- python学习day3
目录: 1.集合set 2.计数器 3.有序字典 4.默认字典 5.可命名元组 6.队列 7.深浅拷贝 8.函数 9.lambda表达式 10.内置函数 一.集合set set是一个无序且不重复的元素 ...
- alex python of day1
Print("hello word!")#打印hello word!向python世界发生第一声呐喊,仪式很重要 定义变量 name="Alex Li" nam ...
- python基础day3
一.文件管理 文件管理是很多应用程序的基本功能和重要组成部分.Python可以使文件管理极其简单,特别是和其它语言相对比. 1. 读操作 1.1r模式 1.1.1读取其他路径下文件 首先在D盘创 ...
- python学习Day3 变量、格式化输出、注释、基本数据类型、运算符
今天复习内容(7项) 1.语言的分类 -- 机器语言:直接编写0,1指令,直接能被硬件执行 -- 汇编语言:编写助记符(与指令的对应关系),找到对应的指令直接交给硬件执行 -- 高级语言:编写人能识别 ...
- python基础 Day3
python Day3 1.作业回顾 设定一个理想的数字比如88,让用户输入数字,如果比88大,则显示猜测的结果大:如果比66小,则显示猜测的结果小了,给用户三次猜测机会,如果显示猜测正确退出循环,如 ...
随机推荐
- PHP多进程编之僵尸进程问题
上一篇说到了使用pcntl_fork函数可以让PHP实现多进程并发或者异步处理的效果.那么问题是我们产生的进程需要去控制,而不能置之不理.最基本的方式就是fork进程和杀死进程. 通过利用pcntl_ ...
- web 导出 csv
public void ProcessRequest(HttpContext context) { //DownloadFile("教程.csv" ...
- PHP 支付
蚂蚁金服开放平台 2.下载PHP的SDK&demo 3.申请应用 OR 使用沙箱环境 4.生成应用私钥&应用公钥 5.配置config.php 蚂蚁金服开放平台",对,没错, ...
- win10 uwp 保存用户选择文件夹
如果我们每次把临时处理的文件保存,都要让用户选择一次,用户会不会觉得uwp垃圾?如果我们每次打开应用,都从某个文件读取,而这个文件不在应用目录和已知的目录,那么每次都需要用户选择,用户会不会觉得uwp ...
- QT:用QWebSocket实现webchannel,实现C++与HTML通信
基本原理是通过channel将C++对象暴露给HTML,在HTML中调用qwebchannel.js.前提是建立transport,QT只提供了一个抽象基类QWebChannelAbstractTra ...
- 加载web项目时报的错误:Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 Web modul
用eclipse开发的java项目不能加载到tomcat6.0服务器,原因是:jst.web的版本高了 <installed facet="jst.web" version= ...
- 五分钟上手Markdown
Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式.------百度百科 话不多说,开始发车!总共10个标签,五分钟足矣,毕竟基本没难度 ...
- LNK4098: 默认库“MSVCRT”与其他库的使用冲突
LNK4098: 默认库"MSVCRT"与其他库的使用冲突 修改的方法:在项目属性中,在连接器-输入选项中,在忽略特定库中添加相应的库,具体添加那些苦请参照下面的表格. 下面的内容 ...
- 采访 Lua 发明人的一篇文章
采访 Lua 发明人的一篇文章 来源 https://blog.codingnow.com/2010/06/masterminds_of_programming_7_lua.html <Mast ...
- Pendant
Pendant Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...