LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1189|回复: 9

问一个简单的问题:如何在PYTHON 中写一个函数交换两个变量的值

[复制链接]
发表于 2004-12-13 12:01:26 | 显示全部楼层 |阅读模式
如何在PYTHON 中写一个函数交换两个变量的值
#!/usr/bin/python

def swap1(x,y):
        temp=x
        x=y
        y=temp

def swap2(x,y):
        x,y=y,x
       
def main():
        a=2
        b=3
        swap2(a,b)
        print a,b

if __name__=="__main__":
        main()

如此得不到结果!
发表于 2004-12-13 13:29:56 | 显示全部楼层
刚学python, 但看到了python的方法很方便.
a,b=10,11
b,a=a,b
就行了
 楼主| 发表于 2004-12-13 13:36:56 | 显示全部楼层
我要求写成函数!
调用函数即可得到结果!
 楼主| 发表于 2004-12-13 13:44:31 | 显示全部楼层
在JAVA 中也存在如何写的问题!
在C 中通过取变量的地址来完成交换,在面向对象的语言中如何完成同样的功能。
发表于 2004-12-13 18:08:56 | 显示全部楼层
#!/usr/bin/python

def swap1(x,y):
    temp=x
    x=y
    y=temp
    return x, y

def swap2(x,y):
    x,y=y,x
    return x, y

def main():
    a=2
    b=3
    a, b = swap2(a,b)
    print a,b

if __name__=="__main__":
    main()
发表于 2004-12-13 18:22:14 | 显示全部楼层

java

public class SwapTest
{
        //all reference values can be changed
        public static int[] Swap(int[] temp)
        {
                if( temp.length < 2 )
                        return null;
                int t   = temp[0];
                temp[0] = temp[1];
                temp[1] = t;
                return temp;
        }
       
        public static void main(String args[])
        {
                int a = 2, b = 3;
                int[] temp = new int[2];
                temp[0] = a; temp[1] = b;
                System.out.println( "a = " + a + " b = " + b );
                int[] ret = Swap(temp);
                a = temp[0];//a = ret[0]
                b = temp[1];//b = ret[1]
                System.out.println( "a = " + a + " b = " + b );
        }
}
发表于 2004-12-14 02:28:58 | 显示全部楼层
ok, cool. Thanks!
 楼主| 发表于 2004-12-17 11:58:12 | 显示全部楼层
没有回答问题,没有数组。
只允许简单的变量。
发表于 2004-12-17 15:56:19 | 显示全部楼层
function里直接改怕是不行了.
可以试试如下2种办法:

  1. def swap1(pair):
  2.     pair[0],pair[1]=pair[1],pair[0]
  3.    
  4. a,b=1,2
  5. t=[a,b]
  6. swap1(t)
  7. a,b=t
  8. a,b
  9. (2, 1)

复制代码



  1. def swap2(p1,p2):
  2.     return [p2,p1]
  3.    
  4. c,d=1,2
  5. c,d=swap2(c,d)
  6. c,d
  7. (2, 1)

复制代码
 楼主| 发表于 2004-12-19 11:37:59 | 显示全部楼层
谢谢!
解决了一个疑惑!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表