问题描述
我不确定为什么要缩进最后一行,我们将不胜感激。
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()
1楼
出于同样的原因,最后一行还有一个额外的空间,因为每行都有一个额外的空间。 可见地加入以查看它,例如,用“ X”代替“”:
1X2X3X4X5X6
2X3X4X5X6 1
3X4X5X6 1X2
4X5X6 1X2X3
5X6 1X2X3X4
6 1X2X3X4X5
1X2X3X4X5X6
2楼
这有点有趣,但是似乎您在打印多个变量/字符串时偶然发现了自动空格插入。 如果使用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])))
这两个版本都能产生预期的输出,我认为使用哪种偏好是一个问题。 但是,第一个不需要任何导入,并且非常简洁。