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

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

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

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

如果存在,则继续下一步

如果不存在,则运行else

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

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

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

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

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

麻烦老师讲解以下原理

http://img1.sycdn.imooc.com//climg/5e9facf409f8dbd506080110.jpg

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕美 2020-04-22 16:29:41

同学,你好。

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://img1.sycdn.imooc.com//climg/5e9ffd2e09fa7e5806770111.jpg

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

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

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

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

好帮手慕美 2020-04-22 11:21:31

同学,你好。

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

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

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

  • 关于问题一,为什么不能直接 city = input('请输入您要查询的城市:') w = get_weather(city) if city in w : 呢? 目的都是为了判断用户输入的城市名是否存在于这个大字典中呀 对于问题二,老师能再给我讲讲print与return函数的区别么?我还是有点蒙,比如这里,为啥return的值为{}时,print("未找到{}的天气数据".format(n)),为什么空括号{}不会被输出呢?而且这里,就算函数的返回值为None,对这里的format也不构成影响呀 麻烦老师了
    2020-04-22 14:54:48
  • 老师,我这边尝试着将原函数的判断语句: 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) 您看可以么
    2020-04-22 15:16:56
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
1.Python零基础入门
  • 参与学习           人
  • 提交作业       2727    份
  • 解答问题       8160    个

想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师