think python学习笔记(7)

平方根
循环常用于计算数值的程序中,这类程序一般从一个大概的值开始,然后迭代式的进行改进
例如,牛顿法是计算平方根的一种方法
当我们想求a的平方根时,从任意一个估算值开始x,利用下面的公式可以计算出更为精确地估算值
y = (x + a/x)/2
得到的y的值会更加接近平方根的真实值,不断的用y去代替x,利用这个式子多次运算,当估算值不在变动的时候,我们基本就得到了正确的答案,也就是当y == x时,就可以停止运算了

while True:
	print(x)
	y = (x + a/x)/2
	if y==x:
		break
	x = y

但是对于某些情况,两个浮点数的相等比较是比较危险的
浮点数只能大约表示,大多数有理数,如1/3,以及无理数,
很多数是不能精确表示的
所以讲判断x y是否相等,使用内置函数abs来计算二者之差的绝对值比较安全

if abs(y-x) < epision:
	break

这里变量epision就是一个由自己确定的,决定精度的值

算法
牛顿法就是一个算法
它是解决一类问题的计算机制
例:
为了计算n和9的乘积,可以把n - 1作为乘积的第一位数,再把10-n作为乘积的第二位数,从而得到它们的乘积。这是一种普遍解法,就是一种算法
算法的特点之一就是不需要过多的脑力计算
算法是一个机械的过程,每一步都是依据一组简单的规则跟着上一步来执行的

调试
减少调试时间的一个方法就是“对分调试”
试着将问题拆为两半,在代码中间部分,寻找一个可以检查的中间值

字符串
字符串不像整数,浮点数和布尔型。字符串是一个序列,这就意味着它是其他值的一个有序的集合。

字符串是一个序列
字符串是由字符组成的序列。可以用括号运算符一次访问一个字符

fruit = 'banana'
letter = fruit[1]

括号中的表达式被称作索引,索引指出在序列中想要哪个字符
索引是从字符串起点开始的位移量,第一个字母的位移量就是0
也可以用一个包含变量名和运算符的表达式作为索引

i = 1
fruit[i]
fruit[i+1]

索引必须使用整数

len
len是一个内建函数,其返回字符串中的字符数量

fruit = 'banana'
len(fruit)

可以通过len获得最后一个字符

length = len(fruit)
last = fruit[length-1]

或者也可以使用负索引,即从字符串的结尾往后数,表达式fruit[-1]返回最后一个字符,fruit[-2]返回倒数第二个字符,以此类推

使用for循环遍历
编写遍历的方式之一是使用while循环

index = 0
while index < len(fruit):
	letter = fruit[index]
	print(letter)
	index = index+1

被访问的最后一个字符的索引是长度减一

另一种方法是使用for循环

for letter in fruit:
	print(letter)

每次循环时,字符串中的下一个字符被赋值给变量letter。循环继续,直到没有剩余的字符串了
使用拼接和for循环

prefixes = 'JKLMNOPq'
suffix = 'ack'
for letter in prefixes:
	print(letter+suffix)

字符串切片
字符串的一个片段被称为切片

s = 'Monty Python'
s[0:5]

[n:m]操作符返回从第n个字符到第m个字符的字符串片段,包括第一个,但是不包括最后一个。
如果生了第一个索引(冒号前面的值),切片起始于字符串头部。如果你省略第二个索引,切片一直到字符串结尾
如果第一个索引大于或等于第二个,结果是空字符串,用两个引号表示 ’ ’
一个空字符串不包括字符而且长度为0,但除此之外,它和其他任何字符串都一样

字符串是不可变的

greeting = 'hello world'
greeting[0] = 'j'

会报错,因为字符串是不可变的,不能改变一个已存在的字符串的
只能创建一个新的字符串,在原有的字符串的基础上略有变化

new_greeting = 'j' + greeting[1:]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值