请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: crossin先生

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

  [复制链接]

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

发表于 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

发表于 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|北京 嘛。但是一个可运行一个却报错。
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2015-12-12 22:23:42 |显示全部楼层
周末晒被子 发表于 2015-12-12 14:03
完整代码的第8行:for p in provinces:
我改成这样是可以输出的:for p in provinces[:1]:
但是改成这样子 ...

[:1]取出来的是一个list,有0或1个元素。[0]就是直接取第一个元素,如果没有就报错,并不是list,所以也不能  for...in
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

200

积分

中级会员

Rank: 3Rank: 3

发表于 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是多少)就会报错。
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2015-12-13 23:19:29 |显示全部楼层
周末晒被子 发表于 2015-12-13 22:07
噢!就是说 for...in... 要跟list,一旦跟一个元素的话,for p in provinces[n](无论n是多少)就会报错 ...

是的
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

200

积分

中级会员

Rank: 3Rank: 3

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

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

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2015-12-14 23:41:54 |显示全部楼层
周末晒被子 发表于 2015-12-14 15:02
那个,先生没有看51~54楼的内容吗?

他应该是为了拼出一个json格式的字符串
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

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

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

GMT+8, 2024-5-30 20:50 , Processed in 0.017795 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部