<每日一题>题目27:插入排序(假)】的更多相关文章

''' 插入排序:假设元素左侧全部有序,找到自己的位置插入 ''' import random import cProfile def insert_sort(nums): for i in range(1,len(nums)): for j in range(i,0,-1): if nums[j-1] > nums[j]: nums[j-1],nums[j] = nums[j],nums[j-1] return nums nums = [random.randint(0, 10000) for…
#项目:生成随机的测验试卷文件 import random #资料库 capitals = {'北京市':'京','上海市':'沪','天津市':'津','重庆市':'渝','河北省':'冀','山西省':'晋','辽宁省':'辽','黑龙江省':'黑','吉林省':'吉','江苏省':'苏','浙江省':'浙','安徽省':'皖','福建省':'闽','江西省':'赣','山东省':'鲁','河南省':'豫','湖北省':'鄂','湖南省':'湘','广东省':'粤','海南省':'琼','四…
题目: def add(n,i): return n+i def test(): for i in range(4): yield i g = test() for n in [1,10,5]: g = (add(n,i) for i in g) print(list(g)) 分析: 我们知道生成器函数和生成器表达式都很"懒",只要你不找它取值它就不执行. 函数从上到下开始执行,一直到13行都没开始,13行list()函数找g要值,9-10行的生成器表达式才开始执行,我们将9-10行拆…
题目: def demo(): for i in range(4): yield i g = demo() g1 = (i for i in g ) g2 = (i for i in g1) print(list(g1)) print(list(g2)) 分析: 按照生成器表达式和生成器函数不取值不执行的做法 一直到10行list(g1) 找g1取值, 10行list()找7行g1取值 g1找5行g 取值 g找1行生成器函数取值 ,得到g = (0,1,2,3) g1 = (0,1,2,3) l…
''' 拷贝的问题 引用:无论怎么变都一起变 浅拷贝:只拷贝父对象,不会拷贝父对象中的子对象 深拷贝:完全拷贝,重新划分内存空间 ''' 具体如下图: 题目: #求a.b.c.d的值 import copy a = [1, 2, 3, 4, ['a', 'b']] b = a c = copy.copy(a) d = copy.deepcopy(a) a.append(5) a[4].append('c') 运行结果:…
#21.cookie和session的区别 ''' 1.cookie数据存放在客户的浏览器上,session数据存放在服务器上 2.cookie不是很安全,可以通过分析本地cookie组成伪造cookie,session更安全 3.session会在一定时间保存在服务器上.当访问增多,会比较占用服务器性能,考虑减轻服务器性能,应当使用cookie 4.单个cookie保存数据不能超过4K,很多浏览器都限制一个站定最多保存20个cookie 建议:将登陆信息等重要信息保存在session 其他信息…
题目: 解答: 第一个表创建: create table class( cid int not null auto_increment primary key, caption char(20) not null )engine=innodb default charset=utf8; 插入数据: insert into class(caption) values('三年二班'); insert into class(caption) values('一年三班'); insert into cl…
def select_d(list,d): # list = sorted(list) sum = {} for i in list: if i+d in list: sum[i] = i+d return sum list = [1,2,3,4,5,6,7,8,9,0,1213,12,31,2,13,21,21,221,11,10] print(select_d(list,2)) 运行结果: {1: 3, 2: 4, 3: 5, 4: 6, 5: 7, 6: 8, 7: 9, 8: 10, 9…
def log(func): def inner(*args,**kwargs): with open('log',mode='a',encoding='utf-8') as f: #以追加的方式打开 f.write(func.__name__+'\n') #写人调用函数的函数名,以\n结尾 ret = func(*args,**kwargs) return ret return inner @log def func_1(): print('执行一次func_1') @log def func…
这里做个最简单的账号密码验证,主要为了实现装饰器同时对多个函数起作用 FLAG = False #加一个变量防止多次登录验证 def wrapper(f): def inner(*args,**kwargs): '''登录程序''' global FLAG #将FLAG变量设置成全局变量 if FLAG: ret = f(*args, **kwargs) return ret else: username = input('username:') password = input('passwo…
#版本1.0,最基本的注册登录'''1.注册,将账号和密码分别写在不同的文档里面2.登录,分别从账户文档和密码文档进行读取并登录''' #注册 Identity = input("请输入您想要注册的账号:") Password = input("请输入您想要注册的密码:") print("恭喜您注册成功") with open('id_ZC',mode='w',encoding='utf-8') as f1,open('pw_ZC',mode='…
''' 分析: 1.列表解析:迭代机制的一种应用 语法: [expression for iter_val in iterable] [expression for iter_val in iterable if cond_expr] 2.zip函数:以可迭代的对象作为参数,将对应元素打包成一个元组,形如:zip([a,b],[c,d])→[(a,c),(b,d)] dict函数:可以以可迭代方式创建字典,形如:dict([(a,b),(c,d)])→{a:b,c:d} ''' A0 = dic…
''' 分析: 1.知道文件夹名称(假设是形如:E:\\software\\Notepad++),很显然可以通过OS模块去求 2.OS.listdir(sPath),列出文件夹内所有的文件和文件夹,以列表的形式返回(可以迭代) 3.将sPath的路径和求得的文件夹或文件的名字拼接,if判断该路径是否为文件夹,是则递归调用原函数,不是则写入列表 思考: 如果只知道文件夹名字(形如:Notepad++),怎么求得该文件夹的绝对路径,以及该文件夹中所有文件的路径 ''' def print_direc…
#有五个数字:1.2.3.4.5,能组成多少个互不相同且无重复数字的四位数?各是多少? e =[] for a in range(1,6): for b in range(1,6): for c in range(1,6): for d in range(1,6): if a!=b and a!=c and a!=d and b!=c and b!=d and c!=d: e.append(str(a)+str(b)+str(c)+str(d)) print("组成数量:%d" %le…
#51.一行代码实现1-100的和 sum(range(1,101)) #52.如何在一个函数内部修改全局变量 ''' 利用global ''' #53.字典如何删除和合并2个字典 ''' del dic['name'] #删除 dic.update(dic2) #合并 ''' #54.谈下python的GIL ''' 全局解释器锁,同一进程中多线程同时只有一个线程能霸占python解释器(加了GIL),其他线程无法进行,该线程结束后才能运行. 多进程可以有多个python解释器,可以实现多个进…
''' 选择排序:选择最小的,以此类推 ''' import random import cProfile def select_Sort(nums): for i in range(len(nums)-1): for j in range(i+1,len(nums)): if nums[i] > nums[j]: # max = nums[i] # nums[i] = nums[j] # nums[j] = max #python有更好的写法 nums[i],nums[j] = nums[j]…
''' 快速排序:分而治之,一分为二进行排序 ''' import cProfile import random def quick_sort(nums): if len(nums) <= 1: return nums s_nums = [] l_nums = [] #小于nums[0]放左边 for i in nums[1:]: if i < nums[0]: s_nums.append(i) else: # #大于nums[0]放右边 l_nums.append(i) #nums[0:1]…
''' 冒泡排序:比较相邻元素,顺序错误就交换顺序 ''' import random import cProfile def bubble_Sort(nums): for i in range(len(nums)-1): for j in range(len(nums)-1-i): if nums[j] > nums[j+1]: nums[j],nums[j+1] = nums[j+1],nums[j] return nums nums = [random.randint(0,10000) f…
''' 桶排序:最快最简单的排序 缺点:最占内存 类型:分布式排序 ''' import cProfile import random def bucketSort(nums): #选出最大的数 max_num = max(nums) #创建一个元素全是0的列表,当桶 bucket = [0]*(max_num+1) #把所有元素放入桶中,即把对应元素个数加1 for i in nums: bucket[i] = bucket[i] + 1 sort_nums = [] #取出桶中的元素 for…
#31.分布式爬虫主要解决什么问题? ''' ip 带宽 CPU IO ''' #32.网络传输层 ''' 应用层—http ftp dns nfs 传输层—tcp --udp 网络层—ip icmp igmp 链路层—data link 物理层—media ''' #33.redis和mysql的区别 ''' readis 是内存数据库,数据保存在内存中,速度快. mysql 是关系型数据库 ,持久化存储 ,存放在磁盘里面 ,功能强大.检索的话,会涉及到一定的 IO ,数据访问也就慢. '''…
#11.编写程序,输入一个自然数,输出它的二进制.八进制.十六进制表示形式 Num = input("请输入任性自然数:") Num = eval(Num) print("二进制:",bin(Num)) print("八进制:",oct(Num)) print("十六进制:",hex(Num)) #12.简述迭代器和生成器的区别 ''' 迭代器:类中有next和iter方法,可以使用for循环(例:字符串(string),列表…
# 将下面的函数按照执行效率高低排序.它们都接受由0至1之间的数字构成的列表作为输入.这个列表可以很长.一个输入列表的示例如下:[random.random() for i in range(100000)].你如何证明自己的答案是正确的. def f1(lIn): l1 = sorted(lIn) l2 = [i for i in l1 if i<0.5] return [i*i for i in l2] def f2(lIn): l1 = [i for i in lIn if i<0.5]…
class Node(object): def __init__(self,sName): self._lChildren = [] self.sName = sName def __repr__(self): return "<Node '{}'>".format(self.sName) def append(self,*args,**kwargs): self._lChildren.append(*args,**kwargs) def print_all_1(self)…
class A(object): def go(self): print("go A go!") def stop(self): print("stop A stop!") def pause(self): raise Exception("Not Implemented") class B(A): def go(self): super().go() print( "go B go!") class C(A): def go…
#1.python程序中__name__的作用是什么? __name__这个系统变量用来表示程序的运行方式. 如果程序在当前膜快运行,__name__的名称就是__main__, 如果不在(被调用),则显示为导入模块的名称. 扩展:常常这样写if __name__ == "__main__":来表名这是整个工程开始运行的入口. 效果:如果直接从这个文件执行,if为Turn,可以运行if后面的程序 如果被调用,if为False,不执行if后面的程序 #2.表达式int('11111',2…
''' 分析: python赋值是通过指针来进行的. 很显然第一.三.四次调用都指向同一个列表,并未完成清空, 第二次调用只是指向了另一个列表,也未完成清空,很显然结果是累计的 结果: [0, 1] [3, 2, 1, 0, 1, 4] [3, 2, 1, 0, 1] [0, 1, 0, 1, 4] [0, 1, 0, 1, 4, 0, 1, 4, 9] ''' def f(x,l=[]): for i in range(x): l.append(i*i) print(id(l),l) f(2)…
def func(x): m,n = 0,1 i = 0 while i < x: yield m m,n = n,m+n i += 1 fib = [] get_func = func(100) for i in get_func: fib.append(i) print(fib) 运行结果:…
num= input("请输入您要求质数的范围(以逗号结尾):") down,up = num.split(',',1) down,up = int(down),int(up) if down < 2: print("输入有误,请重新输入!") num = input("请输入您要求质数的范围(以逗号结尾):") down, up = num.split(',', 1) down, up = int(down), int(up) a = […
import os #备份文件的路径 file_address = input("输入需要备份文件所在的路径:") os.chdir(file_address) #备份文件命名 file_name = input("请输入要备份文件的名字:") if os.path.isfile(file_name): new_file_name = file_name + ".backup" old_file = open(file_name,"r&…
''' # 学生管理系统v1.0 # 添加学生的信息 # 删除学生的信息 # 修改学生的信息 # 查看学生的信息 #遍历学生的信息 #退出系统 ''' import json #1 显示操作功能 def showinfo(): print('*'*40) print("\t 欢迎使用学生管理系统V1.0") print("1.添加学生的信息") print("2.删除学生的信息") print("3.修改学生的信息") pri…