python从入门到实践17章答案

前言

这里是《Python从入门到实践》的练习答案,如果有错误或者可以改进的地方欢迎在评论区指正


一、17-1 其他语言

只需要将 language=python 改为 javascript Ruby 等即可:

import requests

# 执行API调用并储存响应
url = 'https://api.github.com/search/repositories?q=language:javascript&sort=stars'
headers = {'Accept': 'application/vnd.github.v3+json'}
r = requests.get(url, headers=headers)
print(f"Status code: {r.status_code}")
# 将API响应赋给一个变量
response_dict = r.json()
print(f"Total repositoies: {response_dict['total_count']}")

# 探索有关仓库的信息
repo_dicts = response_dict['items']
print(f"Repositories returned: {len(repo_dicts)}")

print("\nSelected imformation about each repository:")
for repo_dict in repo_dicts:
    print(f"\nName: {repo_dict['name']}")
    print(f"Owner: {repo_dict['owner']['login']}")
    print(f"Stars: {repo_dict['stargazers_count']}")


二、17-2最活跃的讨论

 

from operator import itemgetter

import requests
from plotly import offline

# Make an API call and store the response.
url = 'https://hacker-news.firebaseio.com/v0/topstories.json'
r = requests.get(url)
print(f"Status code: {r.status_code}")

# Process information about each submission.
submission_ids = r.json()
submission_dicts = []
for submission_id in submission_ids[:10]:
    # Make a separate API call for each submission.
    url = f"https://hacker-news.firebaseio.com/v0/item/{submission_id}.json"
    r = requests.get(url)
    # print(f"id: {submission_id}\tstatus: {r.status_code}")
    response_dict = r.json()

    # Build a dictionary for each article.
    submission_dict = {
        'title': response_dict['title'],
        'hn_link': f"http://news.ycombinator.com/item?id={submission_id}",
        'comments': len(response_dict['kids']),
    }
    submission_dicts.append(submission_dict)

submission_dicts = sorted(submission_dicts, key=itemgetter('comments'),
                          reverse=True)

links, comments = [], []
for submission_dict in submission_dicts:
	sub_title = submission_dict['title']
	sub_url = submission_dict['hn_link']
	link = f"<a href='{sub_url}'>{sub_title}</a>"
	links.append(link)
	comments.append(submission_dict['comments'])


# 可视化
data = [{
	'type':'bar',
	'x':links,
	'y':comments,
	'marker':{
			'color':'rgb(100,150,100)',
			'line':{'width':1.5,'color':'rgb(25,25,25)'}
	},
	'opacity':0.6,
}]

my_layout = {
	'title':'the most active hacker news',
	'titlefont':{'size':30},
	'xaxis':{
		'title':'Titles',
		'titlefont':{'size':24},
		'tickfont':{'size':14},
	},
	'yaxis':{
		'title':'Comments',
		'titlefont':{'size':24},
		'tickfont':{'size':14},
	}
}
fig = {'data':data,'layout':my_layout}
offline.plot(fig,filename='hn_sub.html')

三、测试python_repos.py

第三问我不会,所以我引用了  飞翔的大玉米  的答案

第三问答案在此


四、进一步探索

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值