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