惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
C
CXSECURITY Database RSS Feed - CXSecurity.com
S
Schneier on Security
博客园 - 叶小钗
博客园 - 三生石上(FineUI控件)
C
Cybersecurity and Infrastructure Security Agency CISA
Engineering at Meta
Engineering at Meta
Google DeepMind News
Google DeepMind News
酷 壳 – CoolShell
酷 壳 – CoolShell
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园_首页
T
Threat Research - Cisco Blogs
C
Cisco Blogs
Recent Announcements
Recent Announcements
S
Securelist
N
Netflix TechBlog - Medium
The Register - Security
The Register - Security
P
Privacy & Cybersecurity Law Blog
宝玉的分享
宝玉的分享
D
Darknet – Hacking Tools, Hacker News & Cyber Security
L
LINUX DO - 热门话题
T
Tor Project blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
月光博客
月光博客
AWS News Blog
AWS News Blog
P
Proofpoint News Feed
博客园 - 司徒正美
L
LINUX DO - 最新话题
Stack Overflow Blog
Stack Overflow Blog
博客园 - 聂微东
H
Help Net Security
Spread Privacy
Spread Privacy
PCI Perspectives
PCI Perspectives
Project Zero
Project Zero
I
Intezer
T
The Blog of Author Tim Ferriss
有赞技术团队
有赞技术团队
The Last Watchdog
The Last Watchdog
C
Check Point Blog
Blog — PlanetScale
Blog — PlanetScale
B
Blog RSS Feed
MyScale Blog
MyScale Blog
V
Vulnerabilities – Threatpost
Recorded Future
Recorded Future
T
Tenable Blog
Jina AI
Jina AI
D
DataBreaches.Net
阮一峰的网络日志
阮一峰的网络日志

博客园 - lovingbird

Python中的字符串常用处理方法 vs2015中SQLSERVER数据库项目引用系统视图 SQL Server 2008通过LinkServer连接MySQL 删除sqlserver代理任务脚本 ldap实现用户认证 mysql下将分隔字符串转换为数组 从ICassFactory为CLSID为{17BCA6E8-A950-497E-B2F9-AF6AA475916F}的COM组件创建实例失败问题解决方法 IIS7下ajax报未定义错误 Access restriction错误解决办法 通过.browser文件设置chrome等浏览器的兼容性 通过web.config设置网站默认页 NC调试时客户端报错:nc.ui.sm.login.Loader2.<init> 本地连接与无线网络连接消失的解决办法 asp.net中使用ajax提示“'Sys'未定义”错误 解决ora-12514 问题 SQLServer常用命令 WIN7的各种安装方法 将WebBrowser的cookie信息传给HttpWebRequest - lovingbird - 博客园 Access建表语句 - lovingbird - 博客园
Python中的数字
lovingbird · 2022-12-05 · via 博客园 - lovingbird

在编程中,经常使用数字来记录游戏得分、表示可视化数据、存储Web应用信息等。Python根据数字的用法以不同的方式处理它们。鉴于整数使用起来最简单,下面就先来看看Python是如何管理它们的。

1.整数

在Python中,可对整数执行加(+)减(-)乘(*)除(/)运算。

>>> 2 + 3
5
>>> 3 - 2
1
>>> 2 * 3
6
>>> 3 / 2
1.5

乘方运算用两个乘号表示

>>> 3 ** 2
9
>>> 3 ** 3
27
>>> 10 ** 6
1000000

也支持运算优先级处理

>>> 2 + 3*4
14
>>> (2 + 3) * 4
20

空格不影响运算过程

2.浮点数

所有带小数点的数字都可以认为是浮点数,通常情况下的运行是正常的。

>>> 0.1 + 0.1
0.2
>>> 0.2 + 0.2
0.4
>>> 2 * 0.1
0.2
>>> 2 * 0.2
0.4

但是,计算结果包含的小数位数是不确定的(由于计算机处理运算方式为二进制的原因)

>>> 0.2 + 0.1
0.30000000000000004
>>> 3 * 0.1
0.30000000000000004

所以,需要忽略多余的小数位数。

3.使用str()避免类型错误

数字和字符串的拼接经常会带来错误,例如

age = 23
message = "Happy " + age + "rd Birthday!"

print(message)

运行上面的代码将会报错

Traceback (most recent call last):
  File "birthday.py", line 2, in <module>
    message = "Happy " + age + "rd Birthday!"
TypeError: Can't convert 'int' object to str implicitly

Python知道,这个变量表示的可能是数值23,也可能是字符2和3。像上面这样在字符串中使用整数时,需要显式地指出你希望Python将这个整数用作字符串。为此,可调用函数str(),它让Python将非字符串值表示为字符串:

age = 23
message = "Happy " + str(age) + "rd Birthday!"

print(message)

修改后的输出结果

4.Python2中的整数

在Python 2中,将两个整数相除得到的结果稍有不同:

>>> python2.7
>>> 3 / 2
1

上方代码的运行结果与Python3中存在差异。在Python 2中,整数除法的结果只包含整数部分,小数部分被删除。请注意,计算整数结果时,采取的方式不是四舍五入,而是将小数部分直接删除。 在Python 2中,若要避免这种情况,务必确保至少有一个操作数为浮点数,这样结果也将为浮点数:

>>> 3 / 2
1
>>> 3.0 / 2
1.5
>>> 3 / 2.0
1.5
>>> 3.0 / 2.0
1.5

从Python 3转而用Python 2或从Python 2转而用Python 3时,这种除法行为常常会令人迷惑。使用或编写同时使用浮点数和整数的代码时,一定要注意这种异常行为。