如何验证函数在python中使用n个参数和强制执行xor?

如何验证函数在python中使用n个参数和强制执行xor?,python,xor,coercion,Python,Xor,Coercion,python新手。使用^运算符时,如何验证实现n参数异或的函数?我扩展了代码来处理字符串输入。为此,我假设0.0,'和None将是0,任何其他值,无论是正值还是负值,都将是1。但是,整数值将以通常的方式处理,因此6^5==3。我更喜欢将输入强制为整数,这样可以强制输入(例如,11.0或'11'可以强制转换为int) 我在其他地方看到了python中逻辑与按位异或操作的问题,但它们的局限性在于讨论仅限于输入a和b。我想验证一个对任意数量的参数和强制输入进行测试的解决方案 检查其他解决方案 我从中尝

python新手。使用
^
运算符时,如何验证实现n参数异或的函数?我扩展了代码来处理字符串输入。为此,我假设
0.0
'
None
将是
0
,任何其他值,无论是正值还是负值,都将是
1
。但是,整数值将以通常的方式处理,因此
6^5==3
。我更喜欢将输入强制为整数,这样可以强制输入(例如,
11.0
'11'
可以强制转换为
int

我在其他地方看到了python中逻辑与按位异或操作的问题,但它们的局限性在于讨论仅限于输入
a
b
。我想验证一个对任意数量的参数和强制输入进行测试的解决方案

检查其他解决方案 我从中尝试了一些关于逻辑异或的建议。然而,我尝试的所有解决方案似乎都不起作用。例如:

  • ^
    不适用于字符串,并且不可编辑
  • int(bool(a)^bool(b))
    不适用于
    n
    参数
  • (a和非b)或(非a和b)
    如果输入
    b
    是字符串,则会中断
我试过的 我从以下代码开始

附件1
def xor(*args):
return int(任意参数)!=all(所有参数))
图表1的逻辑只适用于两个参数的情况,我还没有弄清楚在更多参数的情况下它的真值表类似于什么。因此,我调整了函数以使用
^=
操作符,如下所示

附件2
def xor(*args,奇偶校验=True):
exOr=False
checker=list()
对于args中的arg:
#尝试将arg强制为int,以便'11'=11,11.0=11
exOr^=arg如果类型(arg)==int-else-bool(arg)
检查器.附加(布尔值(arg))
exOr=0如果全部(检查)而不是奇偶校验,则为exOr
返回整数(exOr)
图表2的逻辑似乎适用于我测试过的任何数量的参数,尽管手动在纸上写下真值表并在python输出中跟随很容易出错。此外,在可以强制输入的地方,附件2中的代码根本不强制输入

为什么要使用图表2中的奇偶校验参数? 对于两个以上输入(和)的异或逻辑的两种解释似乎存在一些分歧。在我看来,两个以上输入的解决方案应该在两个选项之间进行选择,因为这两个选项显然都写入了标准,这就是为什么我添加了累加器和逻辑来反转
all(checker)

问题摘要
我希望上述讨论有意义。我不知道如何有效地测试代码,也不知道如何强制输入
int
,如果可以的话。为了测试代码,我觉得我需要一种比比较纸质笔记和函数输出更好的方法。

这篇文章考虑了强制部分的解决方案,使用
try:
除外:
。然而,这并不能回答测试问题

在原始函数中:

def cInt(arg):
tmp=arg
尝试:
arg=int(浮点(arg))
如果arg==浮动(tmp):
返回参数
其他:
返回tmp
除:
返回tmp
def xor(*参数,奇偶校验=True):
exOr=False
checker=list()
对于args中的arg:
arg=cInt(arg)
exOr^=arg如果类型(arg)==int-else-bool(arg)
检查器.附加(布尔值(arg))
exOr=0如果全部(检查)而不是奇偶校验,则为exOr
返回整数(exOr)
异或(1,‘1.0’,“1”)
异或(1,'1.0',“1”,奇偶校验=False)
1
0


事实证明,搜索4位异或的真值表很容易。例如:Replit.com有一个python环境和一个单元测试接口,可以设置该接口来测试代码。在这篇文章中,我能够通过4位二进制生成测试。但是,我不希望依赖gui。