编程说明:有一个IP地址和主机名对照表文件host.dat,按如下要求编写程序:
(1)、读取这个文件,自定义字典方式,实现键盘输入IP地址,后可以查询主机名,如果输入地址错误或不存在,显示“无对应信息”,可以重复查询,输入‘end’结束查询。
(2)、这个文件中的主机名为“pc姓名”的方式,表示某人使用该IP地址,请找出所有主机名重复的项,并将它们对应的IP地址写入到result.txt的文件中。(事先不知道重复的项是什么,但知道重复项的值是唯一的。)
host.dat内容如下:
192.168.10.11/24:pc总经理
192.168.10.12/24:pc经理助理
192.168.10.13/24:pc办公室主任
192.168.10.14/24:pc销售部经理
192.168.10.15/24:pc生产部经理
192.168.10.16/24:pc软件部经理
192.168.10.17/24:pc硬件部经理
192.168.10.18/24:pc人力资源部经理
192.168.10.19/24:pc库房主任
192.168.10.20/24:pc保卫处主任
192.168.10.21/24:pc王大力
192.168.10.22/24:pc吕达
192.168.10.23/24:pc刘贺
192.168.10.24/24:pc
192.168.10.25/24:pc樊中华
192.168.10.26/24:pc刘胤伯
192.168.10.27/24:pc
192.168.10.28/24:pc白小松
192.168.10.29/24:pc臧天鹏
192.168.10.30/24:pc刘峰
192.168.10.31/24:pc张小松
192.168.10.32/24:pc金悦
192.168.10.33/24:pc
192.168.10.34/24:pc申亚奇
192.168.10.35/24:pc谢阿迪
192.168.10.36/24:pc贺飞林
192.168.10.37/24:pc何晓敏
192.168.10.38/24:pc
192.168.10.39/24:pc梁俊平
192.168.10.40/24:pc
192.168.10.41/24:pc谢平
192.168.10.42/24:pc
192.168.10.43/24:pc王玉
192.168.10.44/24:pc温丽民
192.168.10.45/24:pc梁建华
192.168.10.46/24:pc
192.168.10.47/24:pc张甜
192.168.10.48/24:pc
192.168.10.49/24:pc孟庆亮
192.168.10.50/24:pc
192.168.10.51/24:pc张志刚
192.168.10.52/24:pc贾圣涵
192.168.10.53/24:pc李朋飞
192.168.10.54/24:pc
192.168.10.55/24:pc
192.168.10.56/24:pc任娇娇
192.168.10.57/24:pc王康佳
192.168.10.58/24:pc王龙微
192.168.10.59/24:pc
192.168.10.60/24:pc
print('查找IP,并筛选重复项')
f = open('host.dat', 'r')
flist = f.readlines()
f.close()
lista = []
dict_name = {}
for i in flist: #字典转换
tlist = i[:-1].split(':')
lista.append(tlist[1]) #主机名放入列表中
dict_name[tlist[0]]=tlist[1]
while 1: #进行输入查询
n = input('请输入查询的IP地址(格式如:192.168.1.1/24):')
if n == 'end':
break
for i in dict_name:
if n == i:
print(dict_name[i])
break
else:
print('无对应信息')
list_result = []
list_values = []
for k, v in dict_name.items(): #对values进行统计相同的提取出来
if lista.count(v) > 1 and v not in list_values:
list_values.append(v)
f = open('result.txt', 'w')
for i in dict_name: #把相同主机名与其对应的IP写入到文件
if dict_name[i] in list_values:
list_result.append(i)
f.write(i + ':' + dict_name[i] + '\n')
f.close()```