Python自学06-基本数据类型1-数字类型及其操作

1.数字类型

在程序开发时,经常使用数字记录游戏的得分、网站的销售数据和网站的访问量等信息。在Python中,提供了数字类型用于保存这些数值,并且它们是不可改变的数据类型。如果修改数字类型变量的值,那么会先把该值存放到内容中,然后修改变量让其指向新的内存地址。
计算机对数字的识别和处理有两个基本要求:确定性和高效性。
在Python中,数字类型主要包括整数,浮点数和负数。

1.1 整数类型

整数用来表示整数数值,即没有小数部分的数值。在Python中,整数包括正整数、负整数和0,并且它的位数是任意的(当超过计算机自身的计算功能时,会自动转用高精度计算),如果要指定一个非常大的整数,只需要写出其所有位数即可。
整数类型包括十进制整数、八进制整数、十六进制整数和二进制整数。

表1 整数类型的4种进制表示

进制种类引导符号描述
十进制默认情况例如1010,-9876
二进制0b或0B由字符0和1组成,例如0b101,0B101
八进制0o或0O由字符0到7组成,例如0o711,0O711
十六进制0x或0X由字符0到9、a到f、A到F组成,例如0xABC

整数类型理论上的取值范围是[-∞,+∞],实际上的取值范围受限于运行Python程序的计算机内存大小。除极大数的运算外,一般认为整数类型没有取值范围限制。

pow()函数

pow(x,y)函数是Python语言的一个内置函数,用来计算xy。这里,用pow()函数测试一下整数类型的取值范围,例如:

>>> pow(2,100)
1267650600228229401496703205376
>>> pow(2,500)
3273390607896141870013189696827599152216642046043064789483291368096133796404674554883270092325904157150886684127560071009217256545885393053328527589376

pow()函数还可以嵌套使用,例如:

>>> pow(2,pow(2,2))
16

1.2 浮点数类型

浮点数由整数部分和小数部分组成,主要用于处理包括小数的数,如1.414、0.5、-1.732、3.1415926535879732384626等。浮点数也可以使用科学计数法表示,如2.7e2、-3.14e5和6.16e-2等。科学计数法使用字母e或E作为幂的符号,以10为基数,含义如下:<a>e<b>=a*10b
Python浮点数的数值范围与小数精度受不同计算机系统的限制,sys.float_into详细列出了Python解释器所运行系统的浮点数各项参数,例如:

>>> import sys
>>> 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)
>>> sys.float_info.max
1.7976931348623157e+308

注意

在使用浮点数进行计算时,可能会出现小数位数不确定的情况。例如,计算0.1+0.1时,将得到想要的0.2,而计算0.1+0.2时,将得到0.30000000000000004(想要的结果为0.3),执行过程如下:

>>> 0.1+0.1
0.2
>>> 0.1+0.2
0.30000000000000004

对于这种情况,所有语言都存在这个问题,暂时忽略多余的小数位数即可。

高精度浮点运算类型

Python通过标准库decimal提供了一个更准确的数字类型Decimal,这个类型利用整数运算方法提供高精度浮点数运算,并可使用getcontext().prec参数自定义浮点数精度的位数,例如

>>> import decimal
>>> a=decimal.Decimal('3.141592653')
>>> b=decimal.Decimal('1.234567898')
>>> decimal.getcontext().prec=20
>>> a*b
Decimal('3.878509437986453394')

例题1

height = 1.70      # 保存身高的变量,单位:米
print("您的身高:" + str(height))
weight = 48.5      # 保存体重的变量,单位:千克
print("您的体重:" + str(weight))
bmi=weight/(height*height)      # 用于计算BMI指数,公式为“体重/身高的平方”
print("您的BMI指数为:"+str(bmi))  #输出BMI指数
# 判断身材是否合理
if bmi<18.5:
    print("您的体重过轻 ~@_@~")
if bmi>=18.5 and bmi<24.9:
    print("正常范围,注意保持 (-_-)")
if bmi>=24.9 and bmi<29.9:
    print("您的体重过重 ~@_@~")
if bmi>=29.9:
    print("肥胖 ^@_@^")

运行结果如下:

您的身高:1.7
您的体重:48.5
您的BMI指数为:16.782006920415228
您的体重过轻 ~@_@~

说明:在上面的代码中,str()函数用于将数值转换成字符串;if语句用于进行条件判断。

1.3 复数类型

Python中的复数与数学中的复数的形式完全一致,都是由实部和虚部组成,并且使用j或J表示虚部。当表示一个负数时,可以将其实部和虚部相加,例如,一个负数,实部为3.14,虚部为12.5j,则这个负数为3.14+12.5j。
复数可以看成是二元有序实数对(a,b),表示为a+bj,其中,a是实数部分,简称实部,b是虚数部分,简称虚部。复数是实数在二维平面空间旋转的一种表示。复数类型中实数部分和虚数部分的数值都是浮点类型。对于复数z,可以用z.real和z,imag分别获得它的实数部分和虚数部分,例如:

>>> (1.23e-4+5.67e+89j).real
0.000123
>>> (1.23e-4+5.67e+89j).imag
5.67e+89

2.数字类型的操作

Python提供了9个基本的数值运算操作符,如表2所示。这些操作符由Python解释器直接提供,不需要引用标准或第三方函数库,也叫做内置操作符。

表2 内置的数值运算操作符

操作符描述
x+yx与y之和
x-yx与y之和差
x*yx与y之积
x/yx与y之商
x//yx与y之整数商,即不大于x与y之商的最大整数
x%yx与y之商的余数,也称为模运算
-xx的负值,即x*(-1)
+xx本身
x**yx的y次幂,即xy

这9个操作符与数学习惯一致,运算结果也符合数学意义。操作符运算的结果可能改变数字类型,3种数字类型之间存在一种逐渐扩展的关系,具体如下:

整数->浮点数->复数

这是因为整数可以看成是浮点数没有小数的情况,浮点数可以看成是复数虚部为0的情况。基于上述扩展关系,数字类型之间相互运算所生成的结果是“更宽”的类型,基本规则如下:

  1. 整数之间运算,如果数学意义上的结果是小数,结果是浮点数。
  2. 整数之间运算,如果数学意义上的结果是整数,结果是整数。
  3. 整数和浮点数混合运算,输出结果是浮点数。
  4. 整数或浮点数与复数运算,输出结果是复数。
>>> 100/3
33.333333333333336
>>> 100//3
33
>>> 123+4.0
127.0
>>> 10.0-1+2j
(9+2j)

表中所有运算符(+、-、、/、//、%、**)都有与之对应的增强赋值操作符(+=、-=、=、/=、//=、**=)。如果用op表示这些二元数学操作符,则下面两个赋值符操作等价,注意,op和二元操作符之间没有空格:

x op= y  等价于 x = x op y

增强赋值操作符获得的结果写入变量x中,简化了代码表达,例如

>>> x=3.141592653
>>> x**=3  #与x=x**3等价
>>> x
31.006276662836743
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值