у float нет атрибута int , в python 3.2

#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 не имеет смысла.