手记

第二周学习--基本数据类型

上一周我们认识了基本的python程序结构,知道了python语法以及练习了一道温度转换问题。相信大家和我一样对python已经有一个初步的认识了,那么这一周,我们继续学习python的内容吧。

基本数字类型

首先我们开始认识一下基本的数字类型吧:

  • 整数类型
  • 浮点数类型
  • 复数类型
整数类型

1 整数类型其实与数学中的整数是一样的定义,整数类型包括正整数,负整数,没有取值范围。
pow(x,y),pow()函数,用来计算x的y次方
2 整数类型还有四种进制关系:

  • 十进制 100 99 -125
  • 二进制 0101001101 001110101
  • 八进制 以0o或0O开头 0o123, -0O456
  • 十六进制 以0x或者0X开头 0x9a
浮点数类型
  • 带有小数点以及小数的数字
  • 其取值范围基本无限制

这里需要注意一下浮点数之间的运算会存在不定尾数的情况,不是语言的bug,是很多编程都会出现的情况。例如。
0.1 + 0.3 = 0.4
但是 0.1 + 0.2 = 0.30000000004
就是因为二进制与十进制转换的问题:
0.1 0.00011001100110011001100110011001100110011001100110011010 (二进制表示) 53位二进制表示小数部分,约10-16
0.1000000000000000055511151231257827021181583404541015625 (十进制表示)
0.1 + 0.2 二进制表示小数,可以无限接近,但不完全相同 结果无限接近0.3,但可能存在尾数

复数类型

复数类型与数学中复数的定义相同,大家可先了解一下,日后我们用到再去具体讲解。

数字运算操作符

在编程中对于数字的操作是非常重要的,而数字之间的运算也是最常见的操作,对于掌握数字操作是一个很好地基础。

  • x + y x与y相加
  • x - y x与y相减
  • x * y x与y相乘
  • x / y x与y相除
  • x // y x与y整数除,x与y之整数商 10//3结果是3
  • +X 表示 x的本身
  • -X表示负的X
  • x%y 余数,取模运算 10%3 为 1
数字运算相关函数
  • abs() 绝对值函数 abs(-10) = 10
  • divmod(x,y) 取余 商函数 同时输出两个数余和商divmod(10,3) = (3,1)
  • pow(x, y)幂函数
  • round(x[, d]) 四舍五入,d是保留小数位数,默认值为0 round(-10.123, 2) 结果为 -10.12
  • max(x1,x2,xn)最大值函数 输出其中最大的一个
  • min(x1,x2,xn)最小值函数 输出其中最小的一个
  • int(x) 将X变成整型
  • float(x) 将X变为浮点型
  • complex(x)将X变成复数类型

实例分析–天天向上的力量

大家可以看下面这个例子:
一年365天,每天进步1‰,累计进步多少呢? 1.001365
一年365天,每天退步1‰,累计剩下多少呢? 0.999365
那么如何通过程序将问题解决呢?

dayup = pow(1.001,565)#每天进步千分之一
daydown = pow(0.999,365)#每天退步千分之一
print('向上的值为:{:.2f},向下的值为:{:.2f}'.format(dayup,daydown))

我们再来思考一个问题:
一年365天,一周5个工作日,每天进步1%
一年365天,一周2个休息日,每天退步1%
这种工作日的力量,如何计算呢

dayup = 1.0 # 定义一个初始进步值
dayfoctor = 0.01 #定义每天进步百分之一
for i  in range(365):#每年365天 建立一个for循环
    if i % 7 in [0,6]: #取模运算
        dayup = dayup*(1-dayfoctor)
    else:
        dayup = dayup*(1+dayfoctor)
print('工作日的力量:{:.2f}'.format(dayup))

(运行结果) 工作日的力量:4.63

for i  in range(365):
  if i % 7 in [0,6]:

分析这段代码,我们可以知道 建立一个for循环,i 是进步的天数,可以自动循环一年。if i % 7 in [0,6],对 i 进行取模运算,如果余数为0则说明为为周末,如果余数为6则说明为周六,就是退步的时间。
那我们接着看这个问题:
工作日模式要努力到什么水平,才能与每天努力1%一样?
A君: 一年365天,每天进步1%,不停歇
B君: 一年365天,每周工作5天休息2天,休息日下降1%,要多努力才能追上A呢?

def dayup(df):#创建函数
    dayup = 1.0#设置初始值
    for i in range(365):
        if i % 7 in [0,6]:
            dayup = dayup*(1 - 0.01)
        else:
            dayup = dayup*(1 + df)
    return dayup 

dayfoctor = 0.01
while dayup(dayfoctor) < 37.2:#如果一年的增长值小于A的进步则继续运行
    dayfoctor += 0.001
print('工作日需要努力:{:.3f}'.format(dayfoctor))

这个代码借鉴了上一问的代码,但是为了判断是否追上了A,所以加入了while语句,用作与判断,通过while我们可以让程序自己判断是否超过了A,如果没有超过则进步值自增0.001,如果超过A,则跳出程序,结束运行。

好了,通过我们今天的学习,我们知道了基本的数字类型,还有数字操作的一些知识,并且通过了一个实例来研究数字操作。

1人推荐
随时随地看视频
慕课网APP