没有在user中进行添加操作怎么在教学视频中有呢?

没有在user中进行添加操作怎么在教学视频中有呢?

xiaoming = ['xiaoming', 19, 90]

# if users[0][0] == xiaoming[0]:
#     xiaoming[0] = '%s_new' % xiaoming[0]
#     users.append(xiaoming)
# elif users[1][0] == xiaoming[0]:
#     xiaoming[0] = '%s_new' % xiaoming[0]
#     users.append(xiaoming)
# elif users[2][0] == xiaoming[0]:
#     xiaoming[0] = '%s_new' % xiaoming[0]
#     users.append(xiaoming)
# else:
#     users.append(xiaoming)
# print(users)

users = {
    'dewei': {'age': 33, 'count': 90},
    'xiaomu': {'age': 10, 'count': 99},
    'xiaoming': {'age': 18, 'count': 100}
}
if xiaoming[0] in users:
    xiaoming[0] = '%s_new' % xiaoming[0]
else:
    users[xiaoming[0]] = {'age': xiaoming[1], 'count': xiaoming[2]}
print(users)

在users采用字典的方式时,当xiaoming[0] = 'xiaoming'时,明明if语句中没有对users进行添加操作,为何在视频中运行程序后会有xiaoming_new??

如下是上述代码运行的结果:

{'dewei': {'age': 33, 'count': 90}, 'xiaomu': {'age': 10, 'count': 99}, 'xiaoming': {'age': 18, 'count': 100}}


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

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

1回答
好帮手慕小猿 2023-04-03 13:35:17

同学,你好!不能将上一个if语句注释,都需要执行的。在视频19:39秒处,老师将变量xiaoming的第一个元素去掉了s改为了xiaoming即列表xiaoming=["xiaoming",19,20],程序由上到下执行,执行到elif users[2][0]=xiaoming[0]是满足条件的

https://img1.sycdn.imooc.com//climg/642a62ee09df853206230645.jpg

执行elif users[2][0]=xiaoming[0]下的语句块,将xiaoming[0]原来的xiaoming更改为xiaoming_new,xiaoming变量的列表变更为['xiaoming_new', 19, 90]

https://img1.sycdn.imooc.com//climg/642a638109636e8507670450.jpg

继续执行后续代码,当执行 if xiaoming[0] in users:语句时,不满足if 条件。因xiaoming[0]为xiaoming_new ,users字典中没有xiaoming_new这个键,只有xiaoming所以执行else 语句。将xiaoming[0]即 xiaoming_new 作为users字典的键,列表xiaoming中的元素19,90分别作为age,count的值

https://img1.sycdn.imooc.com//climg/642a67e9091cfb4a18040437.jpg

祝学习愉快~

  • 提问者 qq_夏日青枫_0 #1

    明明视频教学中是采用的两种方式,所以说上述已注释的程序是可以注释掉的,我就是注释后想看看采用第二种方式的效果,结果里面没有给users添加xiaoming 的这条语句,但在视频中竟然还能有显示

    2023-04-03 14:40:05
  • 同学,你好!视频中没有注释掉第一个if 语句,xiaoming变量中的第一个元素是在第一种方法(第一个if的else语句)中发生的改变,若想要修改后的xiaoming_new就不可以注释掉第一种方法,即第一个if 条件语句。

    https://img1.sycdn.imooc.com//climg/642a7f8909491b8317160598.jpg

    同学可以使用print 输出下是否执行第一个if 的else语句,看下程序执行过程

    https://img1.sycdn.imooc.com//climg/642a825909b8bf2318180749.jpg

    祝学习愉快~



    2023-04-03 15:44:23
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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