[英]What does base value do in int function?
我已经阅读了官方文档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 是任意选择的,因为我们使用来自“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
。
选择数字基数的一个有趣的副作用是,该系统中不存在高于(或等于)基数本身的数字。 这就是为什么我们在十进制系统中没有代表十的数字,而十六进制系统(基数为 16)使用数字A
代表十。 这就是为什么您在要求将数字5
解释为基数 4 时出错的原因。
基数是数字系统中不同基本元素或数字的数量。
基数 2 有 0 和 1,可以在电子学中表示为开和关。
Base 10 有熟悉的 10 位数字 0..9
任何整数都可以用任何基数表示,但符号串会有所不同。 例如在基数 2 1111 = 15 在基数 10
选择转换为字符串或从字符串转换的碱基的能力允许软件接受不同碱基的输入并在适当时翻译碱基。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.