数学 ========= 该部分主要完成数学运算相关的功能,具体包括数字、常数、三角函数、各种数学、位和逻辑计算、取整、取最大值、随机数、进制转换、约束和映射模块。 .. image:: images/03Mathematics/mathematics.png 1.数字常量 --------- .. image:: images/03Mathematics/number.png 1.1描述 ++++++++++ 数字常量包括:整数常量和浮点常量。 .. Attention:: 整数常量是直接在程序中使用的数字,如123。默认情况下,这些数字被视为int类型。通常情况下,整数常量默认为十进制,但可以加上特殊前缀表示为其他进制。如:0b111,表示二进制;0o73,表示八进制;0x7B,表示十六进制。 浮点常量也可以直接中程序中使用,如12.3。默认情况下,这些数字被视为float类型。也可以使用科学计数法表示浮点数。如:2.34E5代表2.34 * 10^5,其实际值为234000;67E-12代表67.0 * 10^-12,其实际值为0.000000000067。 2.常数 --------- .. image:: images/03Mathematics/consonant.png 2.1 描述 ++++++++++++ 常数模块里包括:圆周率常数π和自然常数e .. Attention:: 常数也可以直接在程序中使用。默认情况下,它们被视为int类型,而且默认为十进制。 3.三角函数及其他 ----------------- .. image:: images/03Mathematics/triangle_function.png 3.1 sin +++++++ 3.1.1 描述 ******* 计算角度的正弦(单位为°)。其结果在-1和1之间。 3.1.2 参数 ******* 角度(float) 3.1.3 返回值 ******* 角度的正弦值(double) 3.2 cos +++++++ 3.2.1 描述 ******* 计算一个角度的余弦值(单位为°)。返回值在 -1 和 1 之间。 3.2.2 参数 ****** 角度(float) 3.2.3 返回值 ****** 角度的余弦值(double) 3.3 tan +++++++ 3.3.1 描述 ******* 计算角度的正切(单位为°)。结果在负无穷大和无穷大之间。 3.3.2 参数 ******* 角度(float) 3.3.3 返回值 ****** 角度的正切值(double) 3.4 asin +++++++ 3.4.1 描述 ****** 反正弦函数为正弦函数sin的反函数。 3.4.1 参数范围 **** [-1,1] 3.4.2 返回值范围 **** [-π/2,π/2] 3.5 acos ++++ 3.5.1 描述 **** 反余弦函数为余弦函数cos的反函数。 3.5.2 参数范围 **** [-1,1] 3.5.3 返回值范围 **** [0,π] 3.6 atan ++++ 3.6.1 描述 **** 反正切函数为正切函数tan的反函数。 3.6.2 参数范围 **** [-∞,∞] 3.6.3 返回值范围 **** (-π/2,π/2) 4.相反数 ---- .. image:: images/03Mathematics/opposite_number.png 4.1 描述 ++++ 计算一个参数的相反数。 4.2 参数范围 ++++ [-∞,∞] 4.3 返回值范围 ++++ -([-∞,∞]) 5.对数函数与幂函数 ---- 5.1 ln ++++ 5.1.1 描述 **** 计算一个参数的自然对数值,自然对数是以自然常数e为底数的对数。 5.1.2 参数范围 **** (0,∞] 5.1.3 返回值范围 **** [-∞,∞] 5.2 log10 ++++ 5.2.1 描述 **** 计算一个参数的常用对数值,常用对数是以10为底数的对数。 5.2.2 参数范围 **** (0,∞] 5.2.3 返回值范围 **** [-∞,∞] 5.3 e^ ++++ 5.3.1 描述 **** 计算以参数为指数,e为底数的幂运算值,e为自然常数。 5.3.2 参数范围 **** [-∞,∞] 5.3.3 返回值范围 **** (0,∞] 5.4 10^ ++++ 5.4.1 描述 **** 计算以参数为指数,10为底数的幂运算值。 5.4.2 参数范围 **** [-∞,∞] 5.4.3 返回值范围 **** (0,∞] 6.算术运算 ----------- .. image:: images/03Mathematics/math_operation.png 6.1 描述 ++++ 算术运算中包括加(+)、减(-)、乘(×)、除(÷)、取模(%)、取整除(//)和幂运算(**)。这些运算将会返回两个操作数的和,差,积,商,模、商的整数部分和幂值。 .. Attention:: - 这些运算是根据操作数的数据类型来计算的,比如 9和4都是int类型,所以9/4结果是2。 - 如果想要两个整数相除得到小数,就需要将整数转换成小数。如9.0/2.0=4.5 。 - 这也就代表如果运算结果比数据类型所能容纳的范围要大的话,就会出现溢出。例如: 1加上一个整数 int类型 32,767 结果变成-32,768。 - 如果操作数是不同类型的,结果是“更大”的那种数据类型。如果操作数中的其中一个是 float类型或者double类型, 就变成了浮点数运算。 - 取整除运算将会返回商的整数部分,**向下取整**。 6.2 参数 ++++ 常量或变量 6.3 返回值 ++++ 两个操作数的和,差,积,商,模、商的整数部分和幂值。 7.位运算 ----------- .. image:: images/03Mathematics/math_bit_operation.png .. note:: 按位运算符是把数字看作二进制来进行计算。 7.1 按位与(&) ++++ 7.1.1 描述 **** 按位与操作符为一个&符,用在两个整型变量之间。按位与运算符对两侧的变量的每一位都进行运算。 规则是:如果两个运算元都是1,则结果为1,否则输出0。 .. hint:: 如: 0011&0101=0001 7.1.2 范例 **** .. image:: images/03Mathematics/and_example.png .. code-block:: python :linenos: a = 0b0011 b = 0b0101 c = (a&b) 7.2 按位或(|) ++++ 7.2.1 描述 **** 按位或操作符是|。 和&操作符类似,|操作符对两个变量的为一位都进行运算,只是运算规则不同。 按位或规则:只要两个位有一个为1则结果为1,否则为0。 .. hint:: 如:0011|0101=0111 7.2.2 范例 **** .. image:: images/03Mathematics/or_example.png .. code-block:: python :linenos: a = 0b0011 b = 0b0101 c = (a|b) 7.3 右移位运算(>>) ++++ 7.3.1 描述 **** 把">>"左边的运算数的各二进制位全部右移若干位,>> 右边的数字指定了移动的位数。 .. hint:: 如:00111100>>2输出结果15,二进制解释:00001111 7.3.2 范例 **** .. image:: images/03Mathematics/right_shift_example.png .. code-block:: python :linenos: a = 0b00111100 b = (a>>2) 7.4 左移位运算(<<) ++++ 7.4.1 描述 **** 运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,**高位丢弃,低位补0**。 .. hint:: 如:00111100<<2输出结果240,二进制解释:11110000 7.4.2 范例 **** .. image:: images/03Mathematics/left_shift_example.png .. code-block:: python :linenos: a = 0b00111100 b = (a<<2) 8.赋值运算 -------------- .. image:: images/03Mathematics/assignment_operation.png 8.1 描述 ++++ 赋值运算中包括赋值加(+=)、赋值减(-=)、赋值乘(×=)、赋值除(÷=)、赋值取模(%=)、赋值取整除(//=)和赋值幂运算(**=)。 赋值运算符的左边为变量,右边为操作数。赋值运算符将左边的变量本身和右边的操作数分别作为算术运算的操作数,返回两个操作数的和,差,积,商,模、商的整数部分和幂值,并将返回值赋值给左边的变量。 .. Attention:: - 这些运算是根据操作数的数据类型来计算的,比如 9和4都是int类型,所以9/4结果是2。 - 如果想要两个整数相除得到小数,就需要将整数转换成小数。如9.0/2.0=4.5 。 - 这也就代表如果运算结果比数据类型所能容纳的范围要大的话,就会出现溢出。例如: 1加上一个整数 int类型 32,767 结果变成-32,768。 - 如果操作数是不同类型的,结果是“更大”的那种数据类型。如果操作数中的其中一个是 float类型或者double类型, 就变成了浮点数运算。 - 取整除运算将会返回商的整数部分,**向下取整**。 8.2 参数 ++++ 赋值运算符左边的参数为变量,右边的参数可以为常亮或者变量。 9.近似运算 -------------- .. image:: images/03Mathematics/approximation_operation.png 9.1 取整(四舍五入)(round) ++++ 9.1.1 描述 **** 返回给定值的四舍五入取整值。 9.1.2 参数 **** 数值或变量。 9.1.3 返回值 **** 参数的四舍五入取整值 .. hint:: 如:round(4.1)=4;round(5.6)=6。 9.2 取整(取上限)(ceil) ++++ 9.2.1 描述 **** 返回给定值的下一个整数,如果输入的本身就是整数,则返回自身。 9.2.3 参数 **** 数值或变量。 9.2.4 返回值 **** 参数的下一个整数或自身。 .. hint:: 如:ceil(4.1)=5;ceil(5.6)=6,ceil(7)=7。 9.3 取整(取下限)(floor) ++++ 9.3.1 描述 **** 返回给定值的前一个整数,如果输入的本身就是整数,则返回自身。 9.3.2 参数 **** 数值或变量。 9.3.3 返回值 **** 参数的前一个整数或自身。 .. hint:: 如:floor(4.1)=4;floor(5.6)=5,floor(7)=7。 10.取绝对值(fabs) ---- 10.1 描述 ++++ 返回给定值的绝对值。 10.2 参数 ++++ 数值或变量。 10.3 返回值 ++++ 参数的绝对值。 .. hint:: 如:fabs(0)=0;fabs(-5)=5,fabs(7)=7。 11.平方根(sqrt) ---- 11.1 描述 ++++ 返回给定值的正平方根。 11.2 参数 ++++ 数值或变量。 11.3 返回值 ++++ 给定值的正平方根。 .. hint:: 如 sqrt(4)=2;sqrt(25)=5。 12.取最大/小值(min/max) ---- .. image:: images/03Mathematics/max_min.png 12.1 描述 ++++ 返回两个数值或变量中最大或最小值。 12.2 参数 ++++ 数值或者变量 12.3 返回值 ++++ 最大值或最小值 13.初始化随机数(randint) ---- .. image:: images/03Mathematics/random_number.png 13.1 描述 ++++ 在给定的范围中返回随机的整数或小数。 .. attention:: 返回的随机数在前一个参数和后一个参数之间,包含两个参数。 14.进制转换 ---- .. image:: images/03Mathematics/number_system_converter.png 14.1 描述 ++++ 将指定进制的参数转换为另一指定进制。 14.2 参数 ++++ 变量或常量 14.3 返回 ++++ 变量或常量其他进制的值 15.约束(constrain) ---- .. image:: images/03Mathematics/constrain.png 15.1 描述 ++++ 约束是将数值限制在最小值与最大值之间,所有小于最小值的数值被赋值为最小值,同理,所有大于最大值的数被赋值为最大值。 15.2 参数 ++++ 参数一:要被约束的数字,所有的数据类型适用。 参数二:该范围的最小值,所有的数据类型适用。 参数三:该范围的最大值,所有的数据类型适用。 15.3 返回值 ++++ 如果参数一介于参数二和参数三之间,返回参数一; 如果参数一大于参数三,返回参数三; 如果参数一小于参数二,返回参数二; 16.映射(map) ---- .. image:: images/03Mathematics/mapping.png .. hint:: 映射指两个元素的集之间元素相互“对应”的关系。 就像把一张地图幻灯片(尺寸255)投影到大屏幕上(尺寸1023)一样,虽然两者尺寸大小不同,但不改变地图内部的比例和相对位置。 两者之间数据形成一一对应的关系。 16.1 描述 ++++ 映射运算将参数值在前一个元素集中的位置按照两个元素集的映射方式,得出在后一个元素集中对应位置的值。 16.2 参数 ++++ 参数一:需要求映射的值; 参数二和参数三:映射的起始元素集范围; 参数四和参数五:映射的终点元素范围。 16.3 返回值 ++++ 返回参数一从起始元素集映射到终点元素集的值。 .. code-block:: python :linenos: def mixly_mapping(v, al, ah, bl, bh): return bl + (bh - bl) * (v - al) / (ah - al) //Mixly中的映射函数 mixly_mapping(50, 0, 100, 0, 1000) //调用映射函数,返回值为500.0 .. hint:: 参考上述代码举例,可以了解到:起始集合为[0,100],终点集合为[0,1000],两个集合的右边界减去左边界,再用终点集合的边界差除以起始集合的边界差,得到10,即起始集合到终点集合的映射为放大10倍。 参数一50在起始集合中的位置位于左边界加50,则在终点集合中的位置应当位于左边界加500,而经过乘除运算后数据类型变为float,所以上述举例中的返回值为500.0。 请再结合以下举例理解映射运算。 .. code-block:: python :linenos: mixly_mapping(65, 50, 100, 50, 1000) //调用映射函数,返回值为335.0 mixly_mapping(35, 50, 100, 50, 1000) //调用映射函数,返回值为-235.0 mixly_mapping(50, 0, 1000, 0, 100) //调用映射函数,返回值为5.0 mixly_mapping(60, 50, 80, 56, 74) //调用映射函数,返回值为62.0