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]) + '.'
答案 0 :(得分: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列时,那被视为两个dedents,而不是一个。
其次,def show_table():
行缩进到第8列,但接下来就是第0列。也许你想要一个空函数?如果是这样,那是不合法的;在Python中,函数永远不会为空。但是你可以使用pass
语句获得相同的效果:
def show_table():
pass