#!/usr/bin/python3
# Test1.定义一个函数,该函数可接收一个list作为参数,该函数使用直接选择排序对list排序
# 直接排序:重复的访问序列(len-1)次,每次选出一个最小或者最大的数字并放在截取序列的首位(与首位的值做比较),数列的访问比较范围依次减少:每次从i遍历到到len-1(i累加)
def pureSort(list):
lens=len(list)
for i in range(lens-1):
minPos=i # 此时的i为当前访问序列的首位,即本轮需要选出最小的数字
for j in range(i,lens-1): #从当前i遍历到lens-1(下面j+1相当于遍历到lens),每次和minPos比较序列的值,若小于minPos,则交换索引
if list[j+1]<list[minPos]:
minPos=j+1
list[minPos],list[i]=list[i],list[minPos] # 每轮比较结束交换最小值
list1=[99,2,1,3,4,10,5,9,7]
pureSort(list1)
print(list1)
# Test2.定义一个函数,该函数可接收一个list作为参数,该函数使用冒泡排序对list排序
# 冒泡排序:重复的走访序列(len-1)次,依次比较两个相邻元素的大小(len-i-1),如果顺序错误就将他们调换过来。i为走访轮数
k=0
def bubbleSort(list):
length=len(list)
global k
for i in range(length-1):
for j in range(length-i-1):
k=k+1
if list[j]>list[j+1]:
list[j],list[j+1]=list[j+1],list[j]
return list
list2=[99,2,1,3,4,10,3,11]
print(bubbleSort(list2))
print(k)
# Test3:定义一个 isleap(year)函数,该函数可判断year是否为闰年。若是闰年,则返回 True;否,则返回False
def isleap(year):
if year % 100 == 0:# 整除100的数字能整除400则是闰年
if year % 400 ==0:
return True
elif year % 4 == 0:# 不整除100的整除4则是闰年
return True
print(isleap(2004))
print(isleap(2003))
# Test4:定义一个函数,该函数返回参数字符串中包含多少个数字、多少个英文字母、多少个空白字符、多少个其他字符
def count_str_char(str):
x,y,z,k =0,0,0,0
for i in str:
if i.isdigit():# 判断数字
x+=1
elif i.encode('utf-8').isalpha():# 判断字母
y+=1
elif i.isspace():# 判断空白
k+=1
else:
k+=1
return [x,y,k,z]
print(count_str_char('qwe12 ..'))
# Test5:定义一个函数,该函数返回1~n的立方和,即求1+2*2*2+3*3*3+…+n*n*n
def countCube(n):
sum=0
for i in range(n+1):
sum+=i*i*i
return sum
print(countCube(1))
# Test6:定义一个函数,该函数返回n!的阶乘
def sumFactorial1(n):
if n==0:
return 1
else:
return n*sumFactorial1(n-1)
print(sumFactorial1(3))
# 方法二
def sumFactorial2(n):
if n==0:
return 1
else:
multiply=1
for i in range(1,n+1):
multiply=multiply*i
return multiply
print(sumFactorial2(3))
# Test6+:n!(阶乘)和
def sumFactorial(n):
if n==0:
return 1
else:
sum=0
for i in range(1,n+1):
multiply = 1
for j in range(1,i+1):
multiply = multiply*j
print('multiply', multiply)
sum+=multiply
return sum
print(sumFactorial(3))
# Test7:定义一个函数,该函数可接收一个list作为参数,该函数用于去除list中重复的元素
def removeMulitplyStr(list):
temp=[]
for i in list:
if i not in temp:
temp.append(i)
return temp
print(removeMulitplyStr([1,1,2,2,'a','a','b','b',1]))
# Test8:定义一个函数,该函数返回一个包含n个不重复的O~100之间整数的元组
import random
def randomInt(n):
tempList=[]
for i in range(n):
while True:
num=int(random.randint(0,100))
if num not in tempList:
tempList.append(num)
break
return tuple(tempList)
print(randomInt(10))
# Test9:定义一个函数,该函数返回一个包含n个不重复的大写字母的元组
def randomStr(n):
templeList=[]
for i in range(n):
while True:
chars= chr(random.randint(65, 91))
if chars not in templeList:
templeList.append(chars)
break
return templeList
print(randomStr(10))
# Test10:定义一个函数,其中n表示输入n行n列的矩阵(数的方阵).在输出时,先输出 n行n列的矩阵,再输出该矩阵的转置形式
temp=[]
def matrix(n):
for i in range(n):
for j in range(n):
print("%2d"%(i*n+j+1),end=' ')# 进制
print()
for i in range(n):
for j in range(n):
print("%2d"%(j*n+i+1), end=' ')# 进制
print()
matrix(4)
# 方法二
def matrix1(n,function):
list=[]
for i in range(n):
list.append([0]*n)
def origin():
for i in range(n):
for j in range(n):
pass
list[i][j]=i*n+j+1
printList()
def zhuanzhi():
for i in range(n):
for j in range(n):
pass
list[i][j] = j*n+i+1
printList()
def printList():
for i in range(n):
for j in range(n):
print("%2d"%(list[i][j]),end=" ")
print()
if function==0:
return origin
elif function==1:
return zhuanzhi
matrix1(4,0)()
matrix1(4,1)()