我已经阅读了文档https://docs.python.org/2/library/functions.html#int,但仍然感到困惑。
我在终端上尝试了一些命令,我发现了一些规则,但仍然不太清楚。希望对此有更多了解的人可以进一步解释。
下面是我的例子和发现:
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()
将返回一个等于(n)*(base^(n-1)) + (n-1)*(base^(n-2)) + ... + 1*(base^0)
的数字
除此之外,还有其他隐藏的规则吗?基地旨在解决什么样的问题?
它完全按照它所说的那样-将字符串转换为给定数字基数中的整数。根据文档,int()
可以将任何基数中的字符串从 2 转换为 36。在低端,基数 2 是最低的有用系统;基数 1 只会有“0”作为符号,这对于计数来说是非常无用的。在高端,36 是任意选择的,因为我们可以使用“01234567mlkghj10”
“正常”数学以 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
。
选择数字基数的一个有趣的副作用是,该系统中不存在高于(或等于)基数本身的数字。这就是为什么我们在十进制系统中没有十位的数字,而十六进制系统(基数为 16)使用数字A
表示十。这就是为什么您在要求以数字5
4 为基数的数字进行解释时会出错的原因。
基数是数字系统中不同的基本元素或数字的数量。
底座 2 具有 0 和 1,并且可以在电子设备中表示为开和关。
Base 10 具有熟悉的 10 位数字 0..9
任何整数都可以用任何基数表示,但符号串会有所不同。例如,在基数 2 中,1111 = 15 在基数 10 中
选择转换到字符串或从字符串转换的碱基的能力允许软件接受不同碱基的输入,并在适当的情况下翻译碱基。
See alsohttp://en..org/wiki/Radix
int()
函数可以转换以 10 为基数(或radix)以外的整数作为字符串传递,其中第二个参数是字符串中数字的基数,结果将是以 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
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(84条)