首页 > 解决方案 > 为什么这是一个串联错误?只是想不通

问题描述

我的代码在这里:https ://pastebin.com/UxZibL4B

这个简单的游戏程序是我用来学习编码的。最终,它将管理旧学校版本的龙与地下城的所有任务。我希望它能够处理比赛的所有裁判功能。

这是有问题的行:

Palanquin_v                     = ['ATTRIBUTES ', '^ ', 0, 'S ', 0, 'F ', 0, 'C ', 1, 'U ', 0, 'X ', 0, '£ ', 0, 'T ', 0, 'ARMOR CLASS ', 12, 'HIT DICE ', 3, 'D8', 1, 'D6', 0, 'D4', 0, 'D10', 0, 'D12', 0, 'DAMAGE ', '1d8',                            0,                                    0,                   0,    0, 'SPECIAL ', 'Roll encounter each turn,  which aids palanquin if given 1,000 GP. Buys gems at 2d6 x 10% value; insulted if refused.',   'MOVE ', 12, 'FLIGHT ', 0, 'SWIM ',  0,  'Palanquin'] # got a traceback to here, traceback was 288, then 240 and variable printed was Monster_Generator_Roll_v, with a value of 89

目前,它所做的只是从指定列表中“汇总”随机遇到的怪物。每个怪物都有一些统计数据(其中大多数目前无法理解,我试图在我美化它之前让它工作)。

但是,有两个“卷”可以修改怪物的统计数据:

怪物可以是“巫师”,这意味着它知道如何施放法术,这些法术也是从列表中随机生成的。

怪物也可以是“巨大的”,这意味着它比大多数同类怪物更大更卑鄙。当这个结果产生时,该生物的护甲等级、生命骰和每次攻击的伤害(在多次攻击中,如果它可以产生不止一次的话)都增加了+4。

再次,任何怪物都可以随机获得“巫术”和“巨大”结果的多次加法。因此,“Sorcerous, Sorcerous, Tremendous, Tremendous,Tremendous, Vampire”(极少见,但有可能发生)将获得额外的“Sorcerous”增加两倍,而“Tremendous”增加三倍。

总的来说,它工作得很好,但是当它到达第 89 行时,它给了我一个连接错误(只能将 int 连接到 int,而不是 int 到 string),其中包含 Palanquin 怪物的统计信息。

虽然这是一个与所有其他代码行完全相同的布局,但出于某种原因,只有在“巨大”滚动发生时才会出现连接错误。当 python 试图为怪物的盔甲等级提供数字 +4 提升时,它告诉我我正在尝试将一个整数连接到一个字符串。

我不明白这一点,因为它看起来像代码中的一个字符串,所有其他怪物装甲类都以相同的方式处理,notepad++ 以红色显示统计数据,这就是它在我的计算机上对整数所做的。

就像一个优秀的小程序员一样,我已经研究了好几天,在堆栈溢出、youtube、reddit 等上查找它,但就是想不通。

我敢肯定它很简单。

有什么帮助吗?

谢谢。

顺便说一句:我对编程和 stackoverflow 是全新的,我确信我违反了十几个规则,但不是故意的。感谢您的耐心。

PS 代码在一个循环中只是因为如果它很快坏了我更容易尝试调试。再次,我希望我没有违反任何规则。

标签: concatenationstring-concatenation

解决方案


通过在添加之前添加一个打印语句,我看到一个**:

103
Tremendous
89
Black Knight
>>>>> ** 4
Traceback (most recent call last):
  File "DnD.py", line 295, in <module>
    Add_Tremendous_To_Random_Monster_f()
  File "DnD.py", line 247, in Add_Tremendous_To_Random_Monster_f
    Tremendous_Monster_ARMOR_CLASS_v = (Randomly_Generated_Monster_v[18] + (Tremendous_Monster_Bonus_v))
TypeError: can only concatenate str (not "int") to str

如果我检查黑骑士(第 163 行),我会看到:

'ARMOR CLASS ','**'

由于 **,连接失败。它期待一个数字。


推荐阅读