基值在int函数中做什么?

2024-04-20 08:57:51 发布

您现在位置: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=4)
15

int('333', base=4)
63

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

我发现这里有两条规则:

  1. 单字符串数字必须小于基数字。
  2. int()将返回一个等于(n)*(base^(n-1)) + (n-1)*(base^(n-2)) + ... + 1*(base^0)的数字

还有其他的潜规则吗,这个基地是为了解决什么样的问题?


Tags: 文件命令终端forbase官方规则with
3条回答

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

基2有0和1,可以在电子器件中表示为开和关。

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

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

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

另见http://en.wikipedia.org/wiki/Radix

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

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

int("123", 10)  # == 1*(10**2) + 2*(10**1) + 3*(10**0) == 123

二进制为base-2(使用符号“01”):

int("101", 2)   # == 1*(2**2) + 0*(2**1) + 1*(2**0) == 5

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

int("333", 4)   # == 3*(4**2) + 3*(4**1) + 3*(4**0)
                # == 3*16 + 3*4 + 3*1
                # == 48 + 12 + 3
                # == 63

base值告诉python将给定字符串解释为不同基的值。

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

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

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

相关问题 更多 >