跟我一起学python_跟我一起学python | 探究03

【我撰写的这个系列文字版权所有,特此声明】

我是边学习边写探究。将我的上一篇”跟我一起学python | 探究02“分享给好友之后,听到很多来自好友的建议。微信公众号“老齐教室”的齐伟是我多年的好友,也是python编程研究的大咖,出版了一系列的python相关的图书。下面免费帮老齐做个广告。免费帮老齐做个广告

老齐认为对于python语言,不能把变量类比成杯子。他建议在python语言中用标签来类比变量,给数据贴标签就等于给变量赋值。i=6 j=9

老齐用两个变量交换数据的例子来说明python语言变量和C语言变量的差别。

所谓变量交换数据,就是:

python如何用程序来实现变量的数据交换的呢?

i=6

j=9

i,j=j,i

print("i=",i,"j=",j)

运行结果是 i=9 j=6,说明程序已经将变量数据交换完毕。

对于python语言而言,i , j = j , i 这行代码确实有点骚。在C语言中,这行代码没有错误,也能编译运行,但变量的数据却没有互换。运用啊哈C编写,运行结果i=6 j=9 没有交换成功

为什么python语言可以使用这个代码,而C语言却不可以呢?我带着疑问上网进行了搜索。有以下说法和观点仅供参考。Python的变量并不直接存储值,而只是引用一个内存地址,交换变量时,只是交换了引用的地址。

在C语言中,系统会为每个变量分配内存空间。而在python中,Python为每个值分配内存空间。

看懂了没?什么内存地址?什么内存空间?不懂也没有关系,反正我们知道了python语言和C语言内存空间的分配是不一样的。

因此,老齐说python的变量还是类比成贴标签比较好。老齐说得对!

那么,在C语言中,又是如何实现两个变量之间的数据互换的呢?在C语言中,我们把变量类比成杯子。

可以在两个变量中先后交换来实现吗?运用啊哈C编写

i=j 意思是将变量j的数据赋值于变量i

j=i 意思是将变量i的数据赋值于变量j

这段代码运行后的结果是什么呢? 结果是i=9,j=9。

显然,这段代码没有能够实现两个变量之间数据的互换。

是否可以用python来编写相同的代码呢?运行的结果是不是和C语言的一样呢?

【挖坑试错】

i=6

j=9

i=j #i=j就是把变量j的数据传递给变量i,此步骤后i=9

j=i #j=i 就是把此时变量i的数据传递给变量j,所以j=9

print("i=",i,"j=",j) #"i="是字符串,输出为:i=,i则是变量,因为i=9,所以输出为9

因为这段程序代码是一个顺序程序,从上向下,依次执行程序代码,所以代码运行结果也是:i=9 j=9, 两个变量的数据互换同样没有成功。

为什么python仅靠两个变量编写成的 i,j=j,i 代码就能实现变量间的数据互换呢?因为,这段代码写在了同一行同一句代码命令中,变量i、变量j的互换是同时进行的,没有先后。有先后步骤的,按照先后步骤执行代码命令,两个变量就很难实现数据的互换。

在C语言中,如何解决两只杯子倒来倒去解决不了问题的呢?

解决的办法便是再增加一只杯子(变量)。

用杯子做类比,接下来的操作容易想象和理解。

1. 将变量i的数据赋予变量k;(k变量暂时保管i变量的数据)

2. 将变量j的数据赋予变量i;(i变量数据已经换好)

3. 将变量k的数据赋予变量j。(j变量的数据也已经换好)

用c语言编写这段代码,如下图:

运行结果:i=9 j=6 两个变量数据交换成功!

我们用python写这段代码:

【挖坑试错】

i=6

j=9

k=i

i=j

j=k

print("i=",i,"j=",j)

运行结果是:i= 9 j= 6 ,i和j两个变量数据同样互换成功!

如果中间变量k不是空杯子,影响变量i和变量j的数据互换吗?

【挖坑试错】

i=6

j=9

k=100

k=i

i=j

j=k

print("i=",i,"j=",j,"k=",k)

结果:i=9 j=6 k=6 这个结果说明了什么呢?

上述参照C语言的python程序,是否可以用类比的标签来进行解释呢?这个问题同样留给思考的你。下图可供参考:

两个变量的数据交换是不是还有其它方法?有!下一课继续。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值