1

我刚开始学习 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)

当我使用变量时,我该如何做到这一点?

4

4 回答 4

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
于 2013-02-25T19:38:04.743 回答
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
于 2013-02-25T19:39:20.113 回答
2

问题不在于引号。问题在于数据类型intwith a base 需要一个整数基数和一个字符串 number。所以,在你的情况下,你会使用:

int(num,int(base))

这将获取从中返回的字符串raw_input,并从字符串构造一个合适的基础,同时按照函数的要求作为base字符串保留。numint

于 2013-02-25T19:38:37.070 回答
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))
于 2013-02-25T19:44:41.520 回答