我已经阅读了官方文档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:

我在这里找到两个规则:

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

除此之外是否还有其他隐藏规则,以及基础设计要解决的问题是什么?

===============>>#1 票数:5

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

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

小数位于10的基数,这就是base的默认值为10

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

===============>>#2 票数:5 已采纳

它完全符合它所说的 - 在给定的数字基础中将字符串转换为整数。 根据文档, int()可以将任何基数中的字符串从2转换为36.在低端,base 2是最低的有用系统; base 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

基地2中“3”没有意义; 它只使用符号“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

===============>>#3 票数:3

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

===============>>#4 票数:3

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

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

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

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

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

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

  ask by Zen translate from so

未解决问题?本站智能推荐: