首页 新闻 会员 周边 捐助

最近在学习python,找个网上的代码抄了一段代码,不是这里报错就是那里报错

0
悬赏园豆:30 [已解决问题] 解决于 2016-10-30 13:52

coding:utf-8

import urllib2
import json
def get_ip_information(ip):
url='http://api.map.baidu.com/highacciploc/v1?qcip='

+ip+'&qterm=pc&ak="w1GfyqmY0sjWHvhXaZ35NfXmpRzEXiGh"&coord=bd09ll&extensions=3'
poiss=''
request = urllib2.Request(url)
page = urllib2.urlopen(request, timeout=10)
data_json = page.read()
data_dic = json.loads(data_json)
if(data_dic.has_key("content")):
content=data_dic["content"]
address_component=content["address_component"]
formatted_address=content["formatted_address"]
print "该IP地址的具体位置为:"
print address_component["country"]
print formatted_address
if(content.has_key("pois")):
print "该IP地址附近POI信息如下:"
pois = content["pois"]
for index in range(len(pois)):
pois_name = pois[index]["name"]
pois_address = pois[index]["address"]
print pois_name, pois_address
else:
print 'IP地址定位失败!!!'
if name == 'main':
get_ip_information('183.55.116.95')

上面是代码,第五行那个URL变量非要缩进,在网上搜说一般上一行是冒号结尾的下一行就要缩进,但是缩进之后好像第六行就不认识那个URL变量了,一直报错name 'url' is not defined,来个会python的大神帮小弟解答一下,感谢,为了看的更直观我上传的图片

坐墙等红杏的主页 坐墙等红杏 | 初学一级 | 园豆:136
提问于:2016-10-28 22:22
< >
分享
最佳答案
0

def 定义一个函数,函数体内的语句,都要相对于def这一行有缩进。你的if name=='main'这句前面的整体要缩进。

收获园豆:30
授之以渔 | 小虾三级 |园豆:1112 | 2016-10-29 09:07

嗯,刚搞清楚这个问题,现在修改了,没报错了,但是出不来结果了,下面是代码

coding:utf-8

import urllib2
import json
def get_ip_information(ip):
url='http://api.map.baidu.com/highacciploc/v1?qcip='+ip+'&qterm=pc&ak="w1GfyqmY0sjWHvhXaZ35NfXmpRzEXiGh"&coord=bd09ll&extensions=3'
poiss = ''
request = urllib2.Request(url)
page = urllib2.urlopen(request, timeout=10)
data_json = page.read()
data_dic = json.loads(data_json)
if(data_dic.has_key("content")):
content=data_dic["content"]
address_component=content["address_component"]
formatted_address=content["formatted_address"]
print "该IP地址的具体位置为:"
print address_component["country"]
print formatted_address
if(content.has_key("pois")):
print "该IP地址附近POI信息如下:"
pois = content["pois"]
for index in range(len(pois)):
pois_name = pois[index]["name"]
pois_address = pois[index]["address"]
pois_name, pois_address
else:
print 'IP地址定位失败!!!'
if name == 'main':
get_ip_information('183.55.116.95')

坐墙等红杏 | 园豆:136 (初学一级) | 2016-10-29 09:16

@杨亦风: 打印'IP地址定位失败!!!'了?那只是你url访问问题

授之以渔 | 园豆:1112 (小虾三级) | 2016-10-29 09:27

@授之以渔: 你这。。。我说的出不来结果不是这个,要是输出打印IP地址失败,我也知道是URL问题但是它出的结果是程序已退出的提示Process finished with exit code 0就是这个

坐墙等红杏 | 园豆:136 (初学一级) | 2016-10-29 11:23

@杨亦风: 代码中最后两行改为

if __name__=='__main__':
  get_ip_information('183.55.116.95')

而且if这一行不能缩进

授之以渔 | 园豆:1112 (小虾三级) | 2016-10-29 15:09

@授之以渔:
最后两行我是这么写的
if name == 'main':
get_ip_information('183.55.116.95')

坐墙等红杏 | 园豆:136 (初学一级) | 2016-10-29 15:33

@授之以渔:
哎,发上来缩进就消失了,反正我是你说的那样写的

坐墙等红杏 | 园豆:136 (初学一级) | 2016-10-29 15:34

@杨亦风: 如果只有“”提示Process finished with exit code 0“”这个提示,没有其他的,说明没有执行get_ip_information('183.55.116.95')函数。get_ip_information('183.55.116.95')函数是在if后面调用的。

  你如果if name == 'main':是这么写的,缩进还正常的话,会提示name没有定义的错误的。

  你python版本说一下。还有这个脚本是直接运行,还是外部调用的。

授之以渔 | 园豆:1112 (小虾三级) | 2016-10-29 15:54

@授之以渔: 版本是2.7,是直接运行的,我上传一下截图

坐墙等红杏 | 园豆:136 (初学一级) | 2016-10-29 17:00

@杨亦风: 明显不对嘛。

1、最后一个else是和第一个if对应的,只缩进一次。

2、最后一个if不用缩进

授之以渔 | 园豆:1112 (小虾三级) | 2016-10-29 17:32

@授之以渔:

是这样么?

坐墙等红杏 | 园豆:136 (初学一级) | 2016-10-29 18:09

@杨亦风: 最后一个if不是get_ip_information('183.55.116.95')函数内部的。不需要缩进。你这个还是有缩进啊

授之以渔 | 园豆:1112 (小虾三级) | 2016-10-29 18:11

@授之以渔: 哦,对,突然想起视频里面说的这个是main函数

坐墙等红杏 | 园豆:136 (初学一级) | 2016-10-29 18:37

@授之以渔: 谢谢你帮我解答啊,你这个ID起的还挺符合你的,分给你了

坐墙等红杏 | 园豆:136 (初学一级) | 2016-10-30 13:52
其他回答(1)
0

你的缩进有问题

CodeHsu | 园豆:5668 (大侠五级) | 2016-10-28 22:56

我估计是这个问题,但是到底是哪里的缩进有问题呢,python竟然是个对缩进敏感的语言,真奇葩

支持(0) 反对(0) 坐墙等红杏 | 园豆:136 (初学一级) | 2016-10-29 08:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册