- 帖子
- 1
- 精华
- 0
- 积分
- 7
- 阅读权限
- 10
- 注册时间
- 2021-5-15
- 最后登录
- 2021-5-23
|
我的代码和课程中代码完全一样,为何得不到课程中的结果?代码和得到的结果如下:
#-*-coding: 'utf-8' -*-
import requests, threading #引入requests的模块和threading的模块
def get_weather(city):
req=requests.get('http://wthrcdn.etouch.cn/weather_mini?city=%s' % city) #用get方法打开该网址,并将结果保存在变量req中
#print(req)
dic_city=req.json() #把json格式的数据转换为字典
#print(dic_city)
city_data=dic_city.get('data') #用字典的get方法,没有data的话返回[]
#print(city_data.get('city'))
if city_data:
city_forecast=city_data['forecast'][0]
print(
city_data.get('city'),
city_forecast.get('date'),
city_forecast.get('high'),
city_forecast.get('low'),
city_forecast.get('type')
)
else:
print('未获得')
#print()
threads=[]
cities=['北京', '上海', '南京 ', '深圳', '广州', '杭州', '苏州','天津', '西安', '成都']
files=range(len(cities))
#第一个循环,针对每一个城市,都创建一个新线程,并将线程加入到一个列表中,用于之后的启动
for i in files: #创建线程
t=threading.Thread(target=get_weather, args=(cities,))
threads.append(t)
#第二个循环,start正式开启子线程
for i in files:
threads.start()
#第三个循环,join用来同步数据,主线程运行到这一步,将会停下来等待子线程运行完毕
#若没有这句,主线程会忽略子线程,运行完自己的代码后结束程序
for i in files:
threads.join()
print('结束获取')
我得到的结果中,城市和对应的天气不对应在一起,见图片所示。
看起来乱乱的,而课程中的结果城市和对应的天气是在一行的。
这是为什么呢?
|
|