练习一
生成100个MAC地址并写入文件中,MAC地址前6位(16进制)为01-AF-3B
01-AF-3B-xx-xx-xx
-xx
01-AF-3B-xx
-xx
01-AF-3B-xx-xx
-xx
01-AF-3B-xx-xx-xx
import random
import string
# print(string.hexdigits)
def create_mac():
mac = '01-AF-3B'
# 生成16进制的数
hex_num = string.hexdigits
for i in range(3):
# 从16进制字符串中随机选择两个数字
# 返回值是一个列表
n = random.sample(hex_num,2)
# 拼接列表的内容 将小写的字母转换成大写的字母
sn = '-' + ''.join(n).upper()
mac += sn
return mac
# 主函数 随机生成100 mac地址
def main():
with open('mac.txt','w') as f:
for i in range(100):
mac = create_mac()
print(mac)
f.write(mac + '\n')
main()
可见生成100个地址:
练习二:
京东二面编程题
- 生成一个大文件ips.txt,要求1200行,每行随机为172.25.254.0/24段的ip;
- 读取ips.txt文件统计这个文件中ip出现频率排前10的ip;
代码如下:
import random
def create_ip_file(filename):
ips = ['172.25.254.' + str(i) for i in range(1,255)]
print(ips)
with open(filename,'a+') as f:
for count in range(1200):
print(random.sample(ips,1))
f.write(random.sample(ips,1)[0] + '\n')
#create_ip_file('ips.txt')
def sorted_ip(filename,count=10):
ips_dict = dict()
with open(filename) as f:
for ip in f:
if ip in ips_dict:
ips_dict[ip] += 1
else:
ips_dict[ip] = 1
sorted_ip = sorted(ips_dict.items(),
key=lambda x:x[1],reverse=True)[:count]
return sorted_ip
print(sorted_ip('ips.txt',20))
结果如下:
可见为1200个ip地址: