未知语法错误

0 投票
3 回答
1677 浏览
提问于 2025-04-15 20:49

我为什么运行这段代码时会出现语法错误?如果我把标记的部分(return cards[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 个回答

1
  • 你的 SyntaxError 错误是因为在 cards[i] = cards[i].append(random.randint(0,9) 之后有一个没有闭合的括号。
  • 当你解决这个问题后,你会发现调用这个函数时会出现 AttributeError 错误。你把 cards[i] 设置成了一个 str 对象,然后试图在它上面调用 append 方法。字符串是没有 append 方法的。
  • 你在循环中遍历索引并改变 cards 中的每个位置。这通常意味着你可能做错了什么;在 Python 中,通常更常见的做法是直接创建一个新列表。
    • 当你确实需要使用索引时,这种情况非常少见,通常最好使用 enumerate
  • 更重要的是,关于最后一点……这个函数修改了一个全局变量 cards使用函数来改变全局状态是个坏主意。 有两个可能性几乎肯定会更好:
    • 创建一个类来存储卡片状态,并定义一个叫 deal_cards 的方法来修改某个属性 self.cards 或其他的。(这可能是更好的选择。)
    • 创建一个接受 cards 作为参数并返回一个新列表的函数。(这可能不是最佳选择,但在模块化、可维护性和可测试性方面比你现在的做法要好。)
1

缺少一个关闭标签:

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

缺少一个闭合的括号。而下一行的返回语句缩进不正确。

撰写回答