2015-04-01 2 views
0

Я работаю над программой в python 3.4.3, которая генерирует статистическую статистику астероидов. Я хочу, чтобы он генерировал случайное имя, тип и поверхностную гравитацию.Python 3.4.3 Ошибки статистического генератора астероидов

Примеры:

MUS-983 A Тип поверхности Плотность: 0,31 м/с²

код у меня до сих пор: import string, random def pick(num): for j in range(num): print("".join([random.choice(string.ascii_uppercase) for i in range(3)])+"-"+"".join([random.choice(string.digits) for i in range(3)])+" "+"".join([random.choice(['A Type','B Type','C Type'])])+"Surface Gravity: "+"".join([random.randint(0.01, 0.39)]))

Который работал хорошо, пока я не положил в части о поверхностной гравитации на конце. Теперь у меня есть несколько вопросов. Во-первых, когда я запускаю программу, я получаю ошибку:

Traceback (most recent call last): File "<pyshell#5>", line 1, in <module> pick(1) File "/Users/James/Desktop/Asteroid Name Generator.py", line 4, in pick print("".join([random.choice(string.ascii_uppercase) for i in range(3)])+"-"+"".join([random.choice(string.digits) for i in range(3)])+" "+"".join([random.choice(['A Type','B Type','C Type'])])+" "+"".join([random.randint(0.01, 0.39)])) File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/random.py", line 218, in randint return self.randrange(a, b+1) File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/random.py", line 182, in randrange raise ValueError("non-integer arg 1 for randrange()") ValueError: non-integer arg 1 for randrange()

Второй вопрос заключается в том, чтобы интегрировать «/ с² м» титул перед случайным поверхности тяжести знака после запятой.

Спасибо!

ответ

0

Вы задаете параметры с плавающей запятой random.randint(). Попробуйте изменить:

random.randint(0.01, 0.39) 

к:

float(random.randint(1, 39))/100.0 

редактировать: Хорошо это необходимо, что преобразуется обратно в строку, давайте использовать строку форматирования, чтобы сделать вещи немного симпатичнее:

"Surface Gravity: %f.2 m/s2"%(float(random.randint(1, 39))/100.0) 
+0

I попробовал ваше решение, но я получил эту ошибку: Traceback (последний последний звонок): Файл "", строка 1, в p ick (1) Файл «/ Users/James/Desktop/Asteroid Name Generator.py», строка 4, в списке print («". join ([random.choice (string.ascii_uppercase) для i в диапазоне (3) ]) + "-" + "". join ([random.choice (string.digits) для i в диапазоне (3)]) + "" + "". join ([random.choice (['A Type (Small) ',' B Type (Medium) ',' C Type (large) ',' D Type (Huge) '])]) + "" + "". Join ([float (random.randint (1, 39)) /100.0])) TypeError: элемент последовательности 0: ожидаемый экземпляр str, найденный float – user2368535

+0

@ user2368535 просто нужно преобразовать это обратно в строку. Я обновил свой ответ и использовал некоторое форматирование строк, чтобы немного загромождать вещи. –

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