python中TypeError: unsupported operand type(s) for ^: 'float' and 'int'的理解(简单)

^ 在python的正确理解(初学者)

我在比较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 <module>
    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 "<pyshell#0>", line 1, in <module>
    (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

还有很多按位逻辑运算符我就不一一介绍了

  • 23
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值