基础题(1)

基础题(1)

python 我也是初学者,想熟悉一下这个语言中的基本语法和数据结构。所以选了几个基本题来练手。这些题目原本是要求用 c 来实现的,现在要求用 python 实现。


一、给定一组无关向量如下(行向量)

x= (0 1 1 0)
y= (1 0 0 1)
z= (1 1 0 0)

求它们的全部线性组合,系数只可以是 0, 1, 并且在这里 0+0=0, 0+1=1+0=1, 1+1=0, 0*1 = 1*0=0, 1*1=1. 即不带进位的二进制运算。

比如:1x+1y= (0 1 1 0) + (1 0 0 1)=(1 1 1 1), 1x+0y=(0 1 1 0)+(0 0 0 0)=(0 1 1 0)

所谓全部线性组合就是 a*x + b*y + c*z, 其中 a, b,c 可以取 0 或 1, 共有 2*2*2 =8 个


我已经写了一个,等有空的时候把代码和注释贴上来。也希望看一看大家是怎么实现的,最好能多用一些有 python 特色的东西,谢谢。
全部线性组合就是 a*x + b*y + c*z:
因为:
a*x + b*y + c*z
=(0,a,a,0) + (b,0,0,b)+ (c,c,0,0)
=(b+c, a+c, a, b)
所以全部线性组合为:  {(b+c, a+c, a, b)  | a =0,1. b = 0, 1, c = 0, 1 且 0+0=0, 0+1=1+0=1, 1+1=0}
-----------------------------------------
# a_m3.py
# -*- coding: utf-8 -*-
for a in (0,1):
     for b in (0,1):
        for c in (0,1):
            print (b ^ c, a ^ c, a, b)
-----------------------------------------
结果为:
(0, 0, 0, 0)
(1, 1, 0, 0)
(1, 0, 0, 1)
(0, 1, 0, 1)
(0, 1, 1, 0)
(1, 0, 1, 0)
(1, 1, 1, 1)
(0, 0, 1, 1)

如果那三组向量是任意的话,这样如何:
x = (?,?,?,?)
y = (?,?,?,?)
z = (?,?,?,?)
result = ['','','','']
for a in (0,1):
    for b in (0,1):
        for c in (0,1):
            ax = [a * element for element in x]
            by = [b * element for element in y]
            cz = [c * element for element in z]
            for i in range(4):
                result = ax ^ by ^ cz
            print 'a = %s,b = %s,c = %s,result = %s' %(a,b,c,result)
Lz想法不错~~希望以后能继续多一些练习~~