2015-10-01 2 views
0

Я работаю над проектами на rosettacode, чтобы изучить программирование на Python. Я попытался исследовать ответ на свой вопрос, но я предполагаю, знаю достаточно, чтобы Google ответ впоруПочему float (input() предпочтительнее использовать input()?

задача была:.. в решении этой задачи, цель состоит в том, чтобы ввести строку и целое число 75000, из текстовой консоли

Мой код:

Person = input('Enter your name, please:') 
print('Hello', Person) 
input('Enter 75000: ') 
print('Thank you') 

Ответ в вики сказано частично:

Предпочтительный способ получения чисел от пользователя - взять ввод в виде строки и передать его любому из числовых типов, чтобы создать экземпляр соответствующего номера.

number = float(raw_input("Input a number: ")) 

Python 3.0 эквивалентны:

number = float(input("Input a number: ")) 

поплавок может быть заменен любым числовым типом, таким как INT, комплекс, или decimal.Decimal. Каждый из них зависит от ожидаемого ввода.

Хотя мой код все еще работал, я хочу понять этот путь.

+1

Пожалуйста, перефразировать ваш заголовок вопроса к чему-то более конкретно – scniro

+0

я думаю, вы спрашиваете, почему, например, 'int (raw_input (...))' является предпочтительным для 'input (...)' в Python 2.x - в этом случае см. http://stackoverflow.com/questions/1832940/is-using-eval -in-python-a-bad-practice, http://stackoverflow.com/q/1933451/3001761 – jonrsharpe

ответ

1

input() в Python 3 (или raw_input() в Python 2) возвращает строку. Строка не является float (или int), поэтому вы не можете, например, вычислить что-то с ней. Для этого вам нужно сначала преобразовать его в float или int. И вы делаете это с float() или int().

Так что ваш код «работает» в том, что он требует некоторого ввода. Но результатом этого ввода является строка в обоих случаях, а не int, изначально запрошенная задачей.

+0

Спасибо! Это имеет большой смысл. – PythonIsNewToMe

0

использование float(input("prompt")) не предпочтительнее, это необходимой, если вы действительно хотите использовать значение как число с плавающей точкой.

Все входные данные, поступающие с клавиатуры, входят в виде строки. Если вы используете его только как строку (например, распечатываете ее, сохраняете в файл и т. Д.), Нет причин конвертировать ее в число с плавающей запятой. Это только когда вы хотите использовать его как фактическое число, которое вам нужно для его преобразования.


Вы можете найти свой код легче тестировать, отлаживать и поддерживать, если не встраивать функции, как это. Это особенно актуально во время обучения. Разделив его на два заявления, вы можете легко изучить промежуточные значения (например: что input() возвращается до преобразования)

s = input("prompt") 
f = float(s) 
+0

Большое спасибо! – PythonIsNewToMe