关于Python编程从入门到实践16.2节程序运行出错的解析

关于Python编程从入门到实践16.2节程序运行出错的解析

16.2 制作交易收盘价走势图:JSON格式

这里整理了两个运行错误的解析,有错漏和不足的地方还请各位大佬体谅!

16.2.1下载收盘价数据

***现象:***在原封不动照抄书本上程序代码,并且仔细检查多遍之后程序仍然报错:

****urllib.error.URLError: <urlopen error [WinError 10054] 远程主机强迫关闭了一个现有的连接。>****

,只在根目录下创建一个空的文件(btc_close_2017_urllib.json)

原因分析:https://raw.githubusercontent.com/muxuezi/btc/master/btc_close_2017.json链接失效,即所需数据源代码网页连接不上;
在Github上创建一个新的数据链接https://raw.githubusercontent.com/muxuezi/btc/master/btc_close_2017.json,并将其替换入程序中,仍然出现原先报错,直接搜索新的链接,发现新链接也很不稳定,十次重复搜索中只有一次能连接上此网页。得出结果:Github的某种未知因素,导致raw数据的网页很不稳定!

16.2.6 收盘价均值

***现象:***在原封不动照抄书本上程序代码,并且仔细检查多遍之后程序仍然报错:

TypeError: object of type 'int' has no len()

原因分析:在程序中,x_unique是一个由数字组成的元组——(1,2,3,4,5,6,7,8,9,10,11),而数字是不能通过pygal转换为图表上的图文显示的,这时我们需要把数字转为字符串——[‘1’, ‘2’, ‘3’,……]。话不多说,直接奉上修改后的代码:

from itertools import groupby

def draw_line(x_data, y_data, title, y_legend):
    xy_map = []
    for x, y in groupby(sorted(zip(x_data, y_data)), key=lambda _: _[0]):
        y_list = [v for _, v in y]
        xy_map.append([x, sum(y_list) / len(y_list)])
    x_unique, y_mean = [*zip(*xy_map)]
    x_list = []
    for a in x_unique:
        b = '%d' % a
        x_list.append(b)
    line_chart = pygal.Line()
    line_chart.title = title
    line_chart.x_labels = x_list
    line_chart.add(y_legend, y_mean)
    line_chart.render_to_file(title+'.svg')
    return line_chart
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值