python编程基本格式_python编程与基础
1、切⽚string[::-1]表⽰忽略起⽌位置,-1表⽰步长;步长为正,表⽰从左向右取;步长为负,表⽰从右向左取
2、python⽂件有两种⽤法,⼀种是直接执⾏,⼀种是作为脚本导⼊;if __name__=='main'即是控制这两种情况的运⾏,在 if __name__ == 'main': 下的代码只有在第⼀种情况下(即⽂件作为脚本直接执⾏)才会被执⾏,⽽ import 到其他脚本中是不会被执⾏的。
3、列表⽤[]标志;元组⽤ () 标识。内部元素⽤逗号隔开。但是元组不能⼆次赋值,相当于只读列表;字典⽤"{ }"标识。字典由索引(key)和它对应的值value组成。list⽤[]
4、append是list的⽅法,join是string的⽅法
5、range(start,stop[,step])
start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
6、反转字符串
from collections importdequedefreverse1(string):return string[::-1]#reverse是列表的⼀个内置⽅法#reversed是python的⼀个类,返回⼀个把序列值翻转后的迭代器
defreverse2(string):
list1=list(string)
newString="".join(list1)returnnewStringdefreverse3(string):#利⽤递归,每次只取⼀个字符
if(len(string))<=1:returnstringelse:return reverse3(string[1:])+string[0]#range(start, stop[, step]),stop是计步结束,但不包含stop,输出⼀个整数列表
defreverse4(string):
list=[]for i in range(len(string)-1,-1,-1):
list.append(string[i])return "".join(list)#deque是创建⼀个双向队列#append(往右边添加⼀个元素);app
endleft(往左边添加⼀个元素);extend(从队列右边扩展⼀个列表的元素);extendleft(从队列左边扩展⼀个列表的元素)
defreverse5(string):
q=deque()
string='I am a girl'
print(reverse1(string))print(reverse2(string))print(reverse3(string))print(reverse4(string))print(reverse5(string))
7、求两个数之间的质数及个数
defzhishu(num1,num2):
n=0
list=[]for i in range(num1,num2+1):for j in range(2,i):if(i%j==0):break
if(j==i-1):
n=n+1list.append(i)print("共有 %d 个质数,分别为:%s" %(n, list))
zhishu(101,200)
8、爬取某个页⾯并保存为html到本地
#header = {
#'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.235'}
for i inrange(len(l)):
file_name="D:/2019/python/"+l[i]+".html"quest.urlopen(url+l[i]).read()
with open(file_name,"wb") as file:
file.write(m)if __name__=="__main__":
url="tieba.baidu/f?ie=utf-8&kw="l_tieba=["python","java"]
tieba(url,l_tieba)
9、dict.has_key(key):如果键在字典⾥返回true,否则返回false。
dict.setdefault(key,default=None):key是要查的键值,default是默认键值;如果字典中包含有给定键,则返回该键对应的值,否则返回为该键设置的值
Python strip() ⽅法⽤于移除字符串头尾指定的字符(默认为空格或换⾏符)或字符序列。只能删除开头或结尾
importosdeffindFileDir(path):
fileDirList=os.listdir(path)for i infileDirList:
newpath=path+'/'+i
dict={}ifos.path.isdir(newpath):
findFileDir(newpath)elifos.path.isfile(newpath):if path indict:
<(path).append(i)#else:
#dict.setdefault(path,[]).append(i)
else:return 1
print("%s ⽬录下的⽂件包括:%s"%(dict.keys(),str(dict.values()).strip("[]")))if __name__=='__main__':
path='D:/2019'findFileDir(path)
10、冒泡排序:两两⽐较
选择排序:不断选出最⼩值,放进排序序列
#冒泡排序
defmaopao_sort(list,n):for i in range(0,n-1):for j in range(0,n-i-1):if list[j]>list[j+1]:
list[j+1],list[j]=list[j],list[j+1]returnlist#选择排序
defxuanze_sort(list,n):for i in range(0,n-1):
min=ifor j in range(i+1,n):if list[j]
min=j
list[i],list[min]=list[min],list[i] #下标i跟j互换位置
returnlistif __name__=='__main__':
list=[3,9,5,1,0,7]
n=len(list)#print(maopao_sort(list,n))
print(xuanze_sort(list,n))
11、创建UDP服务器基本流程
from socket import *
#1、创建套接字
udpsocket=socket(AF_INET,SOCK_DGRAM)#2、绑定服务器IP跟port
bindaddr={'IP地址','8080'}
udpsocket.bind(bindaddr)#3、接受数据
whileTrue:
vfrom(1024)print(recvData[0].decode("gb2312"))#4、关闭套接字
udpsocket.close()
创建UDP客户端基本流程
from socket import *
#1、创建套接字
udpsocket=socket(AF_INET,SOCK_DGRAM)#2、准备接收⽅地址
bindaddr={'',9090}
udpsocket.bind(bindaddr)
sendAddr={'IP地址','8080'}#3、从键盘获取数据
iapp修仙文字游戏源码
sendData=raw_input("请输⼊要发送数据:")#4、发送数据到指定电脑
udpsocket.de("gb2312"),sendAddr)
vfrom(1024)print(recvData[0].decode("gb2312"))print(recvData[1] [0].decode("gb2312"))print(recvData[1][1])#5、关闭套接字
udpsocket.close()
12、⽂件命名时候注意不要与模块名称重合
13、深拷贝与浅拷贝:excel函数乘法公式是哪个
(1)数字和字符串中的内存都指向同⼀个地址,所以深拷贝和浅拷贝对于他们⽽⾔都是⽆意义的
importcopy
a= 123333
print(id(a)) #输出变量a在内存的地址
b =aprint(id(b))
b= py(a) #浅拷贝python编程基础电子版
print(id(b))
c=copy.deepcopy(a) #深拷贝
print(id(c))
输出:
4056944
4056944
4056944
4056944
(2)对于字典和列表,浅拷贝和深拷贝的内存地址不⼀致,,浅拷贝只拷贝第⼀层地址;对于元组ID不变
dic={'key1':123,'key2':[123,456]}print(id(dic['key1']))print(id(dic['key2']))print(id(dic['key2'][0]))
new_py(dic)print("*",id(new_dic['key1']))print("*",id(new_dic['key2']))print("*",id(new_dic['key2'][0]))
输出:8791105520272前端面试项目中遇到的难点
37272968
8791105520272
* 8791105520272
* 37272968
* 8791105520272
深拷贝:将会把所有数据重新创建
dic={'key1':123,'key2':[123,456]}print(id(dic['key1']))print(id(dic['key2']))print(id(dic['key2'][0]))#深拷贝
new_dic=copy.deepcopy(dic)print("*",id(new_dic['key1']))print("*",id(new_dic['key2']))print("*",id(new_dic['key2'][0]))输出:8791099228816
35962376
8791099228816
* 8791099228816
* 36043464 #地址改变
* 8791099228816
数组词是什么词好啊(3)浅拷贝应⽤:在浅拷贝中 当改变拷贝对象的值 被拷贝对象的值也会随之改变
dic={'key1':123,'key2':[123,456]}print(dic['key2'][0])
new_py(dic)
new_dic['key2'][0]=789
print(dic['key2'][0])print(new_dic['key2'][0])
输出:123
789
789
(4)深拷贝的应⽤:当不想改变被拷贝的值时 应该使⽤深拷贝
dic={'key1':123,'key2':[123,456]}print(dic['key2'][0])
new_dic=copy.deepcopy(dic)
new_dic['key2'][0]=789
print(dic['key2'][0])print(new_dic['key2'][0])
输出:123
123
789
(5)区别:
引⽤:
浅拷贝:a 和 b 是⼀个独⽴的对象,但他们的⼦对象还是指向统⼀对象;
对于 不可 变类型 Number String Tuple,浅复制仅仅是地址指向,不会开辟新空间。
2、对于 可 变类型 List、Dictionary、Set,浅复制会开辟新的空间地址(仅仅是最顶层开辟了新的空间,⾥层的元素地址还是⼀样的),进⾏浅拷贝ftp bind 地址已在使用
3、浅拷贝后,改变原始对象中为可变类型的元素的值,会同时影响拷贝对象的;改变原始对象中为不可变类型的元素的值,只有原始类型受影响。 (操作拷贝对象对原始对象的也是同理)
深拷贝:a 和 b 完全拷贝了⽗对象及其⼦对象
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论