我刚开始学习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 :(得分: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
答案 1 :(得分: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
答案 2 :(得分:2)
问题不是引用。问题出在数据 types 上。带有基数的int
需要整数基数和字符串数。因此,在您的情况下,您将使用:
int(num,int(base))
这将获取从raw_input
返回的字符串,它会从base
字符串构造一个合适的字符串,同时将num
保留为字符串所需的字符串。 int
函数。
答案 3 :(得分:1)
引号告诉Python这些字符应该被解释为String的内容,而不是语言语法。
当你有一个变量时,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))