内容正文:
任务2.3 数据类型和数字型数据类型
计算身体质量指数
2.3 数据类型和数字型数据类型——计算身体质量指数
【任务描述】
Python是一门简单易学的编程语言,其语法优美,有相应的规范和独特的风格,小T设计了一个程序,能根据输入的身高、体重,帮同学们测量身体的质量指数(BMI:Body Mass Index),一方面可以通过这个程序判断测量者身体的健康情况,另一方面可以详细掌握各类数字型数据类型。BMI=体重÷身高2,其中,体重单位是千克,身高单位是米。
2.3 数据类型和数字型数据类型——计算身体质量指数
【任务分析】
(1)输入圆的半径。(2)根据公式求出圆的面积。(3)输出圆的面积。
素养小课堂:
BMI指数,简称体质指数,是一个国际上常用的衡量人体胖瘦程度及是否健康的标准。世界卫生组织将BMI正常值定为18.5~24.9,小于18.5体重过轻,25~29.9为超重,大于或等于30为肥胖。体质指数可以反映和衡量一个人的健康状况,过胖和过瘦都是不利于健康状况。
大家可以动手算一算自己的BMI指数,对于过胖或者过瘦的同学,可以制定相应的运动和科学饮食计划,并坚持不懈地执行,让体育锻炼、科学饮食成为一种生活方式。
拥有一个健康的体魄,是人生最大的财富,也是进行青春奋斗的基础。
2.3 数据类型和数字型数据类型——计算身体质量指数
2.3 数据类型和数字型数据类型——计算身体质量指数
Pthon有哪些数据类型?
数字数据类型:整型、浮点型
数据类型的转换
2.3 数据类型和数字型数据类型——计算身体质量指数
# 身体质量指数BMI计算
strHeight=input("请输入您的身高(单位为米):")
height=float(heightStr)
print("您的身高:",height,'m')
strWeight=input("请输入您的体重(单位为千克):")
weight=float(weightStr)
print("您的体重:",weight,'kg')
bmi = weight/(height*height)
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('您过于肥胖')
strHeight、strWeight字符串数据
height、weight、bmi 浮点型数据
2.3 数据类型和数字型数据类型——计算身体质量指数
2.3.1 数据类型
2.3.2 数字型数据类型
2.3.3 数字型数据类型的转换
2.3.4 任务实现——计算身体质量指数
2.3.1 数据类型
2.3.1 数据类型
数值类型
布尔类型
组合类型
字符串类型
列表类型
元组类型
字典类型
整型
浮点型
复数
集合类型
Python数据类型
2.3.2 数字型数据类型
1.整型:即整数类型(int),用于表示整数。
整型有不同的的进制,如下:
十进制: 如:20
二进制,由0和1两个数字组成,书写时以“0b”或“0B”开头:如:0b10100、0B10100
八进制,八进制整数由0~7共八个数字组成,以“0o”或“0O”开头。注意,第一个符号是数字0,第二个符号是大写或小写的字母O。: 如:0o24、0O24
十六进制,由0~9十个数字及A~F(或a~f)六个字母组成,书写时以“0x”或“0X”开头: 如:0x14 、0X14
2.3.2 数字型数据类型
整型进制转换函数:
int(x) :将x转换为十进制整数,x为除十进制外其他进制数
int(0b101011)结果为43,int(0x51)结果为81
bin(x):将x转换为二进制,x为除二进制外其他进制数
bin(100)结果为0b1100100,bin(0x51)结果为0b1010001
oct(x):将x转换为八进制,x为除八进制外其他进制数
oct(100)结果为0o144,oct(0x51)结果为0o121
2.3.2 数字型数据类型
hex(x):将x转换为十六进制,x为除十六进制外其他进制数
hex(100)结果为0x64,hex(0o51)结果为0x29
2.3.2 数字型数据类型
"""进制间的转换"""
x=100
bx=bin(100)
ox=oct(100)
hx=hex(100)
print("100的二进制值:",bx) # 十进制数转换成二进制数
print("100的八进制值:",ox) # 十进制数转换成八进制数
print("100的十六进制值:",hx) # 十进制数转换成十六进制数
【例2-16】不同进制数的转换。
100的二进制值: 0b1100100
100的八进制值: 0o144
100的十六进制值: 0x64
2.3.2 数字型数据类型
"""进制间的转换"""
by=0b1100101
y=int(by) # 二进制数转换成十进制数
oy=oct(by) # 二进制数转换成八进制数
hy=hex(by) # 二进制数转换成十六进制数
print("0b1100101的十进制值:",by)
print("0b1100101的八进制值:",oy)
print("0b1100101的十六进制值:",hy)
【例2-16】不同进制数的转换。
0b1100101的十进制值: 101
0b1100101的八进制值: 0o145
0b1100101的十六进制值: 0x65
整型数据类型范围
Java/C的整型可以表示的范围是有限的,它和系统的最大整型一致:
32位机器上的整型是32位,范围:-231~231-1。
64位机器上的整型是64位,范围:-263~263-1。
2.3.2 数字型数据类型
>>> import sys
>>> a=2**128
>>> sys.getsizeof(a)
44
>>> b=2**256
>>> sys.getsizeof(b)
60
Python的整型可变长度,没有范围限制。
a=2**128,a是一个44位长度的整型。
a=2**256,a是一个60位长度的整型。
整型数据类型范围
2.3.2 数字型数据类型
>>> import sys
>>> a=2**128
>>> sys.getsizeof(a)
44
>>> b=2**256
>>> sys.getsizeof(b)
60
Python的整型可变长度,没有范围限制。
a=2**128,a是一个44未长度的整型。
b=2**256,b是一个60未长度的整型。
2.3.2 数字型数据类型
# 将 78 赋值给变量 n
n = 78
print(n)
print( type(n) )
# 给x赋值一个很大的整数
x = 8888888888888888888888
print(x)
print( type(x) )
# 给y赋值一个很小的整数
y = -7777777777777777777777
print(y)
print( type(y) )
【例2-17】整数数据类型。
78
<class 'int'>
8888888888888888888888
<class 'int'>
-7777777777777777777777
<class 'int'>
2.浮点型(Float):表示实数,带有小数点的数字
2.3.2 数字型数据类型
(1)一般用十进制表示:
0.21
2.456
(2)用科学计数法表示:实数*10n,即<实数>E/en
式中实数称为尾数,n称为阶码,正负符号称为阶符。
2.1E5 # 即2.1×105,其中2.1是尾数,5是指数。
3.7E-2 # 即3.7×10-2,其中3.7是尾数,-2是指数。
0.5E7 # 即0.5×107,其中0.5是尾数,7是指数。
Python的浮点型遵循的是IEEE(电气与电子工程师协会)双精度标准
每个浮点数占8个字节(64位),52位存储尾数,11位存储阶码,1位存储阶符
表示范围:-1.8E308~1.8E308
超出范围,被视为无穷大inf或无穷小inf
2.3.2 数字型数据类型
>>> c=-1.8E309
>>> c
-inf
超出表示范围
2.3.2 数字型数据类型
smallNum=-1.8E309 # 此数小于浮点数可表示的最小值
print(smallNum)
bigNum=1.8E309 # 此数大于于浮点数可表示的最大值
print(bigNum)
【例2-18】超出范围的浮点型数据类型。
-inf
inf
2.3.2 数字型数据类型
print(round(3.1415926535))
print(round(3.1415926535,5))
可使用round(number,digits)函数返回浮点数number进行四舍五入后的值,其参数number是要处理的数据,digits是保留小数点的位数,默认为0。
【例2-19】使用round()函数保留小数位数。
3
3.14159
3.复数类型,用于表示数学中的复数,例如,5+3j。
复数由实数部分和虚数部分构成,表示为:real+imagj 或 real+imagJ
>>> a=1+2j
>>> b=1.1+2.2j
>>> a+b
(2.1+4.2j)
复数的实数real和虚数imag都是浮点型
2.3.2 数字型数据类型
2.3.2 数字型数据类型
c1=12+0.2j
print(c1.real) # 打印c1实部
print(c1.imag) # 打印c1虚部
c2=6-1.2j
#对复数进行简单计算
print("c1+c2:",c1+c2)
【例2-20】复数数据类型。
12.0
0.2
c1+c2: (18-1j)
布尔型其实是整型的子类型,布尔型数据只有两个取值:True和False,分别对应整型的1和0。
True和False都是Python中的关键字,当作为Python代码输入时,一定要注意首字母是大写的,否则解释器会报错。
布尔类型可以被当做整数来对待,即True相当于整数值1,False相当于整数值0。Python提供的数据类型都可以转换为一个布尔值,如None、0值(0,0.0,0j)、空序列值(""、[]、())、空映射值({})都为False,其他值都为True。
3.布尔型(Bool)
2.3.2 数字型数据类型
2.3.2 数字型数据类型
print(bool(0))
print(bool([]))
print(bool({0}))
【例2-21】布尔数据类型。
False
False
True
即学即答:
1.以下( )属于数字型数据类型。
A.0 B.3.14
C.1+2j D.以上都是
2.3.2 数字型数据类型
2.3.3 数据类型转换
int(x[,base]) :将x转换为整型数据,如果x是字符串,则用base指定进制类型
int(6.78)结果为6
float(x):将x转换为浮点型数据
float(2)结果为2.0
comple(real[,imag]):创建一个复数,real为实部,imag为虚部
complex(9)结果为9+0j
2.3.3 数字型数据类型的转换
2.3.2 数字型数据类型
#1.接收用户输入
num=input('请输入一个小数字符串:')
#2.打印结果
print("您的幸运数字是",num)
#3.检测接收到的用户输入的str字符串类型数据
print(type(num))
#4.输入的是十进制,转换为int类型
print(int(num))
print(type(int(num)))
#4.输入的是十六进制,转换为int类型
print(int(num,16)) # 有进制的数字字符串,需要在参数中指定进制
print(type(int(num)))
#5.float()转换成浮点型
print(float(num))
print(type(float(num)))
【例2-22】数字型数据类型的转换。
请输入一个小数字符串:99
您的幸运数字是 99
<class 'str'>
99
<class 'int'>
153
<class 'int'>
99.0
<class 'float'>
2.3.2 数字型数据类型
边学边练:
编写Python程序实现以下功能:
(1)从键盘输入一个小数字符串“99.99”,将其转换为浮点数输出。
(2)在(1)的基础上再将其转换为整型数据输出。
(3)在(2)的基础上,将其作为16进制数再进行转换成整型输出。
2.3.4 数据类型和数字型数据类型 任务实现
计算身体质量指数
2.3.4 任务实现-计算身体质量指数
【任务描述】
在编写计算身体质量指数的Python程序之前,需要先了解BMI的计算规则(见2.3节的素养小课堂),然后输入测量者的身高、体重,经过计算公式和BMI的判定规则,输出身体健康情况,并给予建议。这是一个典型的输入-处理-输出的程序结构。我们按以下步骤来设计程序:
2.3.4 任务实现-计算身体质量指数
【任务分析】
(1)定义身高、体重等变量,并用input()函数输入。
(2)根据公式计算BMI值。
(3)根据BMI的判定规则(BMI正常值定为18.5~24.9,小于18.5体重过轻,25~29.9为超重,大于或等于30为肥胖),输出身体健康情况及相应建议。
BMI=体重(千克)/身高2 (米)
怎样用Python程序实现
2.3.4 任务实现-计算身体质量指数
2.3.4 任务实现-计算身体质量指数
(1)输入身高和体重(input())
(2)计算BMI指数(BMI=体重/身高2 )
(3)通过BMI指数进行判断(if函数)
(4)输出结果(print()身体是否健康)
2.3.4 任务实现-计算身体质量指数
height=float(input("请输入您的身高(单位为米):")) # 以米为单位输入身高,通过 float()转换为浮点型数据
weight=float(input("请输入您的体重(单位为千克):")) # 以千克为单位输入体重,通过 float()转换为浮点型数据
bmi = weight/(height*height) # 计算身体 BMI 指数
print("您的 BMI 指数是:",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('您过于肥胖,需要特别注意饮食健康和体育锻炼。')#通过if函数根据不同范围判断身体是否标准
【例2-23】任务实现:计算身体质量指数。
2.3.4 任务实现-计算身体质量指数
请输入您的身高(单位为米):1.78
请输入您的体重(单位为千克):72
您的 BMI 指数是: 22.7
您的体重处于正常范围,注意保持。
运行结果:
$$