w

一、冒泡排序和选择排序
# 冒泡排序li = [34, 32, 67, 23, 12, 7, 4, 1] # 原始排序len1 = len(li) # 获取列表长度for i in range(0, len1):for j in range(1, len1 - i):if li[j - 1] > li[j]: # 比较前后两元素哪个大temp = li[j - 1] # 前一个大的放到临时暂存元素里li[j] = temp # 把临时暂存元素里的大元素放到后面print(li)
# 选择排序li = [34, 32, 67, 23, 12, 7, 4, 1] #原始排序for i in range(len(li)): #遍历所有元素的索引max = i #定义已经完成排序的序列的最后一个数的索引for j in range(i + 1, len(li)): #遍历没有排序过的所有元素的索引if li[j] > li[max]: #在未排序的序列里找最大的数max = j #保存未排序最大数的索引li[i], li[max] = li[max], li[i] #将找到的最大的数放到排好的序列末尾print(li) #打印已排序好的序列
二、
1.九九乘法表
for i in range(1,10):for j in range(1,i):print(f"{j}*{i}={i*j}",end=' ')print()
2.完全数
num = int(input('please input a perfect number:'))sum1 = 0factor1 = []for i in range(1, num):if num % i == 0:sum1 += ifactor1.append(i)factor1.append(num)print(f"all factors of {num} are {factor1}")if num == sum1:print(f'{num} is a perfect number')else:print(f'{num} is not a perfect number')
3.三位数
n = 0li = []for i in range(1,5):for j in range(1,5):for k in range(1,5):if i != j and j !=k and i != k:li.append(100*i+10*j+k)n+=1print(li,n)
#推导式li = [100 * i + 10 * j + k for i in range(1, 5) for j in range(1, 5) for k in range(1, 5) if i != j and j != k and i != k]print(li, len(li))
# 疏影横斜水清浅li = []book = []def dfs(step):if (step == 4):for i in range(3):print(li[i], end='')print()returnfor i in range(4):if book[i] == 0:li[step] = i + 1book[i] = 1dfs(step + 1)book[i] = 0returnif __name__ == '__main__':for i in range(4):li.append(0)book.append(0)dfs(0)
