1、用户输入一个数字 (1)判断是几位数 (2)打印每一位数字及其重复的次数 (3)依次打印每一位数字,顺序个、十、百. . .位 num = input(">>>") for i in num: print(i, end=' ')
#打印重复次数的方法 (1)判断0-9的数字在字符串中出现的次数,每一次迭代都是用count,都是(O)问题 counter = [0]*10 for i in range(10): # n*10模式 counter[i] = num.count(str(i)) if counter[i]:
(2)迭代字符串本身的字符 # n*n模式 counter = [0]*10 for x in num: i = int(x) if counter[i] == 0: counter[i] = num.count(x)
(3)迭代字符串本身的字符 counter = [0]*10 # n模式 for x in num: i = int(x) counter[i] += 1
for i in range(len(counter)): if counter[i]: print("The count of {} is {}".format(i,counter[i]))
#倒序打印方法 (1)倒序打印1 for i in range(len(num),0,-1): print(num[i-1], end=' ') print() (2)倒序打印2 for i in reversed(num): print(i, end=' ') print() (3)负索引方式打印 for i in range(len(num)): print(num[-i-1], end=' ') print() 2、输入5个数字,打印每个数字的位数,将这些数字排序打印,要求升序打印 num = [] length = len(num) for i in range(5): num.append(int(input('{}: '.format(i)))) print("Number of digits:", len(str(num[i])))
#冒泡法 for i in range(length): flag = False for j in range(length-i-1): if num[j] > num[j+1]: num[j], num[j+1] = num[j+1], num[j] flag = True if not flag: break print(num)
3、权限判断 有一个API,要求权限同时具备A、B、C才能访问,用户权限是B、C、D,判断用户是否能够访问该API API集合为A,权限集合为P A - P = set() A >= P A & P = A 有一个API,要求权限具备A、B、C任意一项就可访问,用户权限是B、C、D,判断用户是否能够访问该API API集合为A,权限集合为P A & P != set()
4、一个总任务列表,存储所有任务。一个已完成的任务列表。找出为未完成的任务 总任务列表集合P,已完成的集合为A 则未完成的为:P - A
5、随机产生2组各10个数字的列表,如下要求: (1)每个数字取值范围[10,20] (2)统计20个数字中,一共有多少个不同的数字? (3)2组中,不重复的数字有几个?分别是几个? (4)2组中,重复的数字有几个?分别是几个? import random lst1 = [] lst2 = [] for i in range(10): lst1.append(radom.randrange(10,21)) lst2.append(radom.randrange(10,21)) print(lst1) print(lst2) #一共有多少个不同的数字 set(lst1) | set(lst2) #不重复的数字 set(lst1) ^ set(lst2) #重复的数字 set(lst1) & set(lst2)
五、简单选择排序
1、一元简单选择排序 lst = [1,3,6,5,2,4,7,9] length = len [lst] for i in range(length): maxindex = i for j in range(i+1,length): if lst[j] > lst[i]: maxindex = j if i != maxindex: lst[i], lst[maxindex] = lst[maxindex], lst[i] print(lst)
2、二元简单选择排序 lst = [1,3,6,5,2,4,7,9] length = len(lst) for i in range(length//2): # 两边一起排序,所以少一半 maxindex = i minindex = -i-1或 length-1-i minorigin = minindex for j in range(i+1,length-i): # 每次左右固定一个,就少比较1个 if lst[j] > lst[maxindex]: maxindex = j if lst[-j-1或 length-1-j] < lst[minindex]: minindex = -j-1 或 length-1-j if lst[maxindex] == lst[minindex]: # 元素全相同 break if i != maxindex: lst[i], lst[maxindex] = lst[maxindex], lst[i] # 如果最小值被交换过,要更新索引 if i == length + minindex 或 i == minindex: minindex = maxindex - length 或 maxindex # 最小值索引不同,但值相同就没必要交换了 if minorigin != minindex and lst[minorigin] != lst[minindex]: lst[minorigin], lst[minindex] = lst[minindex], lst[minorigin] print(lst)