我在Python代码中的两个不同的地方引发异常:
holeCards = input("Select a hand to play: ") try: if len(holeCards) != 4: raise ValueError(holeCards + ' does not represent a valid hand.')
AND (编辑以纠正提高代码)
def __init__(self, card): [...] if self.cardFace == -1 or self.cardSuit == -1: raise ValueError(card, 'is not a known card.')
出于某种原因,第一个输出像我预期的串联字符串:
ERROR: Amsterdam does not represent a valid hand.
但是,第二个输出了一些奇怪的set和string混合:
ERROR: ('Kr', 'is not a known card.')
为什么"+"运算符在这两种情况下表现不同?
编辑:对init的调用如下所示:
card1 = PokerCard(cardsStr[0:2]) card2 = PokerCard(cardsStr[2:4])
Andrew Jaffe.. 8
嗯,我错过了什么,或者你在比较输出
raise ValueError(card, 'is not a known card.')
同
raise ValueError(card + ' is not a known card.')
???
第二个使用"+",但第一个使用",",它确实应该给你显示的输出!
(在某些情况下,问题是从带有"+"的版本编辑的.也许这个问题应该删除???)
嗯,我错过了什么,或者你在比较输出
raise ValueError(card, 'is not a known card.')
同
raise ValueError(card + ' is not a known card.')
???
第二个使用"+",但第一个使用",",它确实应该给你显示的输出!
(在某些情况下,问题是从带有"+"的版本编辑的.也许这个问题应该删除???)
"card"可能代表一个包含字符串"Kr"的元组.在元组上使用+运算符时,可以创建一个添加了额外项的新元组.
编辑:不,我错了.将字符串添加到元组:
>> ("Kr",) + "foo"
生成错误:
TypeError: can only concatenate tuple (not "str") to tuple
确定"卡片"的类型可能会有所帮助.你知道它是什么类型的吗?如果没有,请尝试输入以下内容:
if len(card) != 2: print type(card) raise ValueError(card + ' is not a known card.')