【发布时间】:2010-10-06 12:44:46
【问题描述】:
我在 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.
但是,第二个输出了一些奇怪的集合和字符串的混合:
ERROR: ('Kr', 'is not a known card.')
为什么“+”运算符在这两种情况下表现不同?
编辑:对 init 的调用如下所示:
card1 = PokerCard(cardsStr[0:2])
card2 = PokerCard(cardsStr[2:4])
【问题讨论】:
-
我正在努力了解第二个错误是如何出现的。我无法重现它。你确定它来自第二个代码块吗?您能否也发布捕获异常的代码?
-
len('Kr') == 2 不会通过测试。
-
由于一个 ValueError 示例是连接(“+”)而另一个 ValueError 不是连接(它使用“,”),所以问题标题完全错误。请修复它。
-
S.Lott 的评论间接回答了我的问题。在我使用它的上下文中, raise ValueError(card, 'is not a known card.') 中的逗号不是作为连接符运行的,就像它在 print(card, 'is not a known卡。')这是我的错误。
-
(续)如果您愿意将您的评论转化为答案,我很乐意支持它。
标签: python concatenation