当前位置: 代码迷 >> python >> 意外缩进
  详细解决方案

意外缩进

热度:87   发布时间:2023-06-13 15:08:40.0

我不确定为什么要缩进最后一行,我们将不胜感激。

    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()

出于同样的原因,最后一行还有一个额外的空间,因为行都有一个额外的空间。 可见地加入以查看它,例如,用“ X”代替“”:

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

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

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

在我的Python v.2.7.10中,输出:

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

注意第一个如何包含括号,并显示这实际上是两个字符串的元组,而不是打印函数? from __future__ import print_function我们将禁止不带括号的版本,但仍将在元素之间插入空格。

替代版本

要删除空间,您可以使用print('{}{}'.format(" ".join(... [x:]), " ".join(... [:x]))) 但这将删除两个部分之间的所需空间。 将其插入格式字符串会在最后一行重新引入不需要的空间。

更好的选择是在合并和打印两个切片之前对其进行汇总:

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

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

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

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

  相关解决方案