这篇博客的存在,只为了 python3 数字和运算符,主要包括:int、float、complex 以及类型转换和常见的运算符,比如 加减乘除以及整除,另外是数学函数、随机数函数、三角函数。下面,我们步入主题。
python3 数字和运算符
1、基本数字类型
python3 里有 int、float、complex 三种数字类型,没有 long,complex 是复数,说实话,这是我见过的第一个支持复数的编程语言。另外,你可以通过 int(x)、float(x)、complex(x) 将x 转为 int、float、complex 类型,complex(x, y) 将 x、y 转为复数类型,实数部分为x 虚数部分为y,当使用 complex(x, y) 时,x、y 必须为数字类型。下面是一个例子:
print(int("3")) print(float("3.5")) print(complex("3.5")) print(complex(3.5, 2))
以上例子的输出分别为:3、3.5、(3.5 + 0j)、(3.5 + 2j)
2、常见运算符
python3 里除了常见的加减乘除还多了整除,即 // 但是整除的输出不一定是整数,请看例子:
print(12.0 // 7) print(12.0 / 7) print(12 / 7) print(12.0 // 3) print(12 // 3)
python3 里,12 / 7 和12.0 / 7 结果是一样的,没有精度损失,正因为如此,才有了 // ,而整除你可以理解为只保留整数部分,比如 12 / 7 应该是 1.7xxx 如果是整除则为1.0 即没有进1,也没有保留小数,而是保留了整数部分。整除和除以的逻辑和我们之前所见的有点不一样,但总体很好理解。
3、随机数函数
我相信,在随机数函数、数学函数、三角函数里,用的最普遍的可能是随机数函数,接着是数学函数,三角函数很少用。python3 里随机数函数有:random.choice(seq) 从序列的元素里随机挑选一个,其中seq 可以是 列表、元组、字符串,例外还有:random.randrange ([start,] stop [,step]) 、random.random()、random.shuffle(seq)、random.uniform(x, y) 最后,你还可以了解下 random.seed(xxx) ,randrange 用于生成 start 到 stop 的一个随机数,其中递增的数字是 step,并且不包含stop,比如 random.randrange(1, 100, 2) 则是生成 1 - 100的随机数,每次递增2包含1且不包含100,即是1-100的奇数,shuffle(seq) 用于将一个序列的元素随即排序,抽奖用的到啊,uniform(x, y) 用于生成 x - y的随机浮点数,看下面的例子。
import random array = ['10', '11', '12', '13'] print(random.choice(array)) random.shuffle(array) print(array) print(random.randrange(1, 100, 2)) print(random.uniform(1, 10))
random.shuffle(seq) 仅仅是把序列随机排序,元序列发生了变化,但没有返回值哦。至于 seed 用于改变随机数生成器的种子,一般闲着蛋疼可能会去玩它。
4、数学函数
数学函数就不再举例,请看列表,以便查阅:
- abs(x) 求绝对值,有个黄色笑话,男生看黄片,打一数学名词。哈哈哈。
- math.ceil(x) 返回进 1 后的整数,比如 ceil(4.1) 返回 5,但是请注意,ceil(4.0) 返回4 玩个儿科游戏,1 = 5,2 = 10,3 = 15,4 = 20 那么 5 = ?
- math.exp(x) 返回 e 的 x 次幂,那么 e = ? e = math.exp(1) 即 2.718281828459045
- math.fabs(x) 求绝对值,和 abs 的区别在于 abs 是内置的,另外,abs 还可以求复数的绝对值,而 fabs 是 math 中定义的,只对 int、float有效,所以,请你忘了这货吧,没啥用。
- math.floor(x) 和 ceil(x) 相反,floor(4.9) 以及 floor(4.0) 都返回 4
- math.log(x, y) 返回 y的对数z,即 y 的 z 次方是 x
- math.log10(x) 返回以 10 为底数的 x 的对数,等同于 log(x, 10)
- max(1, 2, xxx)、min(1, 2, xxx) 分别返回最大和最小值,参数可以是序列
- math.modf(x) 以元组的方式返回 x 的整数与小数部分,若 x 为正 则元组里的元素均为正,反之均为负
- math.pow(10, 2) 返回 10 的 2 次方。
- round(12.567, 1) 返回 12.567 的四舍五入保留 1位小数的值。
- math.sqrt(100) 返回 100 的平方根,即 10
5、三角函数
- math.acos(x) x 取值 -1 - 1 反余弦函数,求弧度。
- math.asin(x) x -1 到 1 反正弦函数,求弧度。
- math.atan(x) 反正切函数,求弧度。
- math.atan2(y, x) 返回给定的 X 及 Y 坐标值的反正切值。
- math.cos(x) 返回 x 弧度的余弦值
- math.sin(x) 返回 x 弧度的正弦值
- math.tan(x) 返回 x 弧度的正切值
- math.degrees(x) 将 x 弧度转化为角度
- math.radians(x) 将 x 角度转化为弧度
- math.hypot(x, y) 返回欧几里德范数 sqrt(x*x + y*y) 的值。比如直角三角形的两条短边分别为 x、y求它的长边,那么,这个函数就用上了。