2014-04-06 51 views
1
import urllib 
from xml.etree.ElementTree import parse 
candidates = ['4198', '4168'] 
daves_latitude = 41.98062 

def distance(lat1, lat2): 
    'Return distance in miles between two lats' 
    return 69*abs(lat1 - lat2) 

def monitor(): 
    u = urllib.urlopen('http://ctabustracker.com/bustime/map/getBusesForRoute.jsp?route=22') 
    doc = parse(u) 
    for bus in doc.findall('bus'): 
     busid = bus.findtext('id') 
     if busid in candidates: 
      lat = float(bus.findtext('lat')) 
      dis = distance(lat, daves_latitude) 
      print busid, dis, 'miles' 

    print '-'*10 

import time 
while True: 
    monitor() 
    time.sleep(60) 

我根据现实生活中的问题做了这个练习。戴夫在公交车上忘记了自己的案子,他想知道其中一辆公交车正在载着遗失的案件。我理解的代码,但我不能找出第一功能和第二条之间的关系,更好地理解这个python代码

def distance(lat1, lat2): 'Return distance in miles between two lats' return 69*abs(lat1 - lat2)

我明白监视器()做而不是距离之间的关系()和显示器()以及它们如何相互作用以显示结果,请问您能否赐教?我是一个n00b。

由于

回答

1

纬度的每度约为69 miles(111公里)的分开。所以,lat1是巴士纬度,第二个lat2是戴夫纬度。通过请求monitor中的此网址,您获得了公交的宽度,然后使用distance函数获得了以英里为单位的距离。

+0

好吧,现在就明白了。我还不明白的事情:什么是“abs”?以及为什么当我们创建距离()时,我们分配参数lat1和lat2?难道它不是相同的写lat和daves_latitude吗? –

+1

是的,你对第二个参数是正确的 - 在这种情况下,它始终是相同的值。对于“abs”这样的基本功能,在提出任何问题之前,我会建议使用内置帮助功能 - 只需在python控制台中键入«help('abs')» –

0

abs()是一个数字的绝对值。为Python 3

^小环节存在的工作原理相同的蟒蛇2.

如果您寻找的absolute value <意义 - 链接有显示你的视频。