1 def que6():
2 # 6.输入三个整数x, y, z,形成一个列表,请把这n个数由小到大输出。
3 # 程序分析:列表有sort方法,所以把他们组成列表即可。
4 li = np.random.randint(-100, 100, size=10)
5 # 就地转化
6 li = li.tolist()
7 # 用sort()结果
8 li_sort = sorted(li, reverse = False)
9 print(\'用sort方法,重新排列结果:{}\'.format(li_sort))
10
11 # 不用sort方法,自己写排序方法做,
12
13 # 冒泡排序
14 def bubbleSort(m):
15 m = m.copy()
16 for time in range(1, len(m)):
17 for index in range(len(m) - time):
18 if m[index] > m[index+1]:
19 m[index], m[index+1] = m[index+1] , m[index]
20 return m
21
22 # 选择排序
23 def selectSort(m):
24 m = m.copy()
25 for seat_L in range(len(m)-1):
26 for seat_R in range(seat_L+1, len(m)):
27 if m[seat_L] > m[seat_R]:
28 m[seat_L], m[seat_R] = m[seat_R], m[seat_L]
29 return m
30
31 # 插入排序1(内部写成函数):
32 def insertSort_1(m):
33 result = []
34
35 # 单个元素k插入列表li
36 def to_insert(li, k):
37 # 标识符
38 tab = False
39
40 # 寻找插入位置
41 # 循环次数应该至少大于列表长度+1,None也占一位(空列表),即认为扑克牌最末尾还有一张‘空牌’
42 for i in range(len(li) + 1):
43 # 修改标识符,标志‘遍历完后的下一个循环’,即在和‘空牌’比较
44 if i == (len(li)):
45 tab = True
46
47 # 如果在对li[-1]比较完成(包含)之前,且寻找到位置,即把扑克从左往右比较一遍
48 if not tab and k < li[i]:
49 li.insert(i, k)
50 break
51 # 如果遍历完成,多循环一次,即和‘空牌’不需要比较,直接把牌替换掉‘空牌’
52 if tab:
53 li.append(k)
54 return li
55 # 遍历列表
56 # result = result[:1]
57 for length in range(len(m)):
58 result = to_insert(result, m[length])
59
60 # print(result,m[length])
61 return result
62
63 # 插入排序2(直接嵌套循环):
64 def insertSort2(m):
65 m = m.copy()
66 result = m[:1]
67 for index_choose in range(1, len(m)):
68 # 手上已经有index_choose张牌,比较第index_choose+1张牌则append
69 # 逐个比对手上的牌,如果都对比了一遍,则加到最后
70 for index_insert in range(len(result) + 1):
71 print(result, index_insert,\'\n\',m, index_choose,\'\n\n\')
72 if index_insert != index_choose and m[index_choose] < result[index_insert] :
73 result.insert(index_insert, m[index_choose])
74 break
75 if index_insert == index_choose:
76 result.append(m[index_choose])
77 # print(result, m[index_choose])
78 return result
79
80
81
82 # print(li)
83 print(\'插入排序:\',insertSort3(li))
84 print(\'选择排序:\',selectSort(li))
85 print(\'冒泡排序:\',bubbleSort(li))
86 que6()
1 # 1. 调换元素.\
2 def que1():
3 d={1:"one",2:"two"}
4
5 # 方法1 --- 动态赋值
6 def method1(d):
7 d = d.copy()
8 result = {}
9 for k,v in d.items():
10 result[v] = k
11 return result
12
13 # 方法2 --- 生成器
14 def method2(d):
15 d = d.copy()
16 result = {v:k for k,v in d.items()}
17 return result
18
19 # 方法3 --- 由值寻找键
20 def method3(d):
21 d = d.copy()
22 # 由键寻找值
23 def match(dic, b):
24 return [k for k,v in dic.items() if v == b]
25 # 先生成key-None,再赋值
26 result = {}
27 result = result.fromkeys(d.values())
28 for k in result.keys():
29 result[k] = match(d, k)[0]
30 return result
31
32 # 方法4 --- 列表转字典 < 直接转换/动态赋值 >
33 def method4(d):
34 d = d.copy()
35 key = d.keys()
36 val = d.values()
37 data = list(zip(key, val))
38
39 # 方法4-1
40 result1 = {}
41 for i in range(len(data)):
42 result1[data[i][1]] = data[i][0]
43
44 # 方法4-2
45 result2 = dict(zip(val, key))
46
47 return result1, result2
48
49 print(\'新列表动态赋值方法:{}\'.format(method1(d)))
50 print(\'生成器方法:{}\'.format(method2(d)))
51 print(\'由键寻值方法:{}\'.format(method3(d)))
52 print(\'动态赋值列表转字典方法:{}\'.format(method4(d)[0]))
53 print(\'直接列表转字典方法:{}\'.format(method4(d)[1]))
54 # que1()
1 # 3. 删除重复元素list =[1,2,5,4,1,5,6,8,0,2,5]
2 a = np.random.randint(-100, 100, size=10)
3 a = a.tolist()
4
5 def method1(a):
6 a = a.copy()
7 a = set(a)
8 return a
9 def method2(a):
10 b = a.copy()
11 c = 0
12 for i in range(len(a)-1):
13 if b[i+c] in b[:i+c]+b[i+c+1:]:
14 b.pop(i+c)
15 c -= 1
16 return b
17 print(\'集合法:\',method1(a))
18 print(\'遍历法:\',method2(a))
1 def prime(end):
2
3 prime_list = []
4 if end <= 1:
5 print(\'必须大于1\')
6 else:
7 # prime_list.append(2)
8 for i in range(2, end+1, 1):
9 count = 0
10 if i == 2:
11 if i%2 != 0:
12 prime_list.append(2)
13 else:
14 for m in range(2, i):
15 # 能够整除,则跳出循环
16 if (i % m) == 0:
17 # print(i, m)
18 break
19 # 否则计数+1
20 else:
21 count += 1
22 # 判断是否整除完成(0/n)
23 if count == i - 2:
24 prime_list.append(i)
25
26 print(count, i, m)
27
28 return (prime_list)
29
30 num = int(input(\'想输出2到多少?\'))
31 print(prime(num))
1 def que3():
2 # 3.输入某年某月某日,判断这一天是这一年的第几天?:
3 # 闰年判断函数
4 def judge_leap(num):
5 date = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
6 # (四年一闰 and not百年) or 四百年闰
7 if (num % 4 == 0 and num % 100 != 0) or num % 400 ==0:
8 date[1] =29
9 return date
10
11 # 格式转换
12 date = (input(\'请输入一个日期,格式如:“2018.02.12”:\'))
13 date_list = (list(map(int, (date.split(\'.\')))))
14 # 遍历计算天数
15 day = date_list[2]
16 for i in range(date_list[1]):
17 day += judge_leap(date_list[0])[i]
18 print(\'{}月{}日是{}年的第{}天\n\'.format(date_list[1], date_list[2], date_list[0], day))
19 # que3()
1 # 重新猜数字
2 import random
3
4 def judge_num(num, num_random):
5 if num > num_random:
6 print(\'It\\'s too big\')
7 return 1
8 elif num < num_random:
9 print(\'It\\'s too small\')
10 return 1
11 else:
12 print("Congratulation!! That\\' right!")
13 return 0
14
15 # 产生随机数
16 num_start = int(input(\'Digital lower limit of guess number:\n\'))
17 num_end = int(input(\'Digital upper limit of guess number:\n\'))
18 num_random = random.randint(num_start, num_end)
19
20 # 参数初始化
21 result = 1 # 判断结果
22 i = 0 # 循环次数
23 frequency = 3 # 循环限制次数
24
25 # 提示总猜测次数、剩余次数
26 print(\'WARNING: You have【{}】 chances you guess \'.format(frequency), end = \'--&&>>--\')
27 print(\'【{}】 chances left now:\n\'.format(frequency - i +1))
28
29 while result and i != frequency:
30 # 猜数字
31 num = int(input(\'Please guess a int_number:\n\'))
32 result = judge_num(num, num_random)
33 i += 1
1 # 任意进制转十进制
2 def other_to_decimal(hex, num):
3 # 整型转化为列表,
4 num_str = str(num)
5 # map()将List对象中的元素(list类型)转化为集合(set)类型
6 num_list = list(map(int, num_str))
7 # 列表反序
8 num_list = num_list[::-1]
9 print(list(map(int, num_str)))
10
11 # 获取数字位数
12 digit = len(num_list)
13 num_decimal = 0
14
15 # 累加
16 for i in range(digit):
17 numi = num_list[i]
18 # print(numi, hex**i)
19 num_decimal += numi*(hex**i) # 对每一位数的幂指数累加
20
21 return num_decimal
22
23 # 十进制转任意进制
24 def decimal_to_other(hex, num):
25 # 获取数字位数
26 digit = len(str(num))
27
28 num_hex = []
29 quotient = 1
30
31 # 相除,余数计入列表num_hex
32 while quotient:
33 # 取余和取商
34 quotient = num // hex
35 remainder = num % hex
36 # print(quotient, remainder)
37 # 余数计入列表
38 num_hex.append(remainder)
39 # 商做下一次循环
40 num = quotient
41
42 # 列表反序,通过切片和sort()函数可以实现
43 num_hex = num_hex[::-1]
44 # num_hex.sort(reverse=True)
45
46 # 如果超过十进制,用ASCII码转化为字母
47 for i in range(len(num_hex)):
48 if num_hex[i] > 9:
49 num_hex[i] = chr(int(num_hex[i])+87)
50 # print(num_hex)
51
52 # 列表转化为字符串
53 result = (\'\'.join(\'%s\' %m for m in num_hex))
54 return result
55
56
57 Type = bool(input("十进制转任意进制请输入1,任意进制转十进制请输入0\n"))
58 if Type:
59 hex = int(input("需要把十进制转换为多少进制?请输入正整数\n"))
60 num = int(input("需要转换的数字是:"))
61 print("换算结果是:", decimal_to_other(hex, num))
62 else:
63 hex = int(input("需要把多少进制转换为十进制?请输入正整数\n年"))
64 num = int(input("需要转换的数字是:"))
65 print("换算结果是:", other_to_decimal(hex, num))