2013-02-25 59 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))