python语言程序设计(一)基础语法(2)

python语言程序设计(一)基础语法(2),第1张

概述基础语法(2)一、数字类型:1.1、数字类型的表示方式:python数字类型分为三种:1.整数类型特点:不限制长度,一般可达到-1e308-1e308,相当大,所以我们常说python自带高精度,可以用来处理很多科学计算的问题,不用考虑精度2.浮点数类型特点:精度上能达到1e-16,也是可以被当作是能处理一切 基础语法(2) 一、数字类型:1.1、数字类型的表示方式:

python数字类型分为三种:
1.整数类型
特点:不限制长度,一般可达到-1e308-1e308,相当大,所以我们常说python自带高精度,可以用来处理很多科学计算的问题,不用考虑精度
2.浮点数类型
特点:精度上能达到1e-16,也是可以被当作是能处理一切问题的,但是有尾部精度的问题,因为计算机是二进制的,有些小数用二进制表示是无线循环的,所以我们只会选取到1e-16,所以就无可避免的产生了偏差,比如说:


3.复数类型
特点:只有python带有复数类型,可以很好的处理复变函数等等科学计算的问题!复数由实部和虚部构成,可以有两种表示方式:第一是:a+bj,第二是:complex(a,b)也就是元组的表示。我们来看一个实例:


这告诉我们:复数的表达方式如果用元组就必须前面加上:complex,其实如果学习过面向对象编程,这很容易理解,其实就是complex类的构造函数,通过构造函数实例化的一个对象而已。

在三种数字类型中,我们的字节宽度从小到大来说是:整数 < 浮点数 < 复数,所以我们的混合运算自然也就是向运算式中的最宽数字类型保持一致。

1.2、数字类型的运算:

我们之前说了,混合运算会向较宽的数字类型去转换,这在我认知的语言里都是这样 *** 作的。那我们来看看一共有哪些运算符呢?就说说与c/c++不一样的吧!

整除运算:// & 实数除法运算: /


计算结果如下:

从这里我们可以看到
“//” 运算符计算出来的是整除,向下取整的那种!这个和我们一般的程序设计语言不一样,一般程序设计语言除法符好:’/’ 就意味着向下取整的除法了。

'/'运算符则是计算出实数,是保留小数的那种除法,但是不像c/c++,这些程序设计语言保留小数在你没说明的情况下是自动保留到小数点后6位的!而python则是是多少位就保留多少位(只要你不超过16位!!!)

思考他们的好处:
还记得c/c++里面咋说的吗?除法运算的两个运算对象都必须是整数,但是在python里就没有任何要求,只要是数字就可以除,实验一下看看呗:

比如可以实数除法,不能除尽就保留到16位,是不是很牛逼


运算结果:

还可以这样,复数进行运算:


运算结果如下:

幂运算与幂模运算(函数)


而且函数还可以嵌套:


怎样?是不是被这种 “自带高精度” 的能力所折服??

幂运算符:**


尽在不言中!

1.3、数字函数:

之前已经展示了幂运算和幂模运算的函数了,我们这里重点介绍一个函数,经常用于实数的比较问题!我们一开始提过了,由于那个小数尾部的问题,会产生精度失真!所以我们来看一下一个很明显不对的结果:


很明显,0.1+0.2就是等于0.3的,可是我们在实际比较的时候居然会显示不相等!为什么会这样呢?我们追根溯源的讲,是因为实数的小数部分只能精确到1e-16,但是有的小数在二进制表示下是无限循环小数,所以必定会有保留精度!所以我们在比较实数的时候,不能每一位都去比较,必须在限制精度的情况下去比较,所以有截取精度的函数:round(x, d),表示的是实数x,保留到小数点后d位,四舍五入!实验一下看看:


那么之前的问题就可以得以解决了:


至于保留到底多少位比较好,那就看情况而定咯!另外啊,如果这个d缺省,就是默认为0,也就是直接取整数(对第一位小数五舍六入,所以这个d要考虑慎重啊!)

上面这个函数的一个坑点:保留小数不统一:

看实例:


这里很明显可以看出确确实实是四舍五入,但是再看实例:

这个是偶向舍入,比如:x.5,如果x是奇数就会入,变成x+1,否则还是x,会舍去。1.3、编程实例练习:

题目描述:A每天都在学习,每天进步0.01,但是B一周只学习五天,周末休息导致技术倒退0.01,问B在五天的学习时间里必须达到每天进步多少,才能在一年后不落后于A!

代码如下:
def WorkHard(fac):    ans = 1    for i in range(365):        if i % 7 in [0, 6]:            ans = ans * (1 - 0.1)        else:            ans = ans * (1 + fac)    return ansif __name__ == "__main__":    work = 1    for i in range(365):        work = work * (1 + 0.1)    f = 0.01    while round(WorkHard(f), 6) < round(work, 6):        f += 0.001    print("每天需要努力的值为:{:.3f}".format(f))
二、字符串类型2.1、字符串的运算:


这些上一篇博客都讲过,我们就挑重点,学习一下切片选取运算的升级版:

第一:默认值[【左侧】:【右侧】]
如果左侧缺省,默认值是最左侧,右侧默认值缺省,默认是最右侧!这个很常用

第二:步长选取:[【左侧】:【右侧】:【步长】]
所谓步长,其实就是第一个取的位置是左侧值,然后每隔【步长】个步长再选取下一个的值。比如:

第三:也是最有意思的,反转字符串:
我们先来思考如何反转字符串,在python里我们对字符串提供了两种索引,一个是正向递增索引,另一个是反向递减索引!!所以我们在步长切取字符的时候,可以反向切取,就得到反转的字符串了:


怎样?是不是比c++简单多了!哈哈哈!

2.2、字符串自带的方法:2.2.1、replace(str1, str2)方法

str.replace(str1, str2)是一个很好用的方法,可以用于把str1用str2代替!比如:

这里很需要注意:

replace()函数不会修改本身字符串的值,因为我们要记住!!python的字符串是常量,是不会发生改变的!!所以我们的replace()函数实际上是把修改后的字符串变成一个新的字符串并且返回,需要有一个新的字符串变量去接收它!才能显示出来!!

2.2.2、字符串的格式:居中center()函数

2.2.3、字符串拆分&联合函数:split() & join()


这样处理可比较方便的从字符串中提取出列表,以便于后续的 *** 作,这里需要注意的是:

第一:

split()函数默认值是空格,也就是默认以空格分隔字符串。

第二:

split()函数的第一个参数是分隔符标志,第二个参数是最大分割数,我们详细说是这个最大分割数。如果我们限定最大分割数是k,则最多只能分出k + 1组的列表元素,因为最大分割数是最多能够分出多少个分隔符的意思!比如:


这里我们就只有两个组,一个是:“张三”,另一个是:“李四,王五”

再来看join()函数:
使用格式:
“分隔符”.join(被分隔的内容)
比如:

2.3常用的字符串处理函数:2.3.1:len(str):求出str的长度

2.3.2、字符串查找子串:

这个和C/C++是一样的,找到了就返回第一次出现的位置,没找到就返回-1

总结

以上是内存溢出为你收集整理的python语言程序设计(一)基础语法(2)全部内容,希望文章能够帮你解决python语言程序设计(一)基础语法(2)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1185021.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存