Skocz do zawartości


zmiana kodu w pythonie

python programowanie

3 odpowiedzi w tym temacie

#1 nowy11111

    Nowy na forum

  • Użytkownicy
  • 1 Postów:

Napisano nie, 24 lis 2013 - 00:29

Nie bede ukrywal ze jestem bardzo poczatkujacy jesli w kwestii programowania. Natknalem sie na takie zadanko:

Chicago Transit Authority (CTA) prowadzi stronę (http://ctabustracker.com), na której można śledzić autobusy miejskie (większość z nich ma GPS). Ta strona ma też nieoficjalne API, którym można dostać się do trasy autobusu w XMLu.

Można użyć URLa http://ctabustracker...Predictions.jsp aby dowiedzieć się jak długo przyjdzie człowiekowi czekać na przystanku na pewien autobus. Trzeba jedynie podać numer trasy (np. 49) i id przystanku (np. 8207).
Można to w prosty sposób przetestować:

>>> import urllib
>>> fields = { 'stop' : '8207',
'route':'49'}
>>> parms = urllib.urlencode(fields)
>>> u = urllib.urlopen("http://ctabustracker.com/bustime/map/getStopPredictions.jsp?"+parms)
>>> resp = u.read()
>>> print resp
... zobacz co wróci ...
W pliku bustrack.py napisz funkcję bus_prediction(route,stop) która przyjmuje jako argumenty nr trasy i id przystanku, zadaje zapytanie do powyżej opisanej strony i zwraca pobrane dane XML.

Użyj tej funkcji, aby dowiedzieć się jak długo turyści odwiedzający dom Baracka Obamy będą musieli czekąć na autobus linii 6 na przystanku 5037 (Lake Park & Hyde Park Blvd), aby wrócić do centrum.

>>> print bus_prediction("6","5037")
... look at the output ...Chicago Transit Authority (CTA) prowadzi stronę (http://ctabustracker.com), na której można śledzić autobusy miejskie (większość z nich ma GPS). Ta strona ma też nieoficjalne API, którym można dostać się do trasy autobusu w XMLu.

Można użyć URLa http://ctabustracker...Predictions.jsp aby dowiedzieć się jak długo przyjdzie człowiekowi czekać na przystanku na pewien autobus. Trzeba jedynie podać numer trasy (np. 49) i id przystanku (np. 8207).
Można to w prosty sposób przetestować:

>>> import urllib
>>> fields = { 'stop' : '8207',
'route':'49'}
>>> parms = urllib.urlencode(fields)
>>> u = urllib.urlopen("http://ctabustracker.com/bustime/map/getStopPredictions.jsp?"+parms)
>>> resp = u.read()
>>> print resp
... zobacz co wróci ...
W pliku bustrack.py napisz funkcję bus_prediction(route,stop) która przyjmuje jako argumenty nr trasy i id przystanku, zadaje zapytanie do powyżej opisanej strony i zwraca pobrane dane XML.





Czy ktos bylby w stanie i zechcial mi pomoc?

#2 Jason

    Avatar

  • Super użytkownicy
  • 1118 Postów:

Napisano pon, 25 lis 2013 - 19:59

Gdzie natknąłeś się na to zadanie?

Całą implementację masz podaną na tacy, teraz musisz tylko ubrać to w funkcję ;)

Dałem dwie wersje funkcji, z parsowaniem i bez parsowania XML:
python
import urllib
import xml.etree.ElementTree as ET

def bus_prediction(route,stop):
    fields = { 'stop' : str(stop),    'route':str(route)}
    parms = urllib.urlencode(fields)
    u = urllib.urlopen("http://ctabustracker.com/bustime/map/getStopPredictions.jsp?"+parms)
    resp = u.read()
    return resp

def bus_prediction_with_xml_process(route,stop):
    fields = { 'stop' : str(stop),    'route':str(route)}
    parms = urllib.urlencode(fields)
    u = urllib.urlopen("http://ctabustracker.com/bustime/map/getStopPredictions.jsp?"+parms)
   
    tree = ET.parse(u)
    root = tree.getroot()
    data=root.findall('pre')
   
    result=[]
    for pre in data:
      result.append("Przystanek: %s(%s); Odjazd za: %s"%(pre.find('fd').text,pre.find('v').text,pre.find('pt').text))
     
    return result

print bus_prediction_with_xml_process("6","5037")


BTW. uważaj pisząc o Pythonie. Na tym Forum za to się dostaje bana. Już wiem! Ten temat to prowokacja od admina! :D

#3 5corpio

    Guru

  • Super użytkownicy
  • 874 Postów:

Napisano pon, 25 lis 2013 - 22:58

Widząc temat "Pythona" wiedziałem, że jak wejdę to zobaczę rozwiązanie problemu przez Jasona ;) hehe

#4 ukilo

    Nowy na forum

  • Użytkownicy
  • 5 Postów:

Napisano nie, 27 wrz 2015 - 08:00

Nie łatwe zadanie. Dobrze, że mamy tu prawdziwych specjalistów.