对于 Python 中的循环,但步长为 "n"

For cycle in Python, but with a step of "n"

我正在编写一个 python 程序,它读取图像每个像素的颜色,然后用 ASCII 字符创建一个与该像素亮度相似的文件(使用原始点像素是暗的,如果是亮的则显示“#”)。我意识到 ASCII 字符比单个像素大得多:生成的 ASCII 艺术作品太大而无法在普通显示器上显示。

现在我想尝试应用这个过程,每 10 个像素只计算一个。我应该怎么做?如何设置我的for循环的步骤!=1(默认值)?

您可以使用 range 的三参数形式:

for i in range(0, width, 10):
    for j in range(0, height, 10):
        ...

尽管仅采样 1% 的像素很可能会产生非常糟糕的结果。例如,您可以通过使每个输出字符取决于每个 10x10 像素块的平均值来改进它。

实际上,range()需要3个位置参数,其中2个默认设置为0和1。参数是:start =从哪个数字开始,stop = 停止的数字和 step = 每次增加计数的数字。默认情况下,start 等于 0,step 等于 1。当您编写 range(number) 时,您将停止分配给您的号码。所以,如果我想要每 10 个数字,我只需要写:

range(0, 100, 10)

另一个解决方案显然是

for mul in range(width//10):
   do_thing(mul*10)