为什么我会得到' ValueError:太多的值无法解压缩'?

时间:2016-05-08 15:03:37

标签: python

所以我有一些python代码 -

$ clojure bern.clj
(Exception in thread "main" java.lang.ClassCastException: clojure.lang.LazySeq cannot be cast to java.lang.Number
    at clojure.lang.Numbers.multiply(Numbers.java:146)
    at user$bernoulli$iter__3__7$fn__8$fn__9.invoke(x2.clj:21)
    at user$bernoulli$iter__3__7$fn__8.invoke(x2.clj:18)
    at clojure.lang.LazySeq.sval(LazySeq.java:42)
    at clojure.lang.LazySeq.seq(LazySeq.java:60)
    at clojure.lang.RT.seq(RT.java:473)
    at clojure.core$seq.invoke(core.clj:133)
    at clojure.core$print_sequential.invoke(core_print.clj:46)
    at clojure.core$fn__5270.invoke(core_print.clj:140)
    at clojure.lang.MultiFn.invoke(MultiFn.java:167)
    at clojure.core$pr_on.invoke(core.clj:3266)
    at clojure.core$pr.invoke(core.clj:3278)
    at clojure.lang.AFn.applyToHelper(AFn.java:161)
    at clojure.lang.RestFn.applyTo(RestFn.java:132)
    at clojure.core$apply.invoke(core.clj:601)
    at clojure.core$prn.doInvoke(core.clj:3311)
    at clojure.lang.RestFn.applyTo(RestFn.java:137)
    at clojure.core$apply.invoke(core.clj:601)
    at clojure.core$println.doInvoke(core.clj:3331)
    at clojure.lang.RestFn.invoke(RestFn.java:408)
    at user$eval18.invoke(x2.clj:29)
    at clojure.lang.Compiler.eval(Compiler.java:6514)
    at clojure.lang.Compiler.load(Compiler.java:6955)
    at clojure.lang.Compiler.loadFile(Compiler.java:6915)
    at clojure.main$load_script.invoke(main.clj:283)
    at clojure.main$script_opt.invoke(main.clj:343)
    at clojure.main$main.doInvoke(main.clj:427)
    at clojure.lang.RestFn.invoke(RestFn.java:408)
    at clojure.lang.Var.invoke(Var.java:415)
    at clojure.lang.AFn.applyToHelper(AFn.java:161)
    at clojure.lang.Var.applyTo(Var.java:532)
    at clojure.main.main(main.java:37)

但它说list1 = ["Anthony", "Sean"] # define a table to use while testing def IsInArray(val, *tab): # define function to check for v, in tab: if v == val: return true return false if IsInArray("Anthony", list1) == true: # testing it print("Anthony is in list1") if IsInArray("Charles", list1) == true: print("Charles is in list1") 。我不明白,其他线程太不相同,无法理解如何解决这个问题。

4 个答案:

答案 0 :(得分:2)

如果您提供列表作为第二个参数(*,而不是True),请删除逗号并移除true运算符:

# def IsInArray(val, *tab):
def IsInArray(val, tab):   # define function to check
    for v in tab:
        if val in v:
            return True
    return False

答案 1 :(得分:2)

只需使用in运算符:

if "Anthony" in list1:        # testing it
    print("Anthony is in list1")

if "Charles" in list1:
    print("Charles is in list1")

答案 2 :(得分:1)

你在函数中有3个错误(额外的逗号,True / False和条件表达式)。也许这就是你的意思

def IsInArray(val, *tab):   # define function to check
    for v in tab:
        if val in v:
            return True
    return False

答案 3 :(得分:0)

您需要删除额外的逗号:

    for v, in tab:

在此之后 - 请注意,Python中没有truefalse这样的内容 - 它是TrueFalse

我可以发现新问题 - 即使有所有建议:

def IsInArray(val, *tab):   # define function to check
    for v in tab:
        if v == val:
            return True
    return False


IsInArray("Anthony", "Anthony", "Sean")
Out[6]: True

IsInArray("Anthony", ["Anthony", "Sean"])
Out[7]: False

为了将列表作为参数,请在定义中删除asterix(*):

def IsInArray(val, tab):