2013-02-25 2 views
1

Я только что начал изучать Python. Я пытаюсь, чтобы пользователь вводил числовую базу, а число и преобразовывал ее в десятичную.ввод переменной внутри кавычек в python

Я пытался использовать встроенный в междунар функции следующим образом:

base = raw_input("what number base are you starting with? \n") 
num = raw_input("please enter your number: ") 
int(num,base) 

Моя проблема заключается в том, что при использовании, что функция INT, число ваших конвертирование должно быть в кавычках, как так: int('fff',16)

Как это сделать, когда я использую переменную?

+0

Вы можете преобразовать число в строку с 'Str (число)', например 'ул (10)' будет return '' 10''. – Liffon

ответ

5

Цитаты не нужны. Кавычки не являются частью строки.

>>> int('fff',16) 
4095 
>>> da_number = 'fff' 
>>> int(da_number, 16) 
4095 

Вам, однако, необходимо отбросить базу до целого числа.

>>> base = '16' 
>>> int(da_number, base) # wrong! base should be an int. 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: an integer is required 
>>> int(da_number, int(base)) # correct 
4095 
2

Проблема не в кавычках. Проблема связана с данными типа. int с базой рассчитывает целое число и строка номер. Таким образом, в вашем случае, вы будете использовать:

int(num,int(base)) 

Это берет строки которые возвращаются из raw_input и создает подходящую базу из base строки, оставляя num в виде строки в соответствии с требованиями int функция.

3

Результат raw_input() будет строкой, я думаю, что ваша проблема в том, что base по-прежнему является строкой, когда вам нужно, чтобы это целое число.

Попробуйте следующее:

base = raw_input('base? ') 
num = raw_input('num? ') 
print int(num, int(base)) 

Например:

>>> base = raw_input('base? ') 
base? 16 
>>> num = raw_input('num? ') 
num? fff 
>>> print int(num, int(base)) 
4095 
1

Кавычки там сказать Python, что эти символы должны быть интерпретированы как содержимое строки, а не как синтаксис языка.

Когда у вас есть переменная, Python уже знает, что содержимое является строкой. Мало того, что вам не нужны кавычки, но добавление их путало бы Python, думая, что вы хотите, чтобы строка содержала имя переменной.

Так, как это:

int('fff',16) 

и это:

someNumber = 'fff' 
int(someNumber,16) 

делают то же самое, насколько функция int() обеспокоен.

Все, что сказано, int() может принимать строку или число для значения, но должно иметь номер для базы.Таким образом, поскольку raw_input всегда возвращает строку, вам нужно сделать что-то подобное:

base = raw_input("what number base are you starting with? \n") 
num = raw_input("please enter your number: ") 
int(num,int(base)) 
Смежные вопросы