【问题标题】:Unsupported operand type(s) for -: 'float' and 'tuple' - Interesting error- 不支持的操作数类型:'float' 和 'tuple' - 有趣的错误
【发布时间】:2021-01-04 20:58:21
【问题描述】:

我的代码在“不支持的操作数类型 -: '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 行出现错误。感谢您的帮助。

【问题讨论】:

  • 如果错误在第 13 行,为什么要发布 118 行?
  • 我复制/粘贴了你的代码,没有这样的错误
  • 它对我有用。你能发布完整的错误信息吗?我想重复@ThomasWeller 的问题:“你为什么要发布这么多行?”
  • 代码一团糟。为什么要计算A 12 次,甚至不使用在for 循环中声明的i
  • @Matthias 很抱歉,这个网站和编程的新手。 '文件“”,第 13 行,在 +pow((qNlist[2]/13-ajlist[2]-aplist[2]),2)+ pow((qNlist[3]/13-ajlist[3]-aplist[3]),2)+ TypeError: unsupported operand type(s) for -: 'float' and 'tuple' '跨度>

标签: python list


【解决方案1】:

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

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) 更容易纠正错误,因为您不需要在所有复制的地方都进行更正。

【讨论】:

  • 我已经按照你说的更正了我的代码并得到了同样的错误。我将代码粘贴到在线编译器programiz.com/python-programming/online-compiler 仍然遇到相同的错误。你能帮帮我吗?
  • @sim:我将代码复制到那个在线编译器中,它运行没有问题。请确保复制您在本网站上发布的代码,而不是其他代码。如果您使用的代码与此处发布的代码不同,我们将无法帮助您。
  • @sim:要出现错误,代码必须类似于pow((q*Nlist[2]/13-(ajlist[2],)-aplist[2]),2)pow((q*Nlist[2]/13-(ajlist[2],aplist[2])),2)。注意额外的大括号和逗号
猜你喜欢
  • 2018-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-16
  • 2021-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多