Программирование и научные вычисления на языке Python/§14: различия между версиями

Содержимое удалено Содержимое добавлено
Нет описания правки
Нет описания правки
Строка 250:
print "In %s it's %s and %d degrees." % (city, weather.lower(), temperature)
 
for city in cities: get_data(cities[city])
</source>
 
 
==Новый вид исходного кода сайта==
Интернет быстро меняется, и за те пол-года, которые прошли с момента написания этого урока Yahoo существенно изменили своего робота по написанию страниц погоды, причем беспорядка в html стало еще больше. Поэтому, когда я стал работать над презентацией данного курса в своем университете, мой старый код выдавал мне только ошибки. Оценив новую ситуацию, я снова обрадовался тому, как легко и приятно поддерживать код на Python и переписал старый код на новый лад, теперь уже для зимнего человека:
 
 
<source lang="python">
import urllib
cities = {
'St-Petersburg':
'http://weather.yahoo.com/russia/st.-peterburg/st.-petersburg-2123260/',
'Priozersk':
'http://weather.yahoo.com/russia/leningradskaya-oblast/priozersk-2123030/',
'Vaskelovo':
'http://weather.yahoo.com/russia/leningradskaya-oblast/vaskelovo-2124169/',
}
def get_data(url):
urllib.urlretrieve(url=url, filename='tmp_weather.html')
infile = open('tmp_weather.html')
lines = infile.readlines()
for i in range(len(lines)):
line = lines[i] # короткая форма
if 'yw-cond' in line:
start = line.find('yw-cond')
without_space = line.strip()
startweather = start+9 # 9 -> yw-cond">
endweather = without_space.find('<', startweather)
weather = without_space[startweather:endweather]
if 'yw-temp' in line:
start = line.find('yw-temp')
without_space = line.strip()
starttemp = start+9 # 9 -> yw-temp">
endtemp = without_space.find('&', starttemp)
ftemp = float(without_space[starttemp:endtemp])
temperature = round((ftemp - 32)/1.8)
break # все, что нужно найдено
infile.close()
print u"In %s it's %s and %s degrees." % (city, weather.lower(), temperature)
for city in cities: get_data(cities[city])
</source>