给定一个包含IPv4地址的列表,编写一个python程序来统计并打印出列表中A、B、C、D四类IP地址的数量
时间: 2024-09-20 12:15:53 浏览: 67
在Python中,我们可以先定义一个函数来确定一个IPv4地址属于哪一类,然后再遍历列表并计数。IPv4地址分为A、B、C、D四类,它们的划分依据前八位的取值范围。以下是实现这一功能的代码:
```python
def classify_ipv4(ip):
octets = [int(octet) for octet in ip.split('.')]
if octets[0] >= 1 and octets[0] <= 126:
return 'A'
elif octets[0] >= 128 and octets[0] <= 191:
return 'B'
elif octets[0] >= 192 and octets[0] <= 223:
return 'C'
elif octets[0] >= 224 and octets[0] <= 239:
return 'D' # D 类通常用于组播,但在 IPv4 中并不多见
else:
raise ValueError('Invalid IP address')
def count_ip_classes(ips):
counts = {'A': 0, 'B': 0, 'C': 0, 'D': 0}
for ip in ips:
try:
class_name = classify_ipv4(ip)
counts[class_name] += 1
except ValueError:
# 没有正确格式的IP地址跳过
pass
print(f"A类地址: {counts['A']}")
print(f"B类地址: {counts['B']}")
print(f"C类地址: {counts['C']}")
# 示例列表
ipv4_list = ['192.168.1.1', '172.16.1.1', '10.0.1.1', '10.1.1.1', '224.0.0.1'] # A、B、C类地址示例
count_ip_classes(ipv4_list)
```
这个程序首先计算给定IPv4地址的类别,然后在`count_ip_classes`函数中统计各类别地址的数量。注意D类地址在这里通常不常见,因为它们主要用于组播。
阅读全文