Python 中 int 用法详解

欢迎转载,转载请注明出处!


文章目录

  • Python 中 int 用法详解
    • 0. 参考资料
    • 1. int 的无参数调用
    • 2. int 接收数字作为参数
    • 3. int 接收字符串作为参数:类型转换
    • 4. int 用于进制转换
    • 5. 版本特性

0. 参考资料

  • Python 官方文档

1. int 的无参数调用

不带参数直接 int(),得到的是整数 0

num = int()
print(type(num))
print(num)
"""
<class 'int'>
0
"""

2. int 接收数字作为参数

  • int 接收整数作为参数,其实没什么好说的,还是得到原来的那个整数。
  • int 接收浮点数作为参数,会截取该浮点数的整数部分,返回截取后的整数。
print(int(2.9))    # 2
print(int(2.1))    # 2
print(int(-2.9))   # -2
print(int(-2.1))   # -2
print(int(3.0))    # 3

注意int 没有四舍五入的功能,它做的事情是 截断截断截断


3. int 接收字符串作为参数:类型转换

众所周知,int 函数可以将一个字符串转换为整数,这也是它最常见的用法:

s = input('请输入一个整数:')
print(type(s))
"""
<class 'str'>
"""num = int(s)
print(type(num))
"""
<class 'int'>
"""

注意:确切来讲 int 是一个类,而不是函数,虽然它的首字母没有大写。

假如字符串 s 是一个浮点数形式的字符串,比如 '-3.14',直接用 int 进行类型转换会报 ValueError 错,如下所示:

s = '-3.14'
num = int(s)
"""
ValueError: invalid literal for int() with base 10: '-3.14'
"""

如果想要把浮点数形式的字符串转换为整数,需要先使用 float 把字符串转换为浮点数,再对该浮点数使用 int,把浮点数截取为整数,如下所示:

s = '-3.14'
num = int(float(s))
print(f'num = {num}')
"""
num = -3
"""

4. int 用于进制转换

到目前为止介绍的都是 int 的常见用法,接下来介绍的是相对少见的用法,int 可以将 2 进制到 36 进制的字符串、字节串(bytes)或者字节数组(bytearray)实例转换成对应的 10 进制整数。具体的调用形式为:int(x, base=10),其中 x 即为字符串、字节串或字节数组的实例。

参数说明

  • 参数 x 必须是合法的整数字面量 integer literal
    整数字面量前面可以有正负号,但是正负号与数字之间不能有空格。
    整数字面量两端可以出现任意数量的空白,包括空格键、制表符、换行符等等。
    a-z 或者 A-Z 分别表示 10-35 的数字。
    二进制数字可以用 0b 或者 0B 做前缀,八进制数字可以用 0o 或者 0O 做前缀,十六进制数字可以用 0x 或者 0X 做前缀,前缀是可选的。
  • base 默认是 10,还可以取 0 以及 236,不能是 1,因为没有 1 进制。
    base0 的时候会按照代码字面量(code literal)解析,即只能把 281016 进制数字表示转换为 10 进制。对于 2816 进制必须指明相应进制的前缀,否则会按照 10 进制解析。

默认情况:base=10

x = '6'
num1 = int(x)
num2 = int(x, 10)
print(num1)
print(num2)
"""
6
6
"""

其他进制转为 10 进制

x = '10'
num1 = int(x, 2)
num2 = int(x, 8)
num3 = int(x, 16)
print(num1)
print(num2)
print(num3)
"""
2
8
16
"""x = 'z'
num3 = int(x, 36)
print(num3)
"""
35
"""

带正负号、空格的整数字面量

# 带正号
x = '+a0'
num = int(x, 16)
print(num)
"""
160
"""# 带负号
x = '-a0'
num = int(x, 16)
print(num)
"""
-160
"""# 两端带空白
x = '  \t  +a0\r\n  '
num = int(x, 16)
print(num)
"""
160
"""

base=0 时按照代码字面量直接解析

x = '10'
num = int(x, 0)
print(num)
"""
10
"""x = '0b10'
num = int(x, 0)
print(num)
"""
2
"""x = '0o10'
num = int(x, 0)
print(num)
"""
8
"""x = '0x10'
num = int(x, 0)
print(num)
"""
16
"""

5. 版本特性

3.4 版本变化

  • 如果 base 参数不是 int 类的实例,那么会调用它的 base.__index__ 方法,该方法返回一个整数供 base 参数使用。
  • 之前的版本调用的是 base.__int__ 而不是 base.__index__

3.6 版本变化

  • 代码字面量(code literal)中允许使用下划线 _ 来对数字进行分组。

3.7 版本变化

  • x 现在变成了强制位置参数 positional-only parameter

注意:也就是说 x 不能通过 x=... 这种关键字参数形式来指定,以下是我在 Python 3.6 当中的试验,可见 3.6 版本还是可以的。然而 Python 3.7 版本会报错!

# Python 3.6
x = 'a'
num = int(x=x, base=16)
print(num)
"""
10
"""
# 调过来也可以
x = 'a'
num = int(base=16, x=x)
print(num)
"""
10
"""# Python 3.7 会报错
>>> x = 'a'
>>> num = int(x=x, base=16)
Traceback (most recent call last):File "<stdin>", line 1, in <module>
TypeError: 'x' is an invalid keyword argument for int()

完成于 2019.5.2


Python 中 int 用法详解相关推荐

  1. 【 Python 中 int 用法详解】(转载)

    Python 中 int 用法详解 欢迎转载,转载请注明出处! 文章目录 Python 中 int 用法详解 0. 参考资料 1. int 的无参数调用 2. int 接收数字作为参数 3. int ...

  2. Python中self用法详解

    Python中self用法详解 https://blog.csdn.net/CLHugh/article/details/75000104 首页 博客 学院 下载 图文课 论坛 APP 问答 商城 V ...

  3. Python 中 with 用法详解

    浅谈 Python 的 with 语句:https://developer.ibm.com/zh/articles/os-cn-pythonwith/ python3,浅谈with的神奇魔法:http ...

  4. python中uuid用法详解

    uuid源码注解: r"""UUID objects (universally unique identifiers) according to RFC 4122.Thi ...

  5. python中map用法详解_Python:map函数用法详解

    一个简单的例子:将一个list中所有元素平方,常规的做法如下图所示,虽然实现了这个功能,但并没有给人一目了然的感觉.若换成map来实现,则会好很多. 常规方法 map函数 1.map函数介绍及其简单使 ...

  6. Python中dict用法详解

    dict 称作字典(dictionary). 常见的形式 Dict = {'spam':1,'eggs':2}  单层key,value形式的字典 Dict = {'mans':{'jack':1,' ...

  7. Python中enumerate用法详解

    enumerate()是python的内置函数.适用于python2.x和python3.x enumerate在字典上是枚举.列举的意思 enumerate参数为可遍历/可迭代的对象(如列表.字符串 ...

  8. Python中with用法详解

    一 .with语句的原理 上下文管理协议(Context Management Protocol):包含方法 __enter__()和__exit__(),支持该协议的对象要实现这两个方法. 上下文管 ...

  9. python中print用法详解

    print拼接输出 拼接的内容之间用逗号隔开 result = 3.1415926 print(result,"是小数 类型是",type(result)) 用{}表示变量,然后通 ...

最新文章

  1. 淘宝李晓拴:淘宝网PHP电子商务应用
  2. python语言入门pdf-Python语言及其应用 中文pdf完整版[13MB]
  3. 设计模式总结之Bridge Pattern(桥接模式)
  4. 洛谷P1678-烦恼的高考志愿
  5. python控制51单片机的红绿灯_基于51单片机的红绿灯实现(使用普中科技开发板)...
  6. 21行代码AC_ 试题H: 修改数组【解题报告】
  7. 关于Linux自带的python2.6.6升级到2.7.10版本步骤详解及pip、ipython的安装
  8. Mongo Replica set的Primary 客户端不回自动重连新的primary
  9. 基于bim的施工管理平台
  10. 如果A为假,则蕴含A-B恒为真
  11. Java性能优化全攻略
  12. java 调用 axis2_java调用WebService服务 axis2实现方式
  13. 如何导出魔兽3模型到3Dmax里
  14. vb mysql 教程_[转载]VB.net教程之数据库简单操作
  15. 网页qq邮箱链接html,使用QQ邮箱打开网页上的电子邮件链接
  16. 使用批处理实现分组多用户的创建和权限分配
  17. 智能手环,智能手表,智能眼镜,我们到底该怎么选呢?
  18. svn导出历史版本、指定版本
  19. 【直播升级——AWS 云之旅】
  20. 产品升级|1-2月合刊:多款重磅产品来袭!

热门文章

  1. Unity引擎中的C#语言学习的笔记(1)
  2. unity游戏入门1
  3. Docker安装教程(超详细)
  4. 2022年轨道交通行业研究报告
  5. 市面最经典的中文版需求分析说明书模板 详细讲解各目录含义 分离需求说明和需求分析
  6. 机械硬盘显示容量0字节要如何办啊
  7. linux保存动态进程信息,Linux 命令 - top: 动态显示进程信息
  8. 教你怎么添加自己QQ为QQ好友 最新方法
  9. 大学计算机期末总结范文,大学计算机课期末总结.doc
  10. matlab中alw,MATLAB环境下遗传算法优化工具箱的应用_刘万林