Каков эффект от передачи скаляра в turtle.color() в Skulpt?

Когда я пытаюсь запустить свой код Python ниже, как черепаха.цвет интерпретирует ввод как число?

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/языки/python_turtle).

Пробовали ли вы просмотреть turtle.color исходный код и посмотреть, что он делает?

DeepSpace 08.04.2019 20:21

Это дает ошибку для меня. Вы уверены, что это именно тот код, который вы используете?

iz_ 08.04.2019 20:22

да, это точный код, который я запускаю.

Richin Daniel 08.04.2019 20:25

Ваш код вызывает исключение TypeError: object of type 'int' has no len(), когда я его запускаю.

martineau 08.04.2019 21:02

Используемый вами веб-сайт не запускает код с помощью обычного интерпретатора Python. Так что этот вопрос не связан с python, а связан только с конкретным веб-сайтом. Поэтому я голосую за закрытие этого поста, так как он не может быть воспроизведен другими.

gdlmx 08.04.2019 21:14

Или измените вопрос, чтобы отразить конкретный веб-сайт.

MonteCarloSims 08.04.2019 21:15

Большое спасибо Даниил за разъяснение..

Richin Daniel 08.04.2019 21:17
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
7
94
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Из своего блог repl.it упоминает, что они используют лепить в качестве своей веб-IDE.

На странице Skulpt Гитхаб показана следующая функция, которая предполагает, что по умолчанию используется «Черный». Это объясняет странное поведение, которое вы видите по сравнению с другими при отладке.

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;
}

черепаха.цвет("10") / черепаха.цвет("Привет") - выдает черный цвет

Richin Daniel 08.04.2019 20:42

Спасибо за тестирование Ричина. Похоже, это ваш ответ. 8 и 10 передаются в виде строк и, следовательно, выводят чернить.

MonteCarloSims 08.04.2019 20:47

спасибо Даниэль .. тем не менее, я только что попытался запустить приведенный ниже код без цикла for, и он снова дает мне черный цвет.

Richin Daniel 08.04.2019 20:52

Вы используете самую последнюю версию Turtle? (Странно, что Turtle.color(10) не выдает вам ошибку, как другим в разделе комментариев.)

MonteCarloSims 08.04.2019 20:54

на самом деле я использую онлайн-компилятор черепах для проверки своего кода (repl.it/языки/python_turtle)

Richin Daniel 08.04.2019 20:56

Бьюсь об заклад, что repl.it использует некоторую закулисную магию, чтобы уменьшить количество ошибок в учебных целях. Я бы посоветовал попробовать за пределами repl.it, так как результаты, вероятно, будут отличаться. (Я только что проверил на repl.it, что черепаха.color(10) на самом деле печатает черным цветом.)

MonteCarloSims 08.04.2019 20:59

Отредактированный ответ, чтобы отразить мой последний комментарий.

MonteCarloSims 08.04.2019 21:14

Другие вопросы по теме