Python内置函数int高级用法

int()函数常用来把其他类型转换为整数,例如:

>>>int(3.2)

3

>>>int(1/3)

其实,int是Python内置类型之一,之所以能够当作函数来用,是因为它提供了构造方法。另外,它还提供了第二个参数支持更多功能,例如:

>>>int('1111', 8)

585

上面的问题是不是很熟悉呢?这也是我的15个读者群入群门槛问题之一,但是很多人进不来,说题不会做,不会做不要紧啊,随便在任何Python开发环境中执行一下就可以了,如果这还不会的话,你很可能是个假读者,或者还不了解Python,没入门呢。

int()函数可以把实数类型转换为整数,并且是向下取整,也就是在数轴上向左取整,简单粗暴,有代码为证:

>>>int(3.6)

3

>>>int(3.4)

3

另外,int()还可以把字符串按照指定的进制转换为整数,如果不指定进制的话默认按十进制为准,除非第一个参数字符串隐含了进制并且指定第二个参数为0,例如:

>>>int('3333')

3333

>>>int('3333', 0)

3333

>>>int('0o333', 0)

219

>>> int('0x3333', 0)

13107

那么int()函数的第二个参数除了0还有啥?让Python内置函数help()来告诉我们(学Python必备技能,节选):

>>>help(int)

Help on class int in module builtins:

class int(object)

| int(x=0) -> integer

| int(x, base=10) -> integer

|

| Convert a number or string to an integer, or return 0 if no arguments

| are given. If x is a number, return x.__int__(). For floating point

| numbers, this truncates towards zero.

|

| If x is not a number or if base is given, then x must be a string,

| bytes, or bytearray instance representing an integer literal in the

| given base. The literal can be preceded by '+' or '-' and be surrounded

| by whitespace.The base defaults to 10. Valid bases are 0 and 2-36.

| Base 0 means to interpret the base from the string as an integer literal.

也就是说,int()函数的第二个参数可以是0或者2-36之间的数字(如果第一个参数字符串隐含了进制的话,要统一起来),例如:

>>>int('1111', 2)

15

>>>int('1111', 3)

40

>>>int('1111', 8)

585

>>>int('1111', 27)

20440

这样的东西有啥用呢?让我们来讲一个故事:阿凡提与国王比赛下棋,国王说要是自己输了的话阿凡提想要什么他都可以拿得出来。阿凡提说那就要点米吧,棋盘一共64个小格子,在第一个格子里放1粒米,第二个格子里放2粒米,第三个格子里放4粒米,第四个格子里放8粒米,以此类推,后面每个格子里的米都是前一个格子里的2倍,一直把64个格子都放满。需要多少粒米呢?当然,这个问题用列表推导式或者生成器表达式很容易计算。但是,用int()函数计算或许是最快的。

顺便说句题外话,这到底需要多少米呢?把“粒”换算成“吨”或者“亿吨”,你会吗?

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171219B0TUT200?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券