2014-04-06 80 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 <意義 - 鏈接有顯示你的視頻。