为什么串联在这两个示例中的工作方式不同?

2024-10-02 08:25:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Python代码的两个不同位置引发异常:

holeCards = input("Select a hand to play: ")
try:
    if len(holeCards) != 4:
        raise ValueError(holeCards + ' does not represent a valid hand.')

(编辑以更正升高代码)

^{pr2}$

出于某种原因,第一个输出的字符串与我预期的一样:

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])

Tags: to字符串代码编辑inputnoterrorselect
3条回答

这将用一个参数实例化ValueError异常,即您的合并(或添加)字符串:

raise ValueError(holeCards + ' does not represent a valid hand.')

这将用2个参数实例化ValueError异常,无论卡是什么,以及一个字符串:

^{2}$

嗯,我是遗漏了什么还是你在比较

raise ValueError(card, 'is not a known card.')

^{2}$

???在

第二个使用“+”,但是第一个使用“,”,它确实可以并且应该给出您显示的输出!在

(注。这个问题都是从两种情况下都用“+”来编辑的。也许这个问题应该删除在

“card”可能表示一个包含字符串“Kr”的元组。当您在元组上使用+运算符时,您将创建一个添加了额外项的新元组。在

编辑:不,我错了。向元组添加字符串:

>> ("Kr",) + "foo"

生成错误:

^{2}$

确定“卡片”的类型可能会有帮助。你知道它是什么类型的吗?如果不是,试着写一个打印语句,比如:

if len(card) != 2:
    print type(card)
    raise ValueError(card + ' is not a known card.')

相关问题 更多 >

    热门问题