[第一个问题代码]
# 这个题目是把一些IP地址写到一个文本中,然后统计文本中IP地址出现的次数的排序
import random
with open("ip.txt","w+") as fp:
for i in range(12000):
num1 = random.randint(1, 255)
num2 = "172.25.254." + str(num1) + "\n"
fp.write(num2)
# 将光标移动到文本的开头
fp.seek(0)
dict1 = {}
for ip in fp:
# 去除首尾的\n符号
ip = ip.strip()
dict1[ip] = dict1.get(ip,0) + 1
print("下面这些ip地址中出现频率前十的是:")
print(sorted(dict1.items(), key=lambda x: x[1], reverse=True)[:10])
[第二个问题代码]
import string
with open('Walden.txt', 'r',encoding="utf-8-sig") as file: # 换成"utf-8-sig"避免了"\ufeff"(字节序)的出现
article = file.read().lower()
# 找出这些特殊字符,!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
_punctuation = string.punctuation
no_pun_text = article
for pun in _punctuation:
no_pun_text = no_pun_text.replace(pun,'')
print(no_pun_text)
records = dict()
# 方法通过指定分隔符对字符串进行分割并返回一个列表,默认分隔符为空字符,包括空格,换行(\n), 制表符(\t)等
for word in no_pun_text.split():
records[word] = records.get(word, 0) + 1 # 若是找到了一样的word就让这个键值+1
# 把字典的键值转化为一个列表,然后根据列表的每一个元素下标为"1"的值的大小进行排序,这个函数出来就是列表,reverse=True,是降序
items = sorted(records.items(), key=lambda x: x[1], reverse=True)