Python学习笔记 (2.1)标准数据类型之Number(数字)
Python3中,数字分为四种——int,float,bool,complex
int(整型)
和数学上的整数表示没啥区别,没有大小限制(多棒啊,不用写整数高精了),可正可负。还可表示16进制,以 0x 开头,后面接0~9的数字和a~f的小写字母。
网上有博客说常规整型最大值可以用以下命令打印
import sys print(sys.maxsize)
然后我得到了9223372036854775807——$2^{63}-1$——即C/C++中long long型的最大值。可能是大于这个值就换成高精之类的表示了吧,唯一的限制只有内存容量。
float(浮点型)
就是小数,可以用一般的表示方法,也可以用科学计数法,这时浮点的意思才体现得出来——1.23e9==12.3e8。当计算过程中浮点数太大或是太小时,解释器会用科学计数法表示,我试了一下我的python3.7.0,最多保留17位有效数字。超出某个范围(见下)就会抛出错误——
Traceback (most recent call last): File "<stdin>", line 1, in <module> OverflowError: (34, 'Numerical result out of range')
浮点型的一些限制可以通过命令查看——
import sys print(sys.float_info)
sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1)
可以看到,和C/C++的double差不多,依然存在浮点误差.http://0.30000000000000004.com/。可以导入decimal模块(十进制高精度小数)(这下连小数的高精都不用手写了,开心一下)对抗浮点误差,不过速度与float相比慢了好多。decimal用法(留坑)。还可以导入fractions模块进行分数运算。fractions用法(留坑)。
bool(布尔型)
只有两种值——True(1)、False(0)。有3种运算——and、or、not,就是且、或、非。也可以和其他三种一起做运算,和整型做运算就转换成整型1或0,遇到浮点就转为浮点。
complex(复数)
数学上的一个虚数$a+bi$(a为实部,b为虚部),在python中有三种表示方法 a+bj (大写J也可以。搞不懂为啥要用j不用i)或 complex(a,b) 。这里的实部和虚部都是浮点型。
这里我们定义一个虚数 x=1+2j ,那么 x.real() 将返回其实部1.0(float型), x.imag()将返回其虚部2.0(float型), x.conjugate()将返回其共轭复数 1-2j (complex型)。abs()函数可以求一个复数的模。
各数据类型可进行的运算——
int、bool、float的运算
大部分运算符和C/C++区别不大,有以下几点——
1、多了幂运算符 ** 和整除符号 // (而"/"符号结果均为浮点数)
2、不等于号除了 != 还有 <>
3、判断大小是允许出现 a<b<c 的形式
4、逻辑运算符是 and or not ,而不是 && || ! ,且运算数字为int型时,规则发生变化,返回的真值不只会是1(C/C++中,返回一个真值只会是bool型的0或1),而可能是参与计算的数。具体如下
x and y ——如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。
x or y ——如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。
not x ——如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。
可以用短路判断辅助理解和记忆。
5、多了成员运算符 in 和 not in (not在前),用于判断某个值是否在某个序列(包括字符串、列表、元组)中,返回一个bool值
6、多了身份运算符 is 和 is not (not在后),用于判断两个变量是否引用同一个对象(是否指向同一片内存区域),返回一个bool值(在Python学习笔记(2)这篇博文中变量部分提到过)
附:Python运算符优先级(来自Python运算符)
进行更多数学函数的计算,可以导入模块math import math ,然后可以大概像下面这样搞(更详细的留坑)
>>> print(math.sin(math.pi/2)) 1.0
当int型整除或取模时,一直满足这个公式a = (a//b)*(b) + (a%b),于是有负数参与的整除和取模就可以计算了。
复数的计算
两个复数间进行+、-、*、/四种运算的规则和高中数学中的一致,还可以进行乘方(**)运算。要以复数为参数进行更复杂的计算(如sin()cos()…)或是希望其他三种数据类型的计算过程可以返回复数而不是报错(如sqrt(-1)),那么就要导入cmath模块 import cmath (更详细的留坑)。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Android自定义控件零基础简述「JAVA,基础」
Android自定义控件「JAVA,基础」 我们有原生控件可以使用,但特定需求下,仍然无法满足我们,这时我们只能去自定义控件。 自定义后如果开源,就成了我们熟悉的开源库,轮子。例如以下两个开源库,选项卡开源库FlycoTabLayout,动画开源库lottie-android。 源代码已上传至View文件夹。 Canvas操作 创建/module/canvasx/XView类,让该类继承于View类。使用快捷键Alt+insert,选择第一个Construct重写该类的必须要的两个构造方法。 如不重写构造一程序在编译时就会报红 如不重写构造二程序在编译时不会报红,但是当运行起来后,程序会崩溃,出现android.view.InflateException: Binary XML file line #9: 异常 关于这两个构造方法何时会被调用稍后会给出解释 import android.content.Context; import android.view.View; import android.support.annotation.Nullable; import android...
- 下一篇
2018-09-02学习笔记
Content Provider 总结: 跨程序共享数据——Content Provider 之 运行时权限解析以及申请的实现(可完美解决java.lang.SecurityException:Permission Denial 问题) 跨程序共享数据——Content Provider 之 ContentResolver基本用法 & 一个读取系统联系人的Demo 跨程序共享数据——Content Provider 之 创建自己的内容提供器 Content Provider 之 最终弹 实战体验跨程序数据共享(结合SQLiteDemo)(即本文) Java回顾: Java基础知识的全面巩固_note1(附各种demo code) Java知识详细巩固_note2(数组 _ 附demo code) 受腾讯云+社区的运营小编陈子龙前辈邀请, 我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=2iitqqr04f408 ——2018.9.3
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8编译安装MySQL8.0.19
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS关闭SELinux安全模块
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程