首页 > 解决方案 > - 不支持的操作数类型:'float' 和 'tuple' - 有趣的错误

问题描述

我在“不支持的操作数类型 -: 'float' 和 'tuple'”上方的代码中收到意外错误。我在互联网上研究了解决方案,但找不到。它一定是关于定义的,但我找不到错误在哪里。错误在第 13 行。感谢您的帮助。

from math import pow,sqrt

q=1
Nlist= [1,7,5,9,4,6,4,3,5,8,3,10,9]
aplist=[0,1,0,1,0,1,0,0,0,1,0,1,1]
bplist=[0,0,1,1,0,1,0,0,1,0,1,0,1]
cplist=[0,0,1,1,0,0,1,0,0,1,0,1,0]
dplist=[0,1,0,0,1,0,0,1,1,0,0,1,1]
eplist=[1,0,0,0,1,0,1,0,0,1,1,0,0]
ajlist=[0,1,0,0,1,0,0,0,0,0,0,0,0]
for i in range(1,13,1):
    A=sqrt(pow((q*Nlist[0]/13-ajlist[0]-aplist[0]),2)+pow((q*Nlist[1]/13-ajlist[1]-aplist[1]),2)
    +pow((q*Nlist[2]/13-ajlist[2]-aplist[2]),2)+pow((q*Nlist[3]/13-ajlist[3]-aplist[3]),2)+
    pow((q*Nlist[4]/13-ajlist[4]-aplist[4]),2)+pow((q*Nlist[5]/13-ajlist[5]-aplist[5]),2)+
    pow((q*Nlist[6]/13-ajlist[6]-aplist[6]),2)+pow((q*Nlist[7]/13-ajlist[7]-aplist[7]),2)+
    pow((q*Nlist[8]/13-ajlist[8]-aplist[8]),2)+pow((q*Nlist[9]/13-ajlist[9]-aplist[9]),2)+
    pow((q*Nlist[10]/13-ajlist[10]-aplist[10]),2)+
    pow((q*Nlist[11]/13-ajlist[11]-aplist[11]),2)+
    pow((q*Nlist[12]/13-ajlist[12]-aplist[12]),2))

print("A'nın değeri:",A)


B=sqrt(pow((q*Nlist[0]/13-ajlist[0]-bplist[0]),2)+pow((q*Nlist[1]/13-ajlist[1]-bplist[1]),2)
+pow((q*Nlist[2]/13-ajlist[2]-bplist[2]),2)+pow((q*Nlist[3]/13-ajlist[3]-bplist[3]),2)+
pow((q*Nlist[4]/13-ajlist[4]-bplist[4]),2)+pow((q*Nlist[5]/13-ajlist[5]-bplist[5]),2)+
pow((q*Nlist[6]/13-ajlist[6]-bplist[6]),2)+pow((q*Nlist[7]/13-ajlist[7]-bplist[7]),2)+
pow((q*Nlist[8]/13-ajlist[8]-bplist[8]),2)+pow((q*Nlist[9]/13-ajlist[9]-bplist[9]),2)+
pow((q*Nlist[10]/13-ajlist[10]-bplist[10]),2)+pow((q*Nlist[11]/13-ajlist[11]-bplist[11]),2)+
pow((q*Nlist[12]/13-ajlist[12]-bplist[12]),2))

print("B'nın değeri:",B)


C=sqrt(pow((q*Nlist[0]/13-ajlist[0]-cplist[0]),2)+pow((q*Nlist[1]/13-ajlist[1]-cplist[1]),2)
+pow((q*Nlist[2]/13-ajlist[2]-cplist[2]),2)+pow((q*Nlist[3]/13-ajlist[3]-cplist[3]),2)+
pow((q*Nlist[4]/13-ajlist[4]-cplist[4]),2)+pow((q*Nlist[5]/13-ajlist[5]-cplist[5]),2)+
pow((q*Nlist[6]/13-ajlist[6]-cplist[6]),2)+pow((q*Nlist[7]/13-ajlist[7]-cplist[7]),2)+
pow((q*Nlist[8]/13-ajlist[8]-cplist[8]),2)+pow((q*Nlist[9]/13-ajlist[9]-cplist[9]),2)+
pow((q*Nlist[10]/13-ajlist[10]-cplist[10]),2)+pow((q*Nlist[11]/13-ajlist[11]-cplist[11]),2)+
pow((q*Nlist[12]/13-ajlist[12]-cplist[12]),2))

print("C'nın değeri:",C)


D=sqrt(pow((q*Nlist[0]/13-ajlist[0]-dplist[0]),2)+pow((q*Nlist[1]/13-ajlist[1]-dplist[1]),2)
+pow((q*Nlist[2]/13-ajlist[2]-dplist[2]),2)+pow((q*Nlist[3]/13-ajlist[3]-dplist[3]),2)+
pow((q*Nlist[4]/13-ajlist[4]-dplist[4]),2)+pow((q*Nlist[5]/13-ajlist[5]-dplist[5]),2)+
pow((q*Nlist[6]/13-ajlist[6]-dplist[6]),2)+pow((q*Nlist[7]/13-ajlist[7]-dplist[7]),2)+
pow((q*Nlist[8]/13-ajlist[8]-dplist[8]),2)+pow((q*Nlist[9]/13-ajlist[9]-dplist[9]),2)+
pow((q*Nlist[10]/13-ajlist[10]-dplist[10]),2)+pow((q*Nlist[11]/13-ajlist[11]-dplist[11]),2)+
pow((q*Nlist[12]/13-ajlist[12]-dplist[12]),2))

print("D'nin değeri:",D)


E=sqrt(pow((q*Nlist[0]/13-ajlist[0]-eplist[0]),2)+pow((q*Nlist[1]/13-ajlist[1]-eplist[1]),2)
+pow((q*Nlist[2]/13-ajlist[2]-eplist[2]),2)+pow((q*Nlist[3]/13-ajlist[3]-eplist[3]),2)+
pow((q*Nlist[4]/13-ajlist[4]-eplist[4]),2)+pow((q*Nlist[5]/13-ajlist[5]-eplist[5]),2)+
pow((q*Nlist[6]/13-ajlist[6]-eplist[6]),2)+pow((q*Nlist[7]/13-ajlist[7]-eplist[7]),2)+
pow((q*Nlist[8]/13-ajlist[8]-eplist[8]),2)+pow((q*Nlist[9]/13-ajlist[9]-eplist[9]),2)+
pow((q*Nlist[10]/13-ajlist[10]-eplist[10]),2)+pow((q*Nlist[11]/13-ajlist[11]-eplist[11]),2)+
pow((q*Nlist[12]/13-ajlist[12]-eplist[12]),2))

print("E'nin değeri:",E)
q=q+1
list1=[A,B,C,D,E]
print(min(list1))


if(min(list1)==list1[0]):
    print("A atandı.")
elif(min(list1)==list1[1]):
    print("B atandı")

elif(min(list1)==list1[2]):
    print("C atandı")
   
elif(min(list1)==list1[3]):
    print("D atandı")
    
elif(min(list1)==list1[4]):
    print("E atandı")
  


if(min(list1)==list1[0]):
    ajlist[1]=ajlist[1]+1,
    ajlist[3]=ajlist[3]+1,
    ajlist[5]=ajlist[5]+1,
    ajlist[9]=ajlist[9]+1,
    ajlist[11]=ajlist[11]+1,
    ajlist[12]=ajlist[12]+1,
    print("geldim")
elif(min(list1)==list1[1]):
    ajlist[2]=ajlist[2]+1,
    ajlist[3]=ajlist[3]+1,
    ajlist[5]=ajlist[5]+1,
    ajlist[8]=ajlist[8]+1,
    ajlist[10]=ajlist[10]+1,
    ajlist[12]=ajlist[12]+1,
elif(min(list1)==list1[2]):
    ajlist[2]=ajlist[2]+1,
    ajlist[3]=ajlist[3]+1,
    ajlist[6]=ajlist[6]+1,
    ajlist[9]=ajlist[9]+1,
    ajlist[11]=ajlist[11]+1,
elif(min(list1)==list1[3]):
    ajlist[1]=ajlist[1]+1,
    ajlist[4]=ajlist[4]+1,
    ajlist[7]=ajlist[7]+1,
    ajlist[8]=ajlist[8]+1,
    ajlist[11]=ajlist[11]+1,
    ajlist[12]=ajlist[12]+1,
elif(min(list1)==list1[4]):
    ajlist[0]=ajlist[0]+1,
    ajlist[4]=ajlist[4]+1,
    ajlist[6]=ajlist[6]+1,
    ajlist[9]=ajlist[9]+1,
    ajlist[10]=ajlist[10]+1,


    
    

我在“不支持的操作数类型 -: 'float' 和 'tuple'”上方的代码中收到意外错误。我在互联网上研究了解决方案,但找不到。它一定是关于定义的,但我找不到错误在哪里。错误在第 13 行。感谢您的帮助。

标签: pythonlist

解决方案


实际上我无法重现确切的问题。但是,您的代码非常混乱。看来您走在正确的轨道上,但未能做到正确。编码

for i in range(1,13,1):
    A=sqrt(pow((q*Nlist[0]/13-ajlist[0]-aplist[0]),2)+pow((q*Nlist[1]/13-ajlist[1]-aplist[1]),2)
    +pow((q*Nlist[2]/13-ajlist[2]-aplist[2]),2)+pow((q*Nlist[3]/13-ajlist[3]-aplist[3]),2)+
    pow((q*Nlist[4]/13-ajlist[4]-aplist[4]),2)+pow((q*Nlist[5]/13-ajlist[5]-aplist[5]),2)+
    pow((q*Nlist[6]/13-ajlist[6]-aplist[6]),2)+pow((q*Nlist[7]/13-ajlist[7]-aplist[7]),2)+
    pow((q*Nlist[8]/13-ajlist[8]-aplist[8]),2)+pow((q*Nlist[9]/13-ajlist[9]-aplist[9]),2)+
    pow((q*Nlist[10]/13-ajlist[10]-aplist[10]),2)+
    pow((q*Nlist[11]/13-ajlist[11]-aplist[11]),2)+
    pow((q*Nlist[12]/13-ajlist[12]-aplist[12]),2))

可以短至

sum_of_powers = 0
for i in range(13):
    sum_of_powers += pow((q * Nlist[i] / 13 - ajlist[i] - aplist[i]), 2)
A = sqrt(sum_of_powers)

类似的事情重复了B,所以你应该把它变成一个函数,而不是复制/粘贴整个事情:

def root_of_powers(plist:list):
    sum_of_powers = 0
    for i in range(13):
        sum_of_powers += pow((q * Nlist[i] / 13 - ajlist[i] - plist[i]), 2)
    return sqrt(sum_of_powers)

并像使用它一样

A = root_of_powers(aplist)
B = root_of_powers(bplist)
...

删除所有重复代码后,a) 更容易发现错误,b) 更容易纠正错误,因为您不需要在所有复制的地方更正它。


推荐阅读