当前课程知识点:Python 交互式程序设计导论 >  第4周 >  A 课程视频(列表) >  列表及变化可视化跟踪执行

返回《Python 交互式程序设计导论》慕课在线视频课程列表

列表及变化可视化跟踪执行在线视频

列表及变化可视化跟踪执行

下一节:碰撞和反射

返回《Python 交互式程序设计导论》慕课在线视频列表

列表及变化可视化跟踪执行课程教案、知识点、字幕

大家好,欢迎来到本周的可视化程序调试课程。

今天,我们的主要内容是:通过调试的方式来分析列表的可变性。

这里的可变指的是可以通过下标的方式来修改列表的元素值。

Python中可变的数据类型有两个,一个呢,就是今天要学习的列表,

还有一个是后面要学习到的字典。

下面开始今天的课程。

打开我们的Python在线学习助手,我先创建一个列表。

元素是1、2、3。

同时我再创建另外一个列表y,元素呢,也是1、2、3。

看一下,我的x和y呢看起来是一模一样,对不对?

那它俩到底是不是同一个列表呢?

等会儿我们调试的时候,大家会看得非常清楚。

那我现在修改x的第一个元素的值。

第一个元素下标应该是0。

赋值为4吧。

然后呢,我再这样修改x的值。大家看会发生什么变化噢。

我把它变成5、6、7,好。

为了清楚一点,就5、6吧。

就原来list里面,x里面,有三个元素,我现在想把它变成两个元素了。

我再可视化执行一下。

点击下一步。看,我右边呢,出现一个全局的栈(框架)。

x指向的是一个列表。

我们的Python在线学习助手它会显示的非常的清楚。

你看,这个列表里面,值呢是1、2、3。

而它每个值的索引是0、1、2,

就是说你通过哪个数字可以访问到这个值(呢?),就是0、1、2。

你看,x0应该是第一个元素1,对吧?

我下一步,看一下,注意了噢。

y,虽然我们看起来x和y是真的一模一样,没有任何变化、没有任何不同点。

但是在我们的Python里面呢,它俩却是指向了两个不同的对象,对吧?

两个完全不同的对象。

那当然了,我修改x的值是不会修改y的值的。

是不是?你看,

x第一个元素的值变成了4,而我的y还是1,没有任何变化。

下一步。

再看,我x原来是1、2、3,现在变成5、6的时候,

它是不是在原来的基础上做的修改呢?

看,y已经……x,看x已经指到了这个地方。

原来它并不是修改了原来的x的值,而是重新创建了一个列表。

重新创建了一个列表,已经不是原来的这个列表了。

那大家一定要看清楚了。

我再看下面,第二种方式的修改。

这是……我给它创建了一个y,

(让它)看起来,让它看起来和x一模一样。

我第二种方式修改,我这么修改。

我把x直接赋值给y了,好我继续。

嗯,这个地方我要这样了,这一步就不要了。

我来修改一下y的值,看会不会发生变化。

我也修改第0个吧。

我让它变成0。

好,继续。

下一步,我就快速点了,下一步。

嗳?大家发现,当我执行完y=x这条语句之后,

y指向了和x同一个对象。

它俩指向的是同一个对象。

那我修改x的值,肯定也会修改y的值,是吧?

因为x是它,y也是它嘛。

下一步,看,第一个变成4了。

没问题吧?我修改y当然也会修改x了。

下一步,0,这样一种赋值方式,它俩是互相影响的。

其中一个的改变都会影响另一个的元素值。

好,我再来一种,还有一种方式。

把它也注释掉,还有一种方式,是这样的。

还有一种是(这样的)。(里面)是x是吧?

嗯,下一步。

下一步,下一步。

看,我通过这种赋值方式,前面我是直接赋值的对吧?

这种赋值方式呢,是说我把x拷贝了一份。

就像我们鼠标……就像我们键盘上,

按住我们Ctrl+C,??上面是??一样。

我会把一份代码给复制一份,对吧?

它这个呢,是把我的这个列表,

复制了一份,然后赋值给了我的y。

此时呢,我这个y指向的是x的一个副本了,并不是x自己,对不对?

所以其实它俩指向的是两个不同的对象。

那下面呢两句呢,大家就很清楚了。

其中一个的变化会不会影响另一个?不会。

下一个,x0=4,看,它变化了。

y0=0,它变化了。

那它俩没有互相影响是吧?

这(是)第三种赋值方式。

好,通过这个例子呢,我们就……大家一定要注意到,

不同的赋值方式对我们列表的元素的修改会产生不同的影响。

这是我们第一个例子,我们接下来看第二个例子。

我先把它给删掉,然后打开我们的PyCharm,选中,全选了噢。

右键,复制,粘贴。

简单介绍,简单讲一下这个例子。

首先呢,它是一个……这个point呢,是一个三维空间中的一个点。

x是……x坐标是20,y坐标是30,z坐标是10。

然后有三个函数,这三个函数的目的 都是想修改这个点,修改这个point。

但是它们会不会达成愿望来修改它呢?

接下来我们要调试了,好,可视化执行。

下一步,全局栈(框架)。

点指向了堆上的一个对象。

下一步,下一步,下一步,看。

这三个函数对应在它们堆上的是三个函数,对吧?

下一步,调用的是我第一个函数了。

传入的参数value值是10,那如果说,我可以进行这样的修改的话,

根据我们前面的经验,这个列表会变成10、30、10,对不对?

下一步。

看它有没有变化噢,下一步。

咦?大家发现,原来指向的这个列表由20变成了10。

说明,这种方式是可以修改我全局列表的值的,对吧?

好,我继续了。

下一步,下一步,第二个函数。

第二个函数呢,你看它的输入参数是20、30,

我的目的是想把这个point从三维坐标 变为我的二维坐标,看能不能做到。

下一步,注意了。

这个point,是把这个新的这个new point赋值给这个point。

下一步,发现什么?

发现我是在这个函数的局部栈(框架) 里面,创建了一个局部变量point。

同时它和我的输入参数指向了同一个列表。

并没有修改这个地方的列表,说明它没有达成我的要求是吧?

继续,我看下下面一个函数会不会做到呢?

下一个函数呢,它有一个不同点。

不同点是什么呢?

它申明了一下全局变量point,它告诉着个函数说,

我point是一个全局变量,那我执行下一步。

如果说可以修改的话,那我这个point是不是就会变化了对吧?

好,下一步。

大家发现,我这个point,原来是在这个地方,它不见了,是吧?

它指向了……和我这个输入参数指向了同一个列表,30、40。

它就是有原来的三维坐标变成了我二维的坐标。

通过这几个例子的学习,我们就已经知道,

如果说你要修改一个全局的列表的话,(假如)修改它。

要么你就是通过这种下标的方式,一个一个元素来修改,对吧?

要么你就是要告诉函数它是一个全局变量。

这样才能把它给按照你的想法给修改掉。

还有一个,就是要注意的就是,我们在……

如果说你在一个函数里面,你如果让它变成局部变量的话。

就是说你要创建一个局部变量,希望和……

希望大家(注意),(这个局部变量)不要和全局变量名字一样噢,

这样会让人引起误解,以为你是要修改它。

Python在线学习助手呢,真的是非常的有意思噢。

(显示)这种修改,显示这种创建对象,都是非常的清楚。

希望大家下去之后呢,在我们这个Python在线学习助手上多练几个例子。

对于大家理解代码,掌握我们的列表 以及其他的一些问题是非常有帮助的。

嗯,那我们今天的课就上到这里,下次再见。

Python 交互式程序设计导论课程列表:

第0周

-课程简介

--课程简介

-A 课程视频(算数操作符及表达式)

--绪论

--Python交互式解释器使用方法

--PyCharm集成开发环境介绍

--算数操作符及表达式

-B 课程视频(变量及赋值)

--变量

--项目提交

--“我喜欢Python”热身小项目

-C 辅助视频(计算机结构、Python开发环境安装)

--Windows平台安装Python开发环境

--Mac平台安装Python开发环境

-D 辅助视频(如何提交项目)

--项目提交

-第0周--小测验

-本周项目:"我喜欢Python"

--项目发布、完成、提交及评分流程

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

--项目提交

第1周

-A 课程视频(函数)

--函数

--其它操作符

--随机函数

-B 课程视频(逻辑及表达式)

--逻辑值和比较

--条件

--编程技巧

--“老虎杠子鸡虫”游戏

-第1周--小测验

-本周项目:“老虎杠子鸡虫”游戏

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第2周

-A 课程视频(Python交互式应用)

--事件驱动编程

--事件可视化跟踪执行

--SimpleGUITk

--按钮

-B 课程视频(输入框、全局变量)

--输入框

--局部变量和全局变量

--编程技巧

--“猫咪藏在哪个房间”游戏

-第2周--小测验A

-第2周--小测验B

-本周项目:猫咪藏在哪个房间

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第3周

-A 课程视频(画布绘图)

--画布和图形绘制

--字符串处理

--绘图和计时器可视化跟踪执行

--图片和音效

-B 课程视频(计时器)

--计时器

--交互式绘图

--“神奇时钟”游戏

--编程技巧

-第3周--小测验A

-第3周--小测验B

-本周项目:“神奇时钟”

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第4周

-A 课程视频(列表)

--列表

--键盘输入

--列表及变化可视化跟踪执行

--碰撞和反射

-B 课程视频(键盘控制)

--速度控制

--运动

--编程技巧

--“桌上冰球”游戏

-第4周--小测验A

-第4周--小测验B

-本周项目:“桌上冰球”游戏

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第5周

-A 课程视频(鼠标输入、列表进阶)

--鼠标输入

--Video

--Video

--Video

-B 课程视频(字典和图片)

--Video

--Video

--Video

--Video

-第5周--小测验A

-第5周--小测验B

-本周项目:“世界杯八强连连看”

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第6周

-A 课程视频(类)

--面向对象编程(类和对象入门)

--面向对象编程(类和对象进阶)

--对象可视化跟踪执行

--华容道中的类

-B 课程视频(平铺图片)

--平铺图片

--理解对象

--编程技巧

--“华容道”游戏

-第6周--小测验A

-第6周--小测验B

-本周项目:“华容道”游戏

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第7周

-A 课程视频(类进阶及文件操作)

--集合

--文件操作

--文字块类

--处理停止的文字块

-B 课程视频(游戏状态控制)

--游戏记分规则

--游戏结束的条件及处理

--编程技巧

--“决战三字经”游戏

-第7周--小测验A

-第7周--小测验B

-本周项目:决战三字经

--游戏说明

--程序说明

--编程步骤

--评分标准

--项目模板

第8周

-A、课程视屏(精灵集合)

--Video

--精灵类

--战士类

--编程技巧

-B、课程视屏(动画)

--精灵碰撞

--精灵动画

--编程技巧

--保卫家园游戏

-第8周--小测验

-本周项目:守卫家园

--游戏说明

--程序说明

--编程步骤

--评分标准

--项目模板

列表及变化可视化跟踪执行笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。