华为机试刷题
# 华为机试刷题
记录一些小问题和例题
# 华为机试刷题 记录一些小问题
import pytest
# 对于python中的字符串输入,可以写成S=input(),也可以写成S=input('')
@pytest.mark.parametrize("data", ['a'])
def test_in1str(data):
s = str(data)
li = s.split(' ')
if li is None:
print(-1)
else:
print(len(li[-1]))
# 字符串转ASCII码 ord() + 判断在字符内
@pytest.mark.parametrize("data", ['123ab你cde*()我'])
def test_ASCII(data):
s_list = []
for i in data:
if 0 < ord(i) < 127 and i not in s_list:
s_list.append(i)
print(i)
# set去重和排序 set()
@pytest.mark.parametrize("data", [[1, 3, 1, 4, 6, 8, 9, 2, 2]])
def test_set(data):
lists = set(data)
for i in lists:
print(i)
# 字符串的切片和赋值 [:8]
@pytest.mark.parametrize("data", ['13245', '1324657896546', '6666'])
def test_set(data):
li = []
while (len(data) > 8):
li.append(data[:8])
data = data[8:]
if len(data) < 8:
num = 8 - len(data)
sub = ''
for i in range(num):
sub += '0'
li.append((data + sub))
else:
li.append(data)
for i in li:
print(i)
# 进制转换 hex() 和 eval()
@pytest.mark.parametrize("data", [6888])
def test_hex(data):
print("\n" + hex(data))
print(eval(hex(data)))
# 求最小质因数,要细心计算,尤其是更新变量的步骤
@pytest.mark.parametrize("data", [68880])
def test_minFactor(data):
num = []
i = 2
while i <= data:
if data % i != 0:
i += 1
elif data % i == 0:
num.append(i)
num.append(" ")
data /= i
elif data == 1:
break
for i in num:
print(i, end="")
# 四舍五入 int()
@pytest.mark.parametrize("data", [68880.8])
def test_round(data):
print(int(data + 0.5))
# map函数是将int类型和数值进行映射,也就是进行类型转换,对于字典按值排序问题,直接使用sorted(dict.keys())
@pytest.mark.parametrize("data", ["16888064652555"])
def test_mapSort(data):
dict1 = {}
for i in range(int(data)):
key, value = map(int, str(data).split(), i)
if key in dict1.keys():
dict1[key] += value
else:
dict1[key] = value
dict2 = sorted(dict1.keys())
for i in dict2:
print(i, dict1[i])
# 从右往左返回整数
@pytest.mark.parametrize("data", [1688806465255])
def test_intNum(data):
if data != None:
num_list = []
data_new = str(data)[::-1]
for i in data_new:
if int(i) not in num_list:
num_list.append(int(i))
num = 0
length = len(num_list) - 1
for i in num_list:
num += (i * (10 ** length))
length -= 1
print(num)
else:
print('INPUT NONE')
# 逆序输出 [::-1]
@pytest.mark.parametrize("data", [16888064650025500])
def test_inverse(data):
if data != None:
data_new = str(data)[::-1]
print(data_new)
else:
print('INPUT NONE')
# 对于元素值都是字符串的列表一样可以排序,使用sort()函数
@pytest.mark.parametrize("data", [['16', '88', 'D', '806', 'OO', '4650025500']])
def test_SORT(data):
data.sort();
for i in data:
print(i)
# 将十进制转换成二进制函数,使用bin()函数
@pytest.mark.parametrize("data", [16, 88, 806, 100, 4650025500])
def test_SORT(data):
count = 0
for i in bin(data):
if i == '1':
count += 1
print(count)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
编辑 (opens new window)
上次更新: 2021/08/26, 14:16:32