python高级练习题:统计域名【难度:3级】:
故事
您有一个日志文件中的域名列表,指示计算机访问这些站点的次数.但是,该列表也显示了子域,但您只想查看主站点和访问总数.例如,6.clients-channel.google.com
和apis.google.com
应该统计为google.com
.
任务
编写一个带有两个参数的函数count_domains()
:
*domains
是一个域名列表,显示每个域的访问请求数,当您从日志中复制它时
- 和可选的
min_hits
,它定义了出现在输出列表上的最小访问次数.如果没有给出,请将其视为"0".
返回准备打印的字符串,以递减顺序显示具有访问总数的站点.
- 产出要求:*
- 输出应显示括号中访问总数的站点,
- 网站应该只有2个级别(例如
ebay.com
),除了.co.xx
和.com.xx
类型的域名,它们应该有3个级别(例如amazon.co.jp
), - 列表应按递减顺序排序,
- 如果两个站点具有相同的访问次数,请按字母顺序对其进行排序,
- 条目应以换行符分隔(
\ n
)
示例
domains_list ='''\
* .amazon.co.uk 89
* 名为.doubleclick.net 139
* .fbcdn.net 212
* 带.in-addr.arpa 384
* .l.google.com 317
1.client-channel.google.com 110
6.client-channel.google.com 45
a.root-servers.net 1059
apis.google.com 43
clients4.google.com 71
clients6.google.com 81
connect.facebook.net 68
edge-mqtt.facebook.com 56
graph.facebook.com 150
mail.google.com 128
mqtt-mini.facebook.com 47
ssl.google-analytics.com 398
star-mini.c10r.facebook.com 46
staticxx.facebook.com 48
www.facebook.com 178
www.google.com 162
www.google-analytics.com 127
www.googleapis.com 87 ''"
count_domains(domains_list,500)='''\
root-servers.net(1059)
google.com(957)
facebook.com(525)
google-analytics.com(525)'''
我的其他练习题
如果你喜欢这个kata,请尝试我的其他练习题! ?
* 欢迎翻译!*
编程目标:
def count_domains(domains, min_hits):
pass
测试样例:
# domains_list is the same as in the example
Test.assert_equals(count_domains(domains_list, 500), '''\
root-servers.net (1059)
google.com (957)
facebook.com (525)
google-analytics.com (525)''')
Test.assert_equals(count_domains(domains_list, 1000), 'root-servers.net (1059)')