2015-02-02 2 views
-1

Вот мой код для случайного генератора nuumber. Пользователь вводит наибольшее и наименьшее число и получает случайное число.Python: Справка по произвольному номеру кода

import random 
Smallest_Number = raw_input('Enter Smallest Number: ') 
Largest_Number = raw_input('Enter Largest Number: ') 
print random.randint(Smallest_Number,Largest_Number) 

Вот ошибка в консоли

Traceback (most recent call last): 
File "C:/Users/Matthew/Documents/python/Random Number.py", line 7, in <module> 
print random.randint(Smallest_Number,Largest_Number) 
File "C:\Python27\lib\random.py", line 242, in randint 
return self.randrange(a, b+1) 
TypeError: cannot concatenate 'str' and 'int' objects 

Что я делаю неправильно? Помощь нужна и ценится!

+1

преобразовать входной сигнал на 'int'. – Maroun

+2

Это не форум. Никогда не редактируйте свой вопрос в другом вопросе после ответа на ваш первоначальный вопрос; не используйте ответ ни о чем, кроме _информации, которая отвечает на вопрос_, а комментарий «Bump» ничего не делает. Вы могли бы теоретически задать другой вопрос для своей новой проблемы, но, учитывая ваше очевидное отсутствие понимания основ python и SO, я бы посоветовал вам сначала изучить язык самостоятельно; и перечитайте SO-тур и справочный центр, прежде чем задавать свой следующий вопрос. – l4mpi

ответ

1

raw_input возвращает строку. randint требует ints. Вы можете преобразовать строки в int с помощью int().

smallest_number = int(raw_input('Enter Smallest Number: ')) 
largest_number = int(raw_input('Enter Largest Number: ')) 
print random.randint(smallest_number, largest_number) 
+0

Спасибо за это. Я думаю, это поможет! Он прекрасно работает! Задача решена! – TEKNO

+0

Вы также можете использовать 'input' вместо' raw_input'. Таким образом, вам не нужно преобразовывать данные в int –

+3

@AshokaLella: Пожалуйста, не поощряйте людей использовать 'input()' в Python 2, так как это эффективно 'eval (raw_input())' и вызов 'eval () 'на ненадежных данных может быть [опасно] (http://nedbatchelder.com/blog/201206/eval_really_is_dangerous.html). В Python 3 'input()' ведет себя как Python 2 'raw_input()', так что это безопасно. –

0

raw_input возвращает string объект, так и Smallest_NumberLargest_Number являются строками.

random.randint ожидает целых чисел, так что вам нужно преобразовать строки:

import random 
Smallest_Number = raw_input('Enter Smallest Number: ') 
Largest_Number = raw_input('Enter Largest Number: ') 
print random.randint(int(Smallest_Number), int(Largest_Number)) 
+0

Спасибо за это. Я думаю, это поможет! Он прекрасно работает! Задача решена! – TEKNO

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