1.列表排序defque6():#6.输入三个整数x,y,z组成一个列表,请输出n个数从小到大。#程序分析:list有sort方法,所以把他们放到一个list里就行了。li=np.random.randint(-100,100,size=10)#就地转换li=li.tolist()#使用sort()结果li_sort=sorted(li,reverse=False)print('使用排序方法,重新排列结果:{}'.format(li_sort))#不要用排序方法,自己写排序方法,#冒泡排序defbubbleSort(m):m=m.copy()fortimeinrange(1、len(m)):forindexinrange(len(m)-time):ifm[index]>m[index+1]:m[index],m[index+1]=m[index+1],m[index]returnm#选择排序defselectSort(m):m=m.copy()forseat_Linrange(len(m)-1):forseat_Rinrange(seat_L+1,len(m)):ifm[seat_L]>m[seat_R]:m[seat_L],m[seat_R]=m[seat_R],m[seat_L]returnm#插入排序1(内部写成函数):definsertSort_1(m):result=[]#将单个元素k插入列表lidefto_insert(li,k):#标识符tab=False#找到插入位置#循环次数至少要大于长度list+1,而None也占一位(空列表),即,认为扑克牌末尾有一张“空牌”foriinrange(len(li)+1):#修改标识符,标记'遍历后的下一个循环',即与'空卡'进行比较ifi==(len(li)):tab=True#如果在li[-1]比较完成(含)之前找到位置,即从左到右比较扑克ifnottabandk
defmethod4(d):d=d.copy()key=d.keys()val=d.values()data=list(zip(key,val))#方法4-1result1={}foriinrange(len(data)):result1[data[i][1]]=data[i][0]#方法4-2result2=dict(zip(val,key))returnresult1,result2print('新列表动态赋值方法:{}'.format(method1(d)))print('生成器方法:{}'.format(method2(d)))print('按键查找值的方法:{}'.format(method3(d)))print('动态赋值列表转字典的方法:{}'.format(method4(d)[0]))print('Directlist-to-dictionarymethod:{}'.format(method4(d)[1]))#que1()3.删除列表中的重复元素#遇到问题没人回答?小编创建了一个Python学习交流群:531509025#寻找志同道合的小伙伴,互相帮助,群里还有不错的视频学习教程和PDF电子书!#3.删除重复元素list=[1,2,5,4,1,5,6,8,0,2,5]a=np.random.randint(-100,100,size=10)a=a.tolist()def方法1(a):a=a.copy()a=set(a)returnadefmethod2(a):b=a.copy()c=0foriinrange(len(a)-1):ifb[i+c]inb[:i+c]+b[i+c+1:]:b.pop(i+c)c-=1returnbprint('设置方法:',method1(a))print('遍历方法:',method2(a))4.输出素数defprime(end):prime_list=[]ifend<=1:print('mustbegreaterthan1')else:#prime_list.append(2)foriinrange(2,end+1,1):count=0ifi==2:ifi%2!=0:prime_list.append(2)else:forminrange(2,i):#可以是可整除,则跳出循环if(i%m)==0:#print(i,m)break#否则count+1else:count+=1#判断是否除完(0/n)ifcount==i-2:素数列表。append(i)print(count,i,m)返回(prime_list)num=int(input('你想从2输出多少?'))print(prime(num))5.判断是年月日defque3():#3.输入某年月日,判断哪天是年月日?:#闰年判断函数defjudge_leap(num):date=[31,28,31,30,31,30,31,31,30,31,30,31]#(四年而不是一百年)或者四百年飞跃if(num%4==0andnum%100!=0)ornum%400==0:date[1]=29returndate#格式转换date=(input('请在format例如:"2018.02.12":'))date_list=(list(map(int,(date.split('.')))))#遍历计算天数day=date_list[2]foriinrange(date_list[1]):day+=judge_leap(date_list[0])[i]print('{}月{}是{}年的{}日\n'.format(date_list[1],date_list[2],date_list[0],day))#que3()6.猜数字#重新猜数字importrandomdefjudge_num(num,num_random):ifnum>num_random:print('太大了')return1elifnum>--')print('【{}】chancesleavenow:\n'.format(frequency-i+1))whileresultandi!=frequency:#猜数字num=int(input('Pleaseguessaint_number:\n'))result=judge_num(num,num_random)i+=17.十六进制转换#任何基数到十进制defother_to_decimal(hex,num):#整数转换为列表,num_str=str(num)#map()将List对象中的元素(list类型)转换为集合(set)类型num_list=list(map(int,num_str))#List倒序num_list=num_list[::-1]print(list(map(int,num_str)))#获取位数digit=len(num_list)num_decimal=0#累加iinrange(digit):numi=num_list[i]#print(numi,hex**i)num_decimal+=numi*(hex**i)#累加每一位的幂指数returnnum_decimal#小数到任意基数defdecimal_to_other(hex,num):#得到位数digit=len(str(num))num_hex=[]quotient=1#除法,余数为包含在列表中num_hexwhilequotient:#取余取商quotient=num//hexremainder=num%hex#print(quotient,remainder)#余数包含在列表中num_hex.append(remainder)#Thequotient使下一个循环num=quotient#List倒序可以通过slice和sort()函数实现num_hex=num_hex[::-1]#num_hex.sort(reverse=True)#如果超过十进制,则使用ASCII码converttoletterforiinrange(len(num_hex)):ifnum_hex[i]>9:num_hex[i]=chr(int(num_hex[i])+87)#print(num_hex)#将列表转换为字符串结果=(''.join('%s'%mforminnum_hex))returnresultType=bool(input("请输入1将十进制转换为任何基数,请输入0\n将任何基数转换为十进制"))如果类型:hex=int(input("你需要从十进制转换成多少个基数?请输入一个正整数\n"))num=int(input("要转换的数是:"))print("转换结果是:",decimal_to_other(hex,num))else:hex=int(input("你需要多少换算成小数?请输入一个正整数\n年份"))num=int(input("需要要转换的数为:"))print("转换结果为:",other_to_decimal(hex,num))