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 等?
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 等?
不,您没有正确执行打印格式。您有一种%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))