num1 = 10
num2 = 20 
定义两个数,请交换两个数的值 !

我们初学者,一般拿到这道题大多数 粗略的想法:

       两个数交换,那就 我把 num2 赋给 num1, 再把 num1 赋给 num2 不就好了!

       来试试看 :
# 交换前 num1 = 10 num2 = 20 # 交换后 num1 = num2 bum2 = num1
print("num1的值是:%s,num2的值是:%s" % (num1, num2))
        运行结果 :

        ===>>>    

#   诶,结果怎么和初学者心里想的不一样呢??

      ===>>>

                        因为这样运行实质上不是交换,而是覆盖啊!!!

                        交换前, num1 = 10 ,num2 = 20 

                        你现在进行 : num1 = num2 

                        这不就是 把 2 的值 赋给了 1 那赋值后不就 改变了 num1 的值,使得变为 20 

                        而 num2 实质上还是 20 并没有改变!!!!

                        所以此法行不通!! ( 这也是 初学者最容易直接想到的方法!!)

接下来,正式介绍下几种方法 :

方法一  :中间变量法

        #  我们既然会存在覆盖的情况,那我们就想,那不如再引入一个变量,我们先把第一个数赋

            给那个中间变量那里,等于说先存起来,然后再将另一个数赋给第一个数,这样实质上就

            是相当于 第一个数已经有了第二个数的值,最后,再将中间变量赋给 第二个数,这样就把

            第一个数的值赋给了第二个数!! 

            从而实现 数的交换 !!

             

           代码实现 :

           ===>>>
# 交换前 num1 = 10 num2 = 20 print("交换前,num1的值是:%s, num2的值是:%s " % (num1, num2))
# 交换后 temp = num1 num1 = num2 num2 = temp print("交换后,num1的值是:%s, num2的值是:%s" %
(num1, num2))
         运行结果 :

         ===>>>

        

        很显然,两数交换成功 !!!!

方法二 :数学法 

                方法一虽然可以实现两个数的交换,但是从内存角度来说,本代码的中间变量其实有些

                浪费内存!!!!  

                因此,我们为了避免引入第三个量 浪费内存,我们优化下代码

                执行数学法 !!

                

                执行代码 :

                ===>>>>
# 交换前 num1 = 10 num2 = 20 print("交换前,num1的值是:%s, num2的值是:%s " % (num1, num2))
# 交换后 num1 = num1 + num2 num2 = num1 - num2 num1 = num1 - num2
print("交换后,num1的值是:%s, num2的值是:%s" % (num1, num2))
               其实本方法完全就是运用了 数学的代数思路,都是些最简单的代数运算;

               不仅实现了 问题的解决,而且并没有引入第三个变量浪费内存!!

方法三   :  Python 法 

             本方法是 Python 独有的方法 ,Python 自身提供了一种交换数的方式 

     代码实现 :

     ===>>>
num1 = 10 num2 = 20 num1, num2 = num2, num1 print("交换后,num1 = %s,num2 = %s" %
(num1, num2))
          Python 这种方法是及其简单的,它的底层类似于第一种方法,它实质上是调用了底层的寄

          存器,把一种数先存在寄存器里了; 它自身底层帮助我们去做了,你只需要直接操作就行

技术
下载桌面版
GitHub
百度网盘(提取码:draw)
Gitee
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:766591547
关注微信