使用python写脚本之练习三
需求:
生成100个MAC地址并写入文件中,MAC地址前6位(16进制)为
01-AF-3B
01-AF-3B
01-AF-3B-xx
01-AF-3B-xx-xx
01-AF-3B-xx-xx-xx
题目是在其他博主的文章上看见的,下面会分享python写的和shell写的版本,带注释。
- 原作者的版本
原作者的版本没有很多注释,我复制在这里,加了一些详细的注释,方便大家理解。(这篇感觉已经没有什么新的东西需要理解,都在前面两道练习题运用过了)
import string
import random
#随机生成一个MAC地址的函数
def creat_mac():
MAC= '01-AF-3B'
# 生成16进制的数
hex_num = string.hexdigits
# 0123456789abcdefABCDEF
for i in range(3):
# 从16进制字符串中随机选出2个数来(返回值为列表)['a', 'd']
n = random.sample(hex_num,2)
# 拼接列表中的内容,将小写字母转换为大写-AD
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= creat_mac()
print(mac)
# 每生成一个MAC地址,存入文件(注意换行)
f.write(mac+'\n')
main()
- 我的python版本
(我在写的时候忽略mac地址前面三段要一致的要求,思路是一样的,就不作修改了。)
import string
from random import randint
"""
生成100个MAC地址并写入文件中
"""
elements = list(string.hexdigits)
fileName = "macs.txt"
def genMac():
char = ""
for i in range(0,6):
for j in range(0,2):
num=randint(0,15)
char += str(elements[num])
char += "-"
return char.rstrip("-")
with open(fileName,'a') as macFile:
for k in range(0,100):
mac = genMac()
macFile.write(mac+"\n")
- 我的shell版本
#!/usr/bin/env bash
: <<!
生成100个MAC地址并写入文件中
!
elements=({0..9} {A..F})
genTwoCharacters() {
char=''
for i in {1..2}; do
num=$(($RANDOM % 16))
char=${char}${elements[${num}]}
done
}
genMac(){
mac=''
for j in {1..6};do
genTwoCharacters
[[ ${j} -lt 6 ]] && char=${char}"-" || char=${char}
mac=${mac}${char}
done
}
for z in {1..100};do
genMac
echo ${mac} >> macs.txt
done
以上就是本次练习的解决方案,思路不唯一,欢迎交流。