base函数在int函数中做了什么?

Zen*_*Zen 7 python

我已经阅读了官方文档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:
Run Code Online (Sandbox Code Playgroud)

我在这里找到两个规则:

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

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

ins*_*get 5

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

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

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

选择数字基础的一个有趣的副作用是,该系统中不存在高于(或等于)基础本身的数字.这就是为什么我们在十进制系统中没有10的数字,而十六进制系统(基数16)使用A10 的数字.这就是为什么你要问一个带有数字的数字5在基数4中被解释的错误.


Hug*_*ell 5

它完全按照说的去做-将字符串转换为给定数值的整数。根据文档,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
Run Code Online (Sandbox Code Playgroud)

Binary是以2为底的(使用符号“ 01”):

int("101", 2)   # == 1*(2**2) + 0*(2**1) + 1*(2**0) == 5
Run Code Online (Sandbox Code Playgroud)

“ 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
Run Code Online (Sandbox Code Playgroud)

  • 惊人的答案。我在大学里从来没有得到过这样好的解释。这对我的一生都有用,而不仅仅是在编程方面。 (3认同)

Pau*_*aul 5

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

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

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

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

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

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