Когда я пытаюсь запустить свой код 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).
Это дает ошибку для меня. Вы уверены, что это именно тот код, который вы используете?
да, это точный код, который я запускаю.
Ваш код вызывает исключение TypeError: object of type 'int' has no len()
, когда я его запускаю.
Используемый вами веб-сайт не запускает код с помощью обычного интерпретатора Python. Так что этот вопрос не связан с python, а связан только с конкретным веб-сайтом. Поэтому я голосую за закрытие этого поста, так как он не может быть воспроизведен другими.
Или измените вопрос, чтобы отразить конкретный веб-сайт.
Большое спасибо Даниил за разъяснение..
Из своего блог 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") / черепаха.цвет("Привет") - выдает черный цвет
Спасибо за тестирование Ричина. Похоже, это ваш ответ. 8 и 10 передаются в виде строк и, следовательно, выводят чернить.
спасибо Даниэль .. тем не менее, я только что попытался запустить приведенный ниже код без цикла for, и он снова дает мне черный цвет.
Вы используете самую последнюю версию Turtle? (Странно, что Turtle.color(10) не выдает вам ошибку, как другим в разделе комментариев.)
на самом деле я использую онлайн-компилятор черепах для проверки своего кода (repl.it/языки/python_turtle)
Бьюсь об заклад, что repl.it использует некоторую закулисную магию, чтобы уменьшить количество ошибок в учебных целях. Я бы посоветовал попробовать за пределами repl.it, так как результаты, вероятно, будут отличаться. (Я только что проверил на repl.it, что черепаха.color(10) на самом деле печатает черным цветом.)
Отредактированный ответ, чтобы отразить мой последний комментарий.
Пробовали ли вы просмотреть
turtle.color
исходный код и посмотреть, что он делает?