Python 函数认为int是一个列表

Python 函数认为int是一个列表,python,list,function,integer,Python,List,Function,Integer,我定义了一个使用列表长度作为输入的函数。看起来是这样的: lhand = len(hand) def roll(lhand): global hand ndice = 5 - sum(lhand) for i in range(ndice): newhand = random.randint(1, 6) hand = hand.append(newhand) return hand 现在,由于某种原因,我得到一个错误,即在列表和字

我定义了一个使用列表长度作为输入的函数。看起来是这样的:

lhand = len(hand)
def roll(lhand):
    global hand
    ndice = 5 - sum(lhand)
    for i in range(ndice):
        newhand = random.randint(1, 6)
        hand = hand.append(newhand)
    return hand
现在,由于某种原因,我得到一个错误,即在列表和字符串之间不允许使用运算符。这让我很困惑,因为我知道lhand应该是一个int。我试图通过在很多地方放置int()来解决这个问题,但我仍然得到了相同的错误。即使我将函数中的lhand改为一个数字,我仍然会得到相同的错误。我如何解决这个问题(我想)是通过在函数中使用sum(lhand)。这似乎有效,因为它不再给我一个错误。我仍然想知道为什么我会出现那个错误,或者我的代码中可能有其他错误导致它失败


谢谢

您的问题可能在于这一行-
ndice=5-sum(lhand)
。您的
l和
是一个数字,不能对整数使用
sum


您还应该避免使用
global
,这总是错误的。

在BoobyTrap关于避免使用
global
的评论之后,我建议您如何修复此代码:将
hand
作为参数,而不是
lhand

def roll(hand):
    ndice = 5 - len(hand)
    for i in range(ndice):
        hand.append(random.randint(1, 6))
    return hand

请注意,当您调用
hand.append()
时,
append
方法修改
hand
,但返回
None
,因此您不想将
hand
重新指定给其结果。

请修改格式,这样理解代码是不可能的。为什么
hand
是全局的并返回?此代码似乎不可能导致该错误。在修复缩进的同时,请显示完整的错误回溯。请提供预期的see。显示中间结果与预期结果的偏差。我们应该能够将单个代码块粘贴到文件中,运行它,并重现您的问题。这也让我们可以在您的上下文中测试任何建议。