-2

当我尝试在下面运行我的 python 代码时,turtle.color如何将输入解释为数字?

import turtle

for i in ['red', 'blue', 'green', 'pink', 8, 10]:
       turtle.color(i)
       turtle.forward(100)
       turtle.right(90)

实际的:

我得到的输出是一个边按给定顺序排列的正方形。当它到达 时turtle.color(8),其中一侧被黑色覆盖,然后是下一侧 ( turtle.color(10))。

预期的:

代码应该出错turtle.color(8),没有意义!!

我实际上正在使用在线海龟编译器来测试我的代码(repl.it/languages/python_turtle)。

4

1 回答 1

2

在他们的博客中,repl.it 提到他们使用skulpt作为他们的 webIDE。

Skulpt 的Github页面显示以下功能,表明“黑色”是默认设置。这解释了您在调试时看到的与其他人相比的奇怪行为。

function createColor(color, g, b, a) {
    var i;

    if (g !== undefined) {
        color = [color, g, b, a];
    }

    if (color.constructor === Array && color.length) {
        for(i = 0; i < 3; i++) {
            color[i] = (typeof color[i] === "number") ?
                Math.max(0, Math.min(255, parseInt(color[i]))) :
                0;
        }
        if (typeof color[i] === "number") {
            color[3] = Math.max(0, Math.min(1, color[i]));
            color = "rgba(" + color.join(",") + ")";
        }
        else {
            color = "rgb(" + color.slice(0,3).join(",") + ")";
        }
    }
    else if (typeof color === "string" && !color.match(/\s*url\s*\(/i)) {
        color = color.replace(/\s+/g, "");
    }
    else {
        return "black";
    }

    return color;
}
于 2019-04-08T18:35:04.873 回答