1
from random import randint

List = [randint(0,99) for i in range(20)]
print("%3s" % List)
List.sort()
print("%3s" % List)

所以我一直在研究这段代码,给我一个随机列表,其中包含 0 到 99 之间的 20 个输入。我是否正确地执行了打印语句,以便每行打印 20 个,字段为 3?我假设字段意味着 xx9 或 x98 等?

4

1 回答 1

3

不,您没有正确执行打印格式。您有一种%s格式,可以正确打印字符串。添加 3,如 中%3s,将尝试在宽度为 3 的字段中打印字符串。但是你然后传入List,它不是一个字符串,而是一个列表。不过没关系,因为 Python 知道如何将list实例打印为字符串。它比 3 宽,因此 Python 以它可以达到的任何宽度打印它。所以 Python 会打印出类似这样的内容,并带有方括号和逗号:

[0, 4, 6, 9, 19, 19, 22, 25, 34, 41, 65, 71, 72, 74, 74, 75, 78, 79, 88, 99]

有两种简单的方法可以获得所需的输出。一种是使用for循环并一次打印一个值,如下所示:

for n in List:
    print("%3d" % n, end='')
print()

通过使用end='',我们告诉 Python 在打印我们的号码后不要打印“换行符”。然后,一旦循环完成,我们print()自己调用来打印一个换行符。

另一种简单的方法是使用.join()方法函数将您要打印的所有数字连接在一起,这将为您提供一个正是您想要打印的字符串。然后打印出来!

s = ' '.join(str(n) for n in List)
print(s)

join()我不知道你以前是否见过这样的事情,但在通话中存在一种单行迷你循环。这称为“生成器表达式”,它将生成我们想要的值。 List包含整数,并且join()需要字符串,因此我们将整数转换为字符串,以便join()知道如何处理它们。

当然,如果我们愿意,我们可以在一行中完成所有操作:

print(' '.join(str(n) for n in List))
于 2013-10-23T04:59:08.373 回答