未知语法错误
我为什么运行这段代码时会出现语法错误?如果我把标记的部分(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)
^
缺少一个闭合的括号。而下一行的返回语句缩进不正确。