-4
for line in range(50):
    def show_table():   

        if len(table) == 0: 
            print('There are no cards on the table.')   
        else:
            for card in range(len(table)):
                print names[table[card][0]] + ' played a ' + str(table[card][1]) + '.'
4

1 回答 1

1

第一个问题是冒号出现在 if 条件的末尾,而不是单词之后if。所以:

if len(table) == 0: print('There are no cards on the table.')

或更好:

if len(table) == 0:
    print('There are no cards on the table.')

但是,使用 Python 2.7 和 3.3 对此进行测试,我认为您实际上应该得到一个 SyntaxError,小插入符号指向多余的冒号,而不是关于缩进的错误。

这意味着实际的错误是它上面的行也有问题。

下一个问题是您只能使用带一个冒号而不是两个冒号的单行快捷方式,因此:

else: for card in range(len(table)): print names[table[card][0]] + ' played a ' + str(table[card][1]) + '.' ?

只会混淆编译器。你真的应该把它分解成惯用的 Python,而不是试图看看你能摆脱什么:

for line in range(50):

    def show_table():
        if len(table) == 0:
            print('There are no cards on the table.')
        else:
            for card in range(len(table)):
                print names[table[card][0]] + ' played a ' + str(table[card][1]) + '.' ?

我不确定为什么要为 50 行中的每一行定义一个新函数,然后永远不要调用该函数,但这至少是合法的……几乎。

最后一个问题是这样的:

print names[table[card][0]] + ' played a ' + str(table[card][1]) + '.' ?

首先,print不是 Python 3.3 中的语句,它是一个常规的旧函数,因此您必须使用参数调用它。其次,?最后似乎没有附加到它可以合理附加的任何东西上,所以它可能是一个需要修复的杂散错字。所以:

print(names[table[card][0]] + ' played a ' + str(table[card][1]) + '.')

查看您粘贴到已编辑问题中的原始版本 - 这只是一个猜测,因为您没有将其粘贴为代码 - 看起来可能还有两个问题。

首先,您的第一for行缩进 1 列。当您稍后返回第 0 列时,这被计为两个凹痕,而不是一个。

其次,该def show_table():行缩进到第 8 列,但接下来是回到第 0 列。也许你想要一个空函数?如果是这样,那是不合法的;在 Python 中,函数永远不能为空。pass但是您可以使用以下语句获得相同的效果:

def show_table():
    pass
于 2012-12-06T02:09:00.200 回答