2013-09-13 3 views
0

Я использовал этот код для генерации координат xyz.Как назначить случайное число с плавающей точкой в ​​python

from random import * 

uniqcoord = [7.63, 28.05, 66.36]   # my file contains 100 such list of points 

for i in range(10): 
    i = i + 1 
    x,y,z = uniqcoord 
    x1,y1,z1 = (uniform(x[0]-3.5,x[0]+3.5), uniform(y[1]-3.5,y[1]+3.5), uniform(z[2]-3.5,z[2]+3.5)) 
    print i, '\t', x1,y1,z1 

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

+1

«его отображаемая ошибка» не говорит нам много ... –

+1

'x',' y', 'z' - это числа. Но вы используете их в коде, например 'x [0]'. Зачем? – akonsu

+0

Вы, кажется, очень смущены большим количеством синтаксиса. Примером является то, как вы увеличиваете i в цикле for, когда он автоматически увеличивает. Вы также пытаетесь индексировать целое число. Это может помочь пересмотреть основы Python и программирования в целом. –

ответ

3

Ваш x, y, z являются float, не list. Поэтому у вас не может быть x[0] и т. Д. Вы получите no attribute или typeerror.

1

Вы неправильно используете x, y, z в строке x1,y1,z1. Посмотрите, что я сделал ниже;

from random import * 

uniqcoord = [7.63, 28.05, 66.36]   # my file contains 100 such list of points 

for i in range(10): 
    i=i+1 
    x,y,z = uniqcoord 
    x1,y1,z1 = (uniform(uniqcoord[0]-3.5,uniqcoord[0]+3.5), uniform(uniqcoord[1]-3.5,uniqcoord[1]+3.5), uniform(uniqcoord[2]-3.5,uniqcoord[2]+3.5)) 
    print i, '\t', x1,y1,z1 

х [0] не существует, но uniqcoord [0] = х, потому что uniqcoord = [х, у, г], и так далее.

Результат:

1 5.86941266341 29.4004245806 67.1323961576 
2 6.38143060206 29.7045813689 69.4867869245 
3 5.55280335095 29.9472835241 63.7388152633 
4 10.5607637875 26.6269381673 69.5256503601 
5 7.29826364813 28.5740308696 65.2122276564 
6 8.24134391937 30.880058802 69.8445734597 
7 10.246919304 27.9240839326 64.9480054046 
8 8.26957559527 28.5700768795 63.996117793 
9 5.88677020227 30.0621250245 63.7431176092 
10 8.98100830174 27.3378753286 63.1329446911 

Я думаю это то, что вы ищете.

+0

Да, я понял. Спасибо всем. – lsb123

+1

Обязательно ответьте. :) – Shashank

+0

@ lsb123 Спасибо! Если я ответу на ваш вопрос адекватно, пожалуйста, примите мое, как ваш ответ. – jwarner112

Смежные вопросы