本质上计算机熟悉的是二进制,也就是我们常说的“0,1”代码,所以无论是执行的命令还是数据本身,都必须转化为0和1他们才会认知。而我们熟悉的是自然语言,熟悉的是十进制数字,所以在很多的情况我们补充理解一些在python中数值的一些操作手段。
一、案例分析
大家都会听到这样一句话:每天进步一点点,一年后将会收获巨大。其实树哥在朋友圈也看到过非常多的这样的说法,不过具体的数值忘记了。我们可以通过这个案例来计算一下,每天进步一点点,一年后会有多大的差距?
案例:题目:如果一个人每天进步1%,一年后会进步多少?如果他每天退步1%,一年后会有多少退步?
分析:这是一个比较简单的计算题,进步1%就是0.01,1+0.01=1.01。天累计多少就变成了:
1.01的次方。退步可以写作0.99的次方。
可以查询一下,在python中,次方这样的东西使用pow这个运算符来表示:pow(基础数字,次方),也就是变成如下的两句:
pow(1.01,)pow(0.99,)非常简单吧?
不过,如果你问:如果我每天进步2%呢?那么结果就会变成:
pow(1.02,)pow(0.98,)如果你还问,如果我每天进步3%,4%,或者只是进步0.5%呢,那么这就可以改成:
input(“您准备每天进步或退步的幅度是百分之:”)pow(1+dayfactor,)pow(1-dayfactor,)可以看到,通过一个变量dayfactor容许用户的输入进步和退步的幅度,来计算最后的结果。可以编写的程序如下图:
当我们每天进步或者退步1%时,执行的结果如下:
这意味着:积跬步以至千里,积懈怠以至深渊!
当我们每天进步或者退步2%时,执行的结果如下:
这意味着:每天你比别人更努力一点点,其实已经差距上千倍。
可以尝试输入这几行代码,并执行看一下效果。
二、python基础数值操作
数值类型
整数类型
整数类型很好理解,我们日常生活中时常用的。
在程序的第一句,我们期待用户输入的也是整数。
其中,我们在第三条语句使用了pow()这样的函数,函数中可以使用整数,例如:
pow(2,3),就是说,2的3次方。
那么:pow(2,power(2,3))是什么意思呢?相当于第二个参数也利用pow函数代表了。
pow(2,pow(2,3))相当于pow(2,8)
我们这里说的整数都是十进制,实际上在python中还支持其他的表现方式:
十进制:正常写:二进制:0b,0B.B是binary的缩写。八进制:0O,0o.O是Octal的缩写。十六进制:0x3cX是Hexadecimal的缩写。浮点数
python中的浮点数有点相当于数学中的实数的概念,有小数的概念。
不过需要说明的是:
在计算机内使用二进制表示小数,所以不能完全相当于十进制。
这句话是什么意思呢?
例如:十进制数0.1,无法用二进制01代码完全精准表示,使用若干位的二进制表示出来的数字可以无限接近十进制数,但不能完全等于0.1。
这就带来了一个有意思的现象:
0.1+0.2=0.3算式成立,不过0.1+0.2==0.3却是False。
第一个算式成立的原因只是把后面的小数进行四舍五入了而已,就像我们在上面案例中,每日减少0.02最终结果等于0一样:
其实,计算的结果是:0.;因为我们有取两位小数,才成了0。
在语句中,{:.2f}的含义就是:format中的变量dayup放在这里,并取小数点后面两位。
但我们进行判断的时候(“==”在python中是否相当的意思做判断使用),就会发现0.1+0.2其实与0.3并不完全相等。
这个时候,只要像案例程序四舍五入一下,就可以了,如下:
round(0.1+0.2,2)==0.3结果为True。
验证图如下:
数值运算
简单来说,就是加减乘除求商求余次方等:
+:x+y10+3=13-:x-y10-3=7*:x*y10*3=30/:x/y10/3=3.//:x//y10//3=3求商去余%:x%y10%3=1求余数**:x**y,代表x的y次幂=pow(x,y)其中,python还提供了一种增强型操作方式:
x+=y,相当于:x=x+yx-=y,相当于:x=x-y其它的都与此类似。数值运算函数
在我们的案例中,我们已经使用了pow(x,y)的函数。因为有了这么多的函数,所以在数值运算的时候,可以直接引用就会比较方便:
pow(x,y)求x的y次方round(x,y)对x进行小数y位的四舍五入取值。max(x1,x2....xn)在数字列表中找到最大的数字min(x1,x2....xn)在数字列表中找到最小的数字divmod(x,y)求商和余数int(x)求x的整数
总结:计算机比较擅长解决计算性问题,所以对于数值的操作是我们必须要了解的知识。我们通过一个非常简单的案例:每天进步一点点来学习一下数值的一些操作知识,同时也让我们再次感悟到:每天都进步一点点的力量,每天进步百分之一,可以比原来增长37倍,如果每天进步2%,那么就可以比原来增长多倍。