2013-02-25 64 views
1

我剛開始學習Python。我試圖讓用戶輸入一個數字基數和一個數字,並將其轉換爲十進制數。把變量放在python裏面

我一直在試圖使用內置的Int函數是這樣的:

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(數字)',例如'STR(10)'會返回''10'。 – Liffon 2013-02-25 19:36:34

回答

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返回,並同時留下num作爲一個字符串所要求的intbase字符串構建一個合適的鹼功能。

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))