我想我已经开始了解这一点。对于此代码:
printedxrow7 = ["V "+str(cols[0].count(0)),"V "+str(cols[1].count(0)),"V "+str(cols[2].count(0)),"V "+str(cols[3].count(0)),"V "+str(cols[4].count(0))]
printedxrow8 = [str(sum(cols[0])),str(sum(cols[1])),str(sum(cols[2])),str(sum(cols[3])),str(sum(cols[4]))]
numgood = (((rows[0]).count(2))+((rows[0]).count(3)+(rows[1]).count(2))+((rows[1]).count(3))+((rows[2]).count(2))+((rows[2]).count(3))+((rows[3]).count(2))+((rows[3]).count(3))+((rows[4]).count(2))+((rows[4]).count(3)))
我想把它浓缩成:
rows = [[convert[random.randint(0,7)] for _ in range(5)] for _ in range(5)]
cols = list(zip(*rows))
printedrows = ["\n"+ "[X]"*5 + " <- V: {} TOTAL: {}".format(row.count(0), sum(row)) for row in rows]
printcolvolt = ["V:{}".format(col.count(0) for col in cols)]
printcolcount = ["T:{}".format(sum(col) for col in cols)]
numgood = numtiles - rows.count(0)
为什么我得到at 0x030116C0&gt;错误? (我为上下文添加了其余的代码。)
答案 0 :(得分:1)
您在第1行和第2行中有SyntaxError
(format
来电时缺少右括号),并且在编辑帖子时将其放在错误的位置。
printcolvolt = ["V:{}".format(col.count(0)) for col in cols]
^
否则,您可以格式化生成器col.count(0) for col in cols
本身,而不是它生成的值。
对于第3行,我认为你应该有像
这样的东西numgood = sum(row.count(2) + row.count(3) for row in rows)
否则,你试图计算我假设的列表列表中有多少个零,这些列表总是给出零。我不知道numtiles
是什么。
N.B。如果您说出问题实际上是什么(例如输入,预期输出,实际输出/错误)而不仅仅是“为什么这不起作用”将会更有帮助。
答案 1 :(得分:0)
您必须在所指的功能之后添加括号:
printcolvolt = ["V:{}".format(col.count(0)) for col in cols]
printcolcount = ["T:{}".format(sum(col)) for col in cols]
否则,
#WRONG
printcolvolt = ["V:{}".format(col.count(0) for col in cols)]
将创建generator object
(您使用generator object <genexpr> at ...
看到)并尝试打印此内容,因为for ... in
位于括号内。