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

Crossin的编程教室

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

【Python 第44课】 查天气(2)

  [复制链接]

0

主题

0

好友

4

积分

新手上路

Rank: 1

发表于 2014-2-6 15:12:38 |显示全部楼层
feicien 发表于 2013-7-24 09:03

这样也行
import urllib.request
from city import city

exit=False

while not exit:
    cityname=input("你想查询哪个城市的天气?输入q退出\n")
    if cityname=="q" or cityname=="Q":
        print("退出!")
        exit=True
    else:
        citycode=city.get(cityname)
        if citycode:
            url=("http://www.weather.com.cn/data/cityinfo/%s.html"%citycode)
            web=urllib.request.urlopen(url)
            c=web.read().decode("utf-8")
            print(c)
文档:urllib.request.urlopen(url, data=None[, timeout ], *, cafile=None, capath=None, cadefault=False)
Open the URL url, which can be either a string or a Request object
这个网页不需要转换,直接read输出就行
回复

使用道具 举报

1

主题

0

好友

98

积分

注册会员

Rank: 2

发表于 2014-3-16 23:35:59 |显示全部楼层
  1. while qw==True:
  2.     if cityname=='q' or cityname=='Q':
  3.         print'退出'
  4.         qw=False
  5.     else:
  6.         if citycode:
  7.             url='http://www.weather.com.cn/data/cityinfo/%s.html' % citycode
  8.             content=urllib2.urlopen(url).read()
  9.             print content
  10.         else:
  11.             print'sorry'
复制代码
while语句哪里不对吗?死循环了
你想查哪个城市的天气?
北京
{"weatherinfo":{"city":"北京","cityid":"101010100","temp1":"5℃","temp2":"19℃","weather":"多云转晴","img1":"n1.gif","img2":"d0.gif","ptime":"18:00"}}
{"weatherinfo":{"city":"北京","cityid":"101010100","temp1":"5℃","temp2":"19℃","weather":"多云转晴","img1":"n1.gif","img2":"d0.gif","ptime":"18:00"}}
{"weatherinfo":{"city":"北京","cityid":"101010100","temp1":"5℃","temp2":"19℃","weather":"多云转晴","img1":"n1.gif","img2":"d0.gif","ptime":"18:00"}}
{"weatherinfo":{"city":"北京","cityid":"101010100","temp1":"5℃","temp2":"19℃","weather":"多云转晴","img1":"n1.gif","img2":"d0.gif","ptime":"18:00"}}
{"weatherinfo":{"city":"北京","cityid":"101010100","temp1":"5℃","temp2":"19℃","weather":"多云转晴","img1":"n1.gif","img2":"d0.gif","ptime":"18:00"}}
{"weatherinfo":{"city":"北京","cityid":"101010100","temp1":"5℃","temp2":"19℃","weather":"多云转晴","img1":"n1.gif","img2":"d0.gif","ptime":"18:00"}}
{"weatherinfo":{"city":"北京","cityid":"101010100","temp1":"5℃","temp2":"19℃","weather":"多云转晴","img1":"n1.gif","img2":"d0.gif","ptime":"18:00"}}
{"weatherinfo":{"city":"北京","cityid":"101010100","temp1":"5℃","temp2":"19℃","weather":"多云转晴","img1":"n1.gif","img2":"d0.gif","ptime":"18:00"}}
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2014-3-17 10:18:43 |显示全部楼层
508490571 发表于 2014-3-16 23:35
while语句哪里不对吗?死循环了
你想查哪个城市的天气?
北京

你的while本身确实是个死循环,在while没有修改退出条件的地方。可以修改的那条语句一直不会执行到。
除非你一开始输入的就是q
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

1

主题

0

好友

98

积分

注册会员

Rank: 2

发表于 2014-3-17 11:06:16 |显示全部楼层
crossin先生 发表于 2014-3-17 10:18
你的while本身确实是个死循环,在while没有修改退出条件的地方。可以修改的那条语句一直不会执行到。
除 ...

确实是  非常感谢
回复

使用道具 举报

0

主题

0

好友

12

积分

新手上路

Rank: 1

发表于 2014-3-29 16:18:21 |显示全部楼层
我在PyDev里使用urllib2.urlopen报出AttributeError: 'module' object has no attribute 'urlopen'错误,但在Shell里却正常,不知是何原因。

PyDev里报错

PyDev里报错

Shell截图.jpg

回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2014-3-30 21:39:55 |显示全部楼层
keamin 发表于 2014-3-29 16:18
我在PyDev里使用urllib2.urlopen报出AttributeError: 'module' object has no attribute 'urlopen'错误,但 ...

你是不是把你的代码文件命名成了 urllib2.py ?
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

12

积分

新手上路

Rank: 1

发表于 2014-3-30 21:51:52 |显示全部楼层
crossin先生 发表于 2014-3-30 21:39
你是不是把你的代码文件命名成了 urllib2.py ?


谢谢
回复

使用道具 举报

0

主题

0

好友

25

积分

新手上路

Rank: 1

发表于 2014-4-2 18:51:31 |显示全部楼层
本帖最后由 fptxyy 于 2014-4-3 10:47 编辑

老师您好,我用的是python 2.7.5,
代码复制的,
from city import city
cityname = raw_input('你想查哪个城市的天气?\n')
citycode = city.get(cityname)
if citycode:
   url = 'http://www.weather.com.cn/data/cityinfo/%s.html' % citycode
   content = urllib2.urlopen(url).read()
   print content

运行后,不显示天气,
>>> ======= RESTART =========
>>>
你想查哪个城市的天气?
北京
>>>

请问您
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2014-4-3 13:42:41 |显示全部楼层
fptxyy 发表于 2014-4-2 18:51
老师您好,我用的是python 2.7.5,
代码复制的,
from city import city

应该是字符编码问题
你如果是windows,把city.py第一行的utf-8改为cp936
具体原因这几课的相关讨论帖子里有,好像在查天气(4)里
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

25

积分

新手上路

Rank: 1

发表于 2014-4-3 15:07:26 |显示全部楼层
crossin先生 发表于 2014-4-3 13:42
应该是字符编码问题
你如果是windows,把city.py第一行的utf-8改为cp936
具体原因这几课的相关讨论帖子里 ...

太感激了,老师!
正是city.py文件的问题,改过来就好了。
根本没想到,我还一直在源代码上打转。(送花)
回复

使用道具 举报

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

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

GMT+8, 2024-3-29 16:14 , Processed in 0.018676 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部