#python #random
#python #Случайный
Вопрос:
У меня есть одна ошибка, которая гласит: «у float нет атрибута int». ошибка. Вопрос в том, чтобы написать функцию, которая принимает параметр как изображение и рисует две вертикальные линии в img, одну красную линию от (50,0) до (50 300) и одну, состоящую из случайно окрашенных пикселей от (150,50) до (150 250). По какой-то причине случайная часть, где у меня randomcolor.int (0,255) — вот где у меня ошибка. Есть ли что-то, что мне нужно преобразовать? Это мой код:
from cImage import*
import random
RandomColor = random.random()
myImWin = ImageWin("Line Image", 300, 300)
lineImage = EmptyImage(300,300)
redPixel = Pixel(255,0,0)
randomRed = Pixel(RandomColor.int(0,255))
for i in range(300):
for x in range(250):
lineImage.setPixel(50,i,redPixel)
randomRed.setPixel(150,x,randomRed)
lineImage.draw(myImWin)
randomRed.save("lineImage.gif")
Любые предложения помогут, спасибо.
Комментарии:
1. Мне любопытно, откуда у вас появилась идея, которая
.int(0,255)
масштабировала бы значение и преобразовывала его в целое число? Я не думаю, что видел это раньше в каком-либо контексте.2. Я хотел поставить randint, но потом понял, что позже я должен просто поставить import random сверху, избавиться от randomcolor = random.random() . тогда в области, где у меня ошибка, я должен поставить random.randint(0,255),0,0) . Я забыл поставить 0,0, потому что в SetPixels он принимает 3 значения
Ответ №1:
random.random()
возвращает случайную плавающую точку в диапазоне [0.0,1.0). Если вам нужно целое число, вам нужно будет сделать:
int(RandomColor) # would be 0 because random() is < 1.0
int(RandomColor * 256) # to get 0-255
Вам нужно случайное число в диапазоне от 0 до 255, так что не могли бы вы просто сделать:
random.randint(0,255)
Комментарии:
1.
int(RandomColor * 255)
вы получите только диапазон от 0 до 254. 1 дляrandom.randint()
.2. @TimPietzcker — Спасибо, что указали на это в отношении
random()
диапазона.
Ответ №2:
RandomColor
является результатом random.random()
, и это a float
. Если вы хотите получить от него что-то между 0 и 255, вам следует использовать int(RandomColor*256)
или другую более конкретную функцию random
module .
Комментарии:
1. Нет, вам нужно
int(RandomColor*256)
.2. спасибо всем за ваши предложения… Да, имеет смысл указывать как целое число, и вывод числа в виде float не имеет смысла.