回答如下:Python中的位运算符包括:

- 按位与(&):对两个数字的每个对应位执行与操作,只有两个二进制位都为1时,结果才为1。
- 按位或(|):对两个数字的每个对应位执行或操作,只要两个二进制位中有一个为1时,结果就为1。
- 按位异或(^):对两个数字的每个对应位执行异或操作,只有两个二进制位不相同时,结果才为1。
- 按位取反(~):对一个数字的每个二进制位执行取反操作,即0变为1,1变为0。
- 左移(<<):将一个数字的二进制表示左移指定的位数,右侧填充0。
- 右移(>>):将一个数字的二进制表示右移指定的位数,左侧填充0或1,取决于数字的符号位。
Python 中有6种位运算符: &:按位与运算符,参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0; |:按位或运算符,只要对应的二个二进位有一个为1时,结果位就为1; ^:按位异或运算符,当两对应的二进位相异时,结果为1; ~:按位取反运算符,对数据的每个二进制位取反,即把1变为0,把0变为1; >>:右移动运算符,把 >> 左边的运算数的各二进位全部右移若干位,>> 右边的数指定移动的位数; <<:左移动运算符,运算数的各二进位全部左移若干位,由 << 右边的数指定移动的位数,高位丢弃,低位补0。
基础的加减乘除,以及利用一些基础库里的函数,例如平方、开方、对数等。
首先说明一点,python的整数运算是没有误差的,总是精确的。问题出在浮点数即小数运算中,比较典型的例子是:
连小学生都知道的a + b是0.3,为什么python会算错呢?
原来我们用到的计算机对数据的存贮和运算都是以二进制进行的。但不是每个十进制的数字都能正好有二进制的数对应,会有极小的误差,虽然这种误差是极小的。如果需要更精确的计算可以导入decimal模块来运算。
high = 100n = 10high_all = 0 #第n次落地时走过的长度high_each = 0 #每次落地的高度def ball_lands(n): global high_all, high_each, high #小球第一次落地时 if n == 0: high_each = high high_all += high_each #print('1', high_each, high_all) return high_each #从小球第n次落地往前推 high_each = high * (1 / 2) ** n print(u'第%d次小球弹起的高度为:%.2f' %(n, high_each)) high_all += high_each * 2 #print('2', high_each, high_all) ball_lands(n - 1)ball_lands(n)print(u'小球落地%d次,共经过%.2f米。' % (n,high_all))