我在比较python中冒泡排序与选择排序的时间长短与及稳定性时,编了一段用于计算平均值,间距和方差的程序。
代码如下:
i=eval(input(":"))#给出数据个数
list1=[]
for x in range(0,i):
list1.append(eval(input()))#输入数据
list2=[]
for n in range(0,i):
list2.append((list1[n]-(sum(list1)/i))^2)
print("最大与最小间距:",max(list1)-min(list1),"平均值:",sum(list1)/i,"方差为:",sum(list2)/i)
程序随即出错:
Traceback (most recent call last):
File "C:/Users/22655/Desktop/yy.py", line 7, in
list2.append((list1[n]-(sum(list1)/i))^2)
TypeError: unsupported operand type(s) for ^: 'float' and 'int'
错在了list2.append((list1[n]-(sum(list1)/i))^2)一行中的 ^ 处,而错误指出float浮点数与int整数。
放入数据为:
5 |
---|
0.029918670654296875 |
0.03444409370422363 |
0.036663055419921875 |
0.04584145545959473 |
0.0288238525390625 |
我便更改了代码:
list2.append((list1[n]-(sum(list1)/i))**2)
结果运行正确了
最大与最小间距: 0.017017602920532227 平均值: 0.03513822555541992 方差为: 3.689622309593687e-05
在IDLE的交互下探索(^)符号的意义:
>>> (0.213253632)^2
Traceback (most recent call last):
File "", line 1, in
(0.213253632)^2
TypeError: unsupported operand type(s) for ^: 'float' and 'int'
>>> (4)^2
6
>>> (4)*(4)
16
>>> (4)**2
16
>>> (0.213253632)**2
0.04547711156119142
>>>
原来我将 ^ 符号在python错误的理解为指数运算,在python中用指数运算一般采用 (**) 或者pow(a,b)
>>> pow(2,5)
32
>>> pow(5,2)
25
>>> 2**5
32
>>> 5**2
25
而 ^ 在python中已经不是进行指数运算的意思了,
^是按位异或逻辑运算符
明显 ^ 在python中是异或逻辑运算符
什么是异或逻辑运算符呢?
最为常见的有或逻辑运算符和与逻辑运算服,以下由例子来解释:
或运算:
01010101
V 11001010
------------
11011111
在或运算中0与1运算完后为1,1与1运算后为1,0与0运算后为0
同理:
与运算中0与1运算后为0,0与0运算后为0,1与1运算后为1
^代表的异或逻辑运算符的运算规则为:
1与1运算后为0,1与0运算后为1,0与0运算为0
以上的0,1均为二进制
在python中运用^计算
例如:
>>> 5^2
计算机会先把5和2分别转换为二进制
5 ==> 101
2 ==> 010
再进行异或逻辑运算
即 101^010 结果为111
111 ==> 7 继而结果为7
>>> 5^2
7
还有很多按位逻辑运算符我就不一一介绍了