此刻,我正在努力使自己对列表理解有所了解,并尝试使用尽可能多的方式来构建黑石游戏。我停留在这一点:
elif card == (char for char in ["K", "J", "Q"]):
print("Detected facecard")
我知道使用字典或某些替代方法甚至扩展循环可能会更容易,但是我正在特别尝试了解为什么这行不通。
在....中为char打印char会产生对象类型,而不是对象。
有什么建议吗?预先感谢
答案 0 :(得分:2)
vurmux所评论的是正确的方法,但这就是您所做的不起作用的原因:
(char for char in ["K", "J", "Q"])
是一个生成器,所以实际上发生的是python正在将card
与该生成器进行比较,这将永远是错误的。
>> x = (char for char in ["K", "Q", "J"])
>> print(x)
<generator object <genexpr> at 0x7f10752d4410>
答案 1 :(得分:1)
(char for char in ["K", "J", "Q"])
构造生成器:
<generator object <genexpr> at 0x7f97e9f8f200>
因此,您正在尝试将一张卡(我认为它不是生成器:))与生成器进行比较。它始终是False
。您只需检查card
中是否有["K", "J", "Q"]
:
elif card in ['K', 'J', 'Q']: