意外的缩进

时间:2015-10-21 21:48:38

标签: python indentation

我不确定为什么打印的最后一行是缩进的,任何帮助都会非常感激。

    def Task9():
        list1 = []
        n = int(input("Enter width of latin square: "))
        for x in range(1,n):
            list1.append(x)

        for x in range(n):
                print(" ".join( str(e)for e in list1[x:]) ," ".join( str(e) for e in list1[:x]))

    Task9()

2 个答案:

答案 0 :(得分:0)

最后一行有一个额外的空间,原因相同,每条行都有一个额外的空间。明显加入以查看它,例如使用“X”而不是“”:

1X2X3X4X5X6 
2X3X4X5X6 1
3X4X5X6 1X2
4X5X6 1X2X3
5X6 1X2X3X4
6 1X2X3X4X5
 1X2X3X4X5X6

答案 1 :(得分:0)

这很有趣,但在打印多个变量/字符串时,您似乎偶然发现了自动插入空间。结合元组打印问题,如果使用Python版本2.x.

('hi', 'there')
what now?
nothing

在我的Python v.2.7.10中输出:

from __future__ import print_function

注意第一个包括parens,并显示这实际上是两个字符串的元组,而不是打印函数?使用print('{}{}'.format(" ".join(... [x:]), " ".join(... [:x])))我们将禁止没有parens的版本,但仍会在元素之间插入空格。

替代版本

要删除可以使用for x in range(n): print(" ".join(str(e) for e in (list1[x:] + list1[:x]))) 的空间。但这会消除两部分之间的通缉空间。将其插入格式字符串将重新引入最后一行中不需要的空格。

更好的选择是在连接和打印之前总结两个切片:

import itertools
for x in range(n):
    print(" ".join(str(e) for e in itertools.chain(list1[x:], list1[:x])))

使用itertools而不是对切片求和的另一个版本:

{{1}}

这两个版本都产生预期的输出,我认为这是一个使用偏好的问题。然而,第一个不需要任何导入,并且非常简洁。