语法错误未知

时间:2010-03-24 21:59:59

标签: python

为什么运行此代码会出现语法错误?如果我删除突出显示的部分(返回卡[i]),我会收到错误,突出显示函数调用。

请帮助:)

def dealcards():
    for i in range(len(cards)):
        cards[i] = ''
        for j in range(8):
            cards[i] = cards[i].append(random.randint(0,9)
    return cards[i]


print (dealcards())

3 个答案:

答案 0 :(得分:5)

cards[i] = cards[i].append(random.randint(0,9)
                                              ^

缺少右括号。并且下一行的return语句缩进不正确。

答案 1 :(得分:1)

失踪:

cards[i] = cards[i].append(random.randint(0,9))

答案 2 :(得分:1)

  • 您的SyntaxError是由于cards[i] = cards[i].append(random.randint(0,9)
  • 之后的未关闭的paren所致
  • 当你清除它时,你会发现当你调用这个函数时你会得到一个AttributeError。您将cards[i]设置为str对象,然后尝试在其上调用append。字符串没有append方法。
  • 您循环索引并更改cards中的每个位置。这通常表明你做错了事;在Python中更常见的只是创建一个新列表。
    • 如果您确实需要索引,这是非常罕见的,通常最好使用enumerate
  • 关于最后一个问题的更多内容......此函数修改了全局cards使用函数来改变全局状态是一件坏事。有两种可能性几乎肯定会更好:
    • 创建一个类,将卡存储为一个名为deal_cards的方法的状态,该方法会改变某些属性self.cards或其他任何属性。 (可能是要走的路。)
    • 创建一个接受cards作为参数的函数并返回一个新列表。 (可能不是那种方法,但可以提高当前技术的模块性,可维护性和可测试性。)