strings 是不可变的 e.g. s = 'abc' s[0] = 'y' 就会报错。
1. 穷举
2. 二分法
why float maybe 存储跟我们想要的不一样:因为数据都是以二进制形式存在电脑里
e.g. 当你输入 x = 0.1 + 0.2 时 你得到的不是 0.3 而是0.30000000000000004
打个比方 我们知道 1/3 = 0.333333333.... 假设现在电脑就是10进制的 不过他存储数据的位数有限,假设就是4位 那么1/3 就是 0.3333 那么 1/3+1/3+1/3 在电脑看来就是 0.9999 当然跟1 不一样。
这就是为什么 你在电脑里输入 0.1+0.2 不等于 0.3 的原因 因为 0.1 被电脑弄成一个有限长的二进制数,给近似了 0.2也是
不过为什么 当我们单单输入 x= 0.1 时 电脑返回的还是 0.1 呢 因为python 的设计者 在这里自动给他近似了 请看下图最后一句和 黑色的图 (当然 近似不包括计算 x = 0.1 +0.2 你得到的是0.300000000004)所以当你问 0.1+0.2 == 0.3 你得到的是False 。所以浮点数据比较 推荐用 abs(x-y)< 一个很小的数 而不是 x==y 不能有可能在你用if while 什么的时候 可能会得到 不是你想要的结果。
牛顿拉夫逊算法求多项式的根: