Python 基值在int函数中起什么作用?

Python 基值在int函数中起什么作用?,python,Python,我读过官方文件,但还是很困惑 我在我的终端上尝试了一些命令,我找到了一些规则,但仍然不太清楚。希望对此有更多了解的人能进一步解释 以下是我的例子和发现: int('0', base=1) ValueError: int() base must be >= 2 and <=36 int('3', base=2) ValueError: invalid literal for int() with base 2: int('3', base=4) 3 int('33', base=

我读过官方文件,但还是很困惑

我在我的终端上尝试了一些命令,我找到了一些规则,但仍然不太清楚。希望对此有更多了解的人能进一步解释

以下是我的例子和发现:

int('0', base=1)
ValueError: int() base must be >= 2 and <=36

int('3', base=2)
ValueError: invalid literal for int() with base 2:

int('3', base=4)
3

int('33', base=4)
15

int('333', base=4)
63

int('353', base=4)
ValueError: invalid literal for int() with base 4:
int('0',基=1)

ValueError:int()base必须大于等于2,并且值告诉python将给定字符串解释为不同的base值

例如,基2中的
1011
是11。因此,
int('1011',2)
返回
11

另一方面,基3中的
1011
是31。因此,
int('1011',3)
返回
31

小数以10为基数,这就是为什么
base
的默认值为
10

选择数字基数的一个有趣的副作用是,该系统中不存在高于(或等于)基数本身的数字。这就是为什么我们在十进制系统中没有数字表示十,而十六进制系统(基数16)使用数字
a
表示十。这就是为什么要求将数字
5
解释为以4为基数的数字时出错的原因。

函数
int()
可以转换以10为基数(或)的整数,而不是以字符串形式传递,其中第二个参数是字符串中数字的基数,结果将是以10为基数的整数。例如,以下所有字符串值将产生整数
42

int('42')        # by default, it's base 10
=> 42
int('42', 10)    # same as above
=> 42
int('101010', 2) # base 2 (binary)
=> 42
int('2A', 16)    # base 16 (hexadecimal)
=> 42

它完全按照它所说的做-将字符串转换为给定数字基中的整数。根据文档,
int()
可以转换从2到36的任意基数的字符串。在低端,base 2是最低可用系统;基数1将只有“0”作为符号,这对于计数来说是非常无用的。在高端,36是任意选择的,因为我们使用“0123456789abcdefghijklmnopqrstuvwxyz”中的符号(10位+26个字符)-您可以继续使用更多符号,但不清楚在z之后使用什么

“正常”数学以10为基数(使用符号“0123456789”):

二进制为基数2(使用符号“01”):

“3”在基数2中没有意义;它只使用符号“0”和“1”,“3”是一个无效的符号(这有点像试图预订1月34日的约会)


基数是数字系统中不同基本元素或数字的数量

底座2有0和1,可以在电子设备中表示为on和off

基数10具有熟悉的10位数字0..9

任何整数都可以用任何基表示,但符号串是不同的。例如,在基2中1111=15在基10中

选择转换为字符串或从字符串转换为字符串的基址的能力允许软件接受不同基址的输入,并在适当时转换基址


另请参见

base设计用来解决什么样的问题?
=在数论中非常有用,它在密码学(RSA)、编码(错误检测和纠正)等领域有着广泛的应用。令人惊讶的答案。我在大学里从来没有得到过这样好的解释。这将在我的一生中非常有用,而不仅仅是在编程中。对于那些想了解添加二进制leetcode问题解决方案的人来说,上述内容是必读的:
int("123", 10)  # == 1*(10**2) + 2*(10**1) + 3*(10**0) == 123
int("101", 2)   # == 1*(2**2) + 0*(2**1) + 1*(2**0) == 5
int("333", 4)   # == 3*(4**2) + 3*(4**1) + 3*(4**0)
                # == 3*16 + 3*4 + 3*1
                # == 48 + 12 + 3
                # == 63