TypeError <lambda> 缺少 1 个必需的位置参数
TypeError <lambda> missing 1 required positonal argument
为了上学,我必须完成一些练习。我不断收到此错误:
TypeError <lambda> () missing 1 required positional argument: 'f2'
而且我不知道我做错了什么。这段代码应该做很多事情,即:
- 函数
OR
将两个函数作为输入,returns一个lambda
,给定一个输入,将两个函数应用于该输入并计算'or'结果。
- 函数
OR
将两个函数作为输入,returns一个lambda
,给定一个输入,将两个函数应用于该输入并计算'or'结果。
- 函数
OR
将两个函数作为输入,returns 一个 lambda
给定一个输入,将两个函数应用于此类输入并连接结果。
f1
是一个 lambda
检查输入是否为奇数。
f2
是一个 lambda
检查输入是否为正数。
surround
是给定一个数字的 lambda
,returns 由方括号括起来的那个数字组成的字符串。
toStar
是一个 lambda
给定任何输入 returns 字符串 '*'
.
这是我的代码:
def OR(f2, f1):
return lambda f1, f2 : True if (f1 or f2) else False
def AND(f1, f2):
return lambda f1, f2 : True if f1 and f2 else False
def CONCAT(f, g):
return lambda f, g : f + g
f1 = lambda f1: False if f1 % 2 == 0 else True
f2 = lambda f2: True if f2 > 0 else False
surround = lambda c : '[' + str(c) + ']'
toStar = lambda c : str(c) + '*'
a = 7
b = 9
c = 5
res1 = OR(f1, f2)(a)
res1b = AND(f1, f2)(a)
res2 = OR(f1, f2)(b)
res2b = AND(f1, f2)(b)
res3 = CONCAT(surround, toStar)(c)
res4 = CONCAT(toStar, surround)(c)
print()
有人知道我做错了什么吗?
OR
和 AND
应该 return 一个 一个 参数的函数,它在该参数上调用它的两个包装函数:
def OR(f1, f2):
return lambda x: True if f1(x) or f2(x) else False
可以简化,如果f1
和f2
保证是谓词,就
def OR(f1, f2):
return lambda x: f1(x) or f2(x)
CONCAT
,类似,需要调用其包装函数:
def CONCAT(f1, f2):
return lambda x: f1(x) + f2(x)
(CONCAT
的调用者负责确保 f1
和 f2
的 return 值实际上是 [=21= 的有效操作数].)
为了上学,我必须完成一些练习。我不断收到此错误:
TypeError <lambda> () missing 1 required positional argument: 'f2'
而且我不知道我做错了什么。这段代码应该做很多事情,即:
- 函数
OR
将两个函数作为输入,returns一个lambda
,给定一个输入,将两个函数应用于该输入并计算'or'结果。 - 函数
OR
将两个函数作为输入,returns一个lambda
,给定一个输入,将两个函数应用于该输入并计算'or'结果。 - 函数
OR
将两个函数作为输入,returns 一个lambda
给定一个输入,将两个函数应用于此类输入并连接结果。 f1
是一个lambda
检查输入是否为奇数。f2
是一个lambda
检查输入是否为正数。surround
是给定一个数字的lambda
,returns 由方括号括起来的那个数字组成的字符串。toStar
是一个lambda
给定任何输入 returns 字符串'*'
.
这是我的代码:
def OR(f2, f1):
return lambda f1, f2 : True if (f1 or f2) else False
def AND(f1, f2):
return lambda f1, f2 : True if f1 and f2 else False
def CONCAT(f, g):
return lambda f, g : f + g
f1 = lambda f1: False if f1 % 2 == 0 else True
f2 = lambda f2: True if f2 > 0 else False
surround = lambda c : '[' + str(c) + ']'
toStar = lambda c : str(c) + '*'
a = 7
b = 9
c = 5
res1 = OR(f1, f2)(a)
res1b = AND(f1, f2)(a)
res2 = OR(f1, f2)(b)
res2b = AND(f1, f2)(b)
res3 = CONCAT(surround, toStar)(c)
res4 = CONCAT(toStar, surround)(c)
print()
有人知道我做错了什么吗?
OR
和 AND
应该 return 一个 一个 参数的函数,它在该参数上调用它的两个包装函数:
def OR(f1, f2):
return lambda x: True if f1(x) or f2(x) else False
可以简化,如果f1
和f2
保证是谓词,就
def OR(f1, f2):
return lambda x: f1(x) or f2(x)
CONCAT
,类似,需要调用其包装函数:
def CONCAT(f1, f2):
return lambda x: f1(x) + f2(x)
(CONCAT
的调用者负责确保 f1
和 f2
的 return 值实际上是 [=21= 的有效操作数].)