设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: crossin先生
打印 上一主题 下一主题

【Python 第46课】 查天气(4)

  [复制链接]

0

主题

0

好友

200

积分

中级会员

Rank: 3Rank: 3

楼主
发表于 2015-12-10 21:40:35 |显示全部楼层
我是佩佩学姐 发表于 2015-11-12 20:46
非常感谢Cossin先生指点。作为一个从未编程的人,调试完查天气的四节,相当吃力但是收获很多。(推荐用IDLE ...

请教一下佩佩学姐,因为你跟我的学习时间比较近....
第46课的链接都失效了,推荐文章的链接也失效了,你怎么完成这个程序的....
回复

使用道具 举报

0

主题

0

好友

200

积分

中级会员

Rank: 3Rank: 3

沙发
发表于 2015-12-12 12:00:01 |显示全部楼层
本帖最后由 周末晒被子 于 2015-12-12 13:20 编辑
crossin先生 发表于 2015-12-11 21:55
这个链接要去找新的
查天气1最上面给了两个博客,不过我现在没验证最新的还能不能正常 ...

嗯,昨天找到了一个新的来源:

中国和世界天气预报__API服务_API服务_API Store http://apistore.baidu.com/apiworks/servicedetail/478.html

但是这个网站直接给出了各城市代码,不用自己去找...有点烦没锻炼到。
我是直接在城市代码列表的那个网页的源文件里,复制了所有城市代码的。
昨天也成功写出了查天气的程序,但是因为这个返回的json信息啊,太多了,Crossin先生的课程数据,只有两层字典,这个如果想得到tmp,要进入返回数据的第5层....
贴一个吧:

百度来源的查天气程序.zip

913 Bytes, 下载次数: 9

欢迎指正~谢谢

回复

使用道具 举报

0

主题

0

好友

200

积分

中级会员

Rank: 3Rank: 3

板凳
发表于 2015-12-12 12:41:37 |显示全部楼层
本帖最后由 周末晒被子 于 2015-12-12 13:02 编辑

在完整代码的第25行,
明明可以写成这样:
line = '      %s : %s,\n '%(name,code)
为什么要写成这样呢:
line = "    '%s': '%s',\n" % (name, code)
都是<type 'str'>嘛。
回复

使用道具 举报

0

主题

0

好友

200

积分

中级会员

Rank: 3Rank: 3

地板
发表于 2015-12-12 13:33:06 |显示全部楼层
本帖最后由 周末晒被子 于 2015-12-12 13:51 编辑

在第26行,result += line,for循环结束之后的 result 应该是一个列表了吧?一个有着很多如 "    '%s': '%s',\n" % (name, code) 的字符串的列表了吧?

然后是第28行,result += '}',这行代码是什么意思呢?
回复

使用道具 举报

0

主题

0

好友

200

积分

中级会员

Rank: 3Rank: 3

5#
发表于 2015-12-12 13:47:18 |显示全部楼层
本帖最后由 周末晒被子 于 2015-12-12 13:50 编辑

我试着复制了先生的完整代码运行了一下,竟然还可以print出城市代码!为什么,因为我复制 http://m.weather.com.cn/data5/city.xml 进浏览器:

This page contains the following errors:
error on line 1 at column 1: Document is empty
Below is a rendering of the page up to the first error.
但是程序却成功运行,表明程序访问网站成功了...为什么?
回复

使用道具 举报

0

主题

0

好友

200

积分

中级会员

Rank: 3Rank: 3

6#
发表于 2015-12-12 14:03:34 |显示全部楼层
完整代码的第8行:for p in provinces:
我改成这样是可以输出的:for p in provinces[:1]:
但是改成这样子就立刻报错:for p in provinces[0]: 或者 for p in provinces[1]:
for p in provinces[:1]: 和 1for p in provinces[0]:  P不是读取一样的东西吗——只读取了 01|北京 嘛。但是一个可运行一个却报错。
回复

使用道具 举报

0

主题

0

好友

200

积分

中级会员

Rank: 3Rank: 3

7#
发表于 2015-12-13 22:07:46 |显示全部楼层
crossin先生 发表于 2015-12-12 22:23
[:1]取出来的是一个list,有0或1个元素。[0]就是直接取第一个元素,如果没有就报错,并不是list,所以也 ...

噢!就是说 for...in... 要跟list,一旦跟一个元素的话,for p in provinces[n](无论n是多少)就会报错。
回复

使用道具 举报

0

主题

0

好友

200

积分

中级会员

Rank: 3Rank: 3

8#
发表于 2015-12-14 15:02:12 |显示全部楼层
crossin先生 发表于 2015-12-13 23:19
是的

那个,先生没有看51~54楼的内容吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-5-3 05:11 , Processed in 0.019492 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部