Python内置函数int()高级用法

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

>>> int(3.2)

3 >>> int(1/3) 0

其实,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()函数计算或许是最快的。

>>> int('1'*64, 2) 18446744073709551615

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

原文发布于微信公众号 - Python小屋(Python_xiaowu)

原文发表时间:2017-12-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏前端杂谈

前端算法-基本排序算法比较

37013
来自专栏CDA数据分析师

学会这8个(组)excel函数,轻松解决工作中80%的难题

文 | 兰色幻想-赵志东 函数是excel中最重要的分析工具,面对400多个excel函数新手应该从哪里入手呢?下面是实际工作中最常用的8个(组)函数,学会后工...

1977
来自专栏二进制文集

LeetCode 004 Median of Two Sorted Arrays 详细分析

题目链接:https://leetcode.com/problems/median-of-two-sorted-arrays/

1111
来自专栏编程

Python内置函数int高级用法

int()函数常用来把其他类型转换为整数,例如: >>>int(3.2) 3 >>>int(1/3) 其实,int是Python内置类型之一,之所以能够当作函数...

2609
来自专栏Bingo的深度学习杂货店

Q155 Min Stack

Design a stack that supports push, pop, top, and retrieving the minimum element ...

2776
来自专栏鸿的学习笔记

两个字符串算法

这部分主要使用了动态规划的技术,就是如果两个最大公共子序列相等的话,必然前面的也相等

512
来自专栏数据结构与算法

cf314E. Sereja and Squares(dp)

给你一个擦去了部分左括号和全部右括号的括号序列,括号有25种,用除x之外的小写字母a~z表示。求有多少种合法的括号序列。答案对4294967296取模。 合法序...

1557
来自专栏落影的专栏

程序员进阶之算法练习(三十五)LeetCode专场

LeetCode上的题目是大公司面试常见的算法题,今天的目标是拿下5道算法题: 题目1是基于链表的大数加法,既考察基本数据结构的了解,又考察在处理加法过程中的边...

48916
来自专栏Java帮帮-微信公众号-技术文章全总结

Java基础-06.总结二维数组,面向对象

1:二维数组(理解) (1)元素是一维数组的数组。 (2)格式: A:数据类型[][] 数组名 = new 数据类型[m][n]; B:数据类型[][]...

2804
来自专栏IT可乐

深入理解计算机系统(2.6)------整数的运算

  前面两篇博客我们详细讲解了计算机中整数的表示,包括有符号和无符号(补码编码)的详细介绍。那么这篇博客我们将对它们的运算有个详细的了解。   在讲解之前首先看...

2667

扫码关注云+社区

领取腾讯云代金券