关于if "name" in w:这一段代码

来源:4-4 实操实现:天气预报功能

weixin_慕数据1559209

2020-04-22 10:33:26

老师您好,在编写“明日天气预报”这一节,我对if "name" in w:这段代码不是很能理解

我目前的理解是:这段代码的意思是判断w里是否存在“name”这个key,

如果存在,则继续下一步

如果不存在,则运行else

而在前一步n = input('请输入您要查询的城市:')
w = get_weather(n)  中

如果这里用户输入的n没在原始的数据库中,这里的w就无法生成,所以也不存在“name”这个key了

老师您看我这样理解可以么

第二个问题是,函数代码中的return{} 为什么不能省略呢?

我刚才省略了试了试,如果输入的城市名没在原始数据库就会报错

麻烦老师讲解以下原理

http://img.mukewang.com/climg/5e9facf409f8dbd506080110.jpg

写回答

2回答

时间,

2020-04-22

同学,你好。

1、if条件判断中不能直接判断city的,city in w判断的是键在不在w字典中,而city是对应的是字典w的value值,因此是不行的,需要判断的是"name" in w,即"name"这个key在不在字典w中

2、return {}是将返回的{}空字典赋值给w,print("未找到{}的天气数据".format(n))中的{}是占位,使用format格式化,将n的值(n是输入的城市)传递给前边的中括号位置

3、若函数值返回None,即w的值为None,在执行if条件判断时就会报错,并不会执行到else语句

http://img.mukewang.com/climg/5e9ffd2e09fa7e5806770111.jpg

4、return:在函数中,return是将函数的结果值进行返回,函数运行结束。在调用时需要定义变量用于接收结果,再进行打印。

print:是调用函数时,会直接执行print语句进行输出

5、同学的代码修改是可以的。

如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~

0

时间,

2020-04-22

同学,你好。

1、问题一同学的理解是可以的,当查询的城市不存在时,get_weather()的返回值是空字典,即w的值是空字典

2、若不返回{},当查询的城市不存在时,get_weather()函数没有返回值,w的值为None,是NoneType类型,在执行if条件判断时会报错,因此需要在get_weather()函数中返回空字典。

如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~

0
heixin_慕数据1559209
h 老师,我这边尝试着将原函数的判断语句: if city in weather_date: return weather_date.get(city) else: return {} 以及输出语句: elif c == '3': n = input('请输入您要查询的城市:') w = get_weather(n) print(w) if "name" in w: print("{date} {name} {weather} {max}/{min} {wind}".format_map(w)) else: print("未找到{}的天气数据".format(n)) 改成了: if city in weather_date.keys(): print("{date} {name} {weather} {max}/{min} {wind}".format_map(weather_date.get(city))) else: print("未找到{}的天气数据".format(city)) 以及 elif c == '3': n = input('请输入您要查询的城市:') get_weather(n) 您看可以么
h020-04-22
共2条回复

0 学习 · 8160 问题

查看课程