在Python中将变量放入引号中

1 投票
4 回答
2208 浏览
提问于 2025-04-17 17:05

我刚开始学习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 个回答

2

问题不在于引号,而在于数据的 类型int 函数需要一个 整数基数 和一个 字符串数字。所以,在你的情况下,你应该使用:

int(num,int(base))

这段代码会把从 raw_input 返回的 字符串 处理成合适的基数,同时保持 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
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

撰写回答