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的大神帮小弟解答一下,感谢,为了看的更直观我上传的图片
def 定义一个函数,函数体内的语句,都要相对于def这一行有缩进。你的if name=='main'这句前面的整体要缩进。
嗯,刚搞清楚这个问题,现在修改了,没报错了,但是出不来结果了,下面是代码
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')
@杨亦风: 打印'IP地址定位失败!!!'了?那只是你url访问问题
@授之以渔: 你这。。。我说的出不来结果不是这个,要是输出打印IP地址失败,我也知道是URL问题但是它出的结果是程序已退出的提示Process finished with exit code 0就是这个
@杨亦风: 代码中最后两行改为
if __name__=='__main__':
get_ip_information('183.55.116.95')
而且if这一行不能缩进
@授之以渔:
最后两行我是这么写的
if name == 'main':
get_ip_information('183.55.116.95')
@授之以渔:
哎,发上来缩进就消失了,反正我是你说的那样写的
@杨亦风: 如果只有“”提示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版本说一下。还有这个脚本是直接运行,还是外部调用的。
@授之以渔: 版本是2.7,是直接运行的,我上传一下截图
@杨亦风: 明显不对嘛。
1、最后一个else是和第一个if对应的,只缩进一次。
2、最后一个if不用缩进
@授之以渔:
是这样么?
@杨亦风: 最后一个if不是get_ip_information('183.55.116.95')函数内部的。不需要缩进。你这个还是有缩进啊
@授之以渔: 哦,对,突然想起视频里面说的这个是main函数
@授之以渔: 谢谢你帮我解答啊,你这个ID起的还挺符合你的,分给你了
你的缩进有问题
我估计是这个问题,但是到底是哪里的缩进有问题呢,python竟然是个对缩进敏感的语言,真奇葩