我在Python3.6TypeError中得到了错误:'&燃气轮机';在';列表';和';int';

我在Python3.6TypeError中得到了错误:'&燃气轮机';在';列表';和';int';,python,python-3.6,Python,Python 3.6,我在Python 3.6 TypeError中得到错误: 'list'和'int'的实例之间不支持'>' 我试图从另一个Python程序中获取数据,并使用它来显示是否进行了调整,但我不知道这方面的语法。我的代码粘贴在下面 我只需要将8位无符号整数与接收的数据进行比较 import pyglet import matplotlib matplotlib.use('TkAgg') import numpy as np import matplotlib.pyplot as plt import ma

我在Python 3.6 TypeError中得到错误:

'list'和'int'的实例之间不支持'>'

我试图从另一个Python程序中获取数据,并使用它来显示是否进行了调整,但我不知道这方面的语法。我的代码粘贴在下面

我只需要将8位无符号整数与接收的数据进行比较

import pyglet
import matplotlib
matplotlib.use('TkAgg')
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import socket
import threading
import sys
import os
import math

#Un-comment this if using OS-X.
#os.system('defaults write org.python.python ApplePersistenceIgnoreState NO')

WindowSize = 5000
SampleRate = 1000.0
VoltsPerBit = 2.5/256

#Define global variables
Fs = 1000
FlexWindowSize = 0.25
data = []
displayData = [-2 for i in range(WindowSize)]
flexing = False

# This reads from a socket.
def data_listener():
  global data
  UDP_PORT = 9000
  sock = socket.socket(socket.AF_INET, # Internet
                      socket.SOCK_DGRAM) # UDP
  sock.bind((UDP_IP, UDP_PORT))
  while True:
    newdata, addr = sock.recvfrom(1024) # buffer size is 1024 bytes
    data.extend(list(newdata))

#Handle command line arguments to get IP address
if (len(sys.argv) == 2):
    try:
        UDP_IP = sys.argv[1]
        socket.inet_aton(UDP_IP)
    except:
        sys.exit('Invalid IP address, Try again')
else:
    sys.exit('EMG_Acquire <Target IP Address>')

#Connect the UDP_Port
UDP_PORT = 9000
sock = socket.socket(socket.AF_INET, # Internet
                     socket.SOCK_DGRAM) # UDP

print('Connected to ', str(UDP_IP))
print("Listening for incoming messages...")
print('Close Window to exit')

#Start a new thread to listen for data over UDP
thread = threading.Thread(target=data_listener)
thread.daemon = True
thread.start()

#Load and place image resources
pyglet.resource.path = ['./resources']
pyglet.resource.reindex()
ForeArm_image = pyglet.resource.image("forearm.png")
Bicep_image = pyglet.resource.image("Bicep.png")
ForeArm_image.anchor_x = 7
ForeArm_image.anchor_y = ForeArm_image.height-150
Bicep_image.anchor_x = Bicep_image.width/2
Bicep_image.anchor_y = Bicep_image.height/2

#Define the moving ForeArm class
class ForeArm(pyglet.sprite.Sprite):
  def __init__(self, *args, **kwargs):
    super(ForeArm,self).__init__(img=ForeArm_image,*args, **kwargs) 
    self.rotate_speed = 100.0
    self.rotation_upper_limit = -10
    self.rotation_lower_limit = -100
    self.rotation = self.rotation_upper_limit
    self.key_handler = pyglet.window.key.KeyStateHandler()

  def update(self, dt):
    if flexing:
      if not ((self.rotation-self.rotate_speed*dt) <=   self.rotation_lower_limit):
        self.rotation -= self.rotate_speed*dt
      else:
        self.rotation = self.rotation_lower_limit
    else:
      if not((self.rotation+self.rotate_speed*dt) >= self.rotation_upper_limit):
        self.rotation += self.rotate_speed*dt
      else:
        self.rotation = self.rotation_upper_limit

#Setup the main window
main_window = pyglet.window.Window(1000,600)
main_batch = pyglet.graphics.Batch()
background = pyglet.graphics.OrderedGroup(0)
foreground = pyglet.graphics.OrderedGroup(1)
bicep = pyglet.sprite.Sprite(img=Bicep_image,x=350,y=150,batch=main_batch,group=background)
forearm = ForeArm(x=510, y=115,batch=main_batch,group=foreground)
pyglet.gl.glClearColor(1, 1, 1, 1)
main_window.push_handlers(forearm)
main_window.push_handlers(forearm.key_handler)


def update(dt):
  global displayData, data, flexing

  newData = list(data)

  data = []
  newDisplay = list(displayData[len(newData):len(displayData)] + newData)
  displayData = list(newDisplay)

  #Put your flex algorithm code here!
  #If flexing is detected, set the 'flexing' variable to True.
  #Otherwise, set it to False. 
  #############################
  #ALL OF YOUR CODE SHOULD GO BELOW HERE

  if displayData > 20:
    flexing = True
  else: 
    flexing = False

  #ALL OF YOUR CODE SHOULD GO ABOVE HERE
  forearm.update(dt)

@main_window.event
def on_draw():
    main_window.clear()
    main_batch.draw()

   pyglet.clock.schedule_interval(update, 1/120.0)
   pyglet.app.run()
导入pyglet 导入matplotlib matplotlib.use('TkAgg') 将numpy作为np导入 将matplotlib.pyplot作为plt导入 将matplotlib.animation导入为动画 导入套接字 导入线程 导入系统 导入操作系统 输入数学 #如果使用OS-X,请取消对此的评论。 #system('defaults write org.python.python applepersistenceigno重述NO') WindowsSize=5000 采样率=1000.0 VoltsPerBit=2.5/256 #定义全局变量 Fs=1000 FlexWindowsSize=0.25 数据=[] displayData=[-2表示范围内的i(窗口大小)] 弯曲=假 #这是从套接字读取的。 def data_listener(): 全球数据 UDP_端口=9000 sock=socket.socket(socket.AF#INET,#Internet socket.SOCK(内存)#UDP sock.bind((UDP_IP,UDP_端口)) 尽管如此: newdata,addr=sock.recvfrom(1024)#缓冲区大小为1024字节 data.extend(列表(newdata)) #处理命令行参数以获取IP地址 如果(len(sys.argv)==2): 尝试: UDP_IP=sys.argv[1] socket.inet_aton(UDP_IP) 除: sys.exit('无效的IP地址,请重试') 其他: 系统退出('EMG_Acquire') #连接UDP_端口 UDP_端口=9000 sock=socket.socket(socket.AF#INET,#Internet socket.SOCK(内存)#UDP 打印('连接到',str(UDP_IP)) 打印(“侦听传入消息…”) 打印('关闭窗口以退出') #启动新线程以通过UDP侦听数据 线程=线程。线程(目标=数据\u侦听器) thread.daemon=True thread.start() #加载和放置图像资源 pyglet.resource.path=['./resources'] pyglet.resource.reindex() 前臂_image=pyglet.resource.image(“前臂.png”) Bicep_image=pyglet.resource.image(“Bicep.png”) 前臂_image.anchor_x=7 前臂_image.anchor_y=前臂_image.height-150 Bicep_image.anchor_x=Bicep_image.width/2 Bicep_image.anchor_y=Bicep_image.height/2 #定义移动前臂类 类前臂(pyglet.sprite.sprite): 定义初始化(self,*args,**kwargs): 超级(前臂,自我)。\uuuu初始(img=前臂图像,*args,**kwargs) 自旋转速度=100.0 自转上限=-10 自转下限=-100 自旋转=自旋转上限 self.key\u handler=pyglet.window.key.KeyStateHandler() def更新(自我,dt): 如果弯曲: 如果不是((自旋转自旋转速度*dt)=自旋转上限): 自旋转+=自旋转速度*dt 其他: 自旋转=自旋转上限 #设置主窗口 主窗口=pyglet.window.window(1000600) main\u batch=pyglet.graphics.batch() background=pyglet.graphics.OrderedGroup(0) 前台=pyglet.graphics.OrderedGroup(1) bicep=pyglet.sprite.sprite(img=bicep_图像,x=350,y=150,batch=main_batch,group=background) 前臂=前臂(x=510,y=115,批次=主批次,组=前景) pyglet.gl.glClearColor(1,1,1,1) 主窗口。推送处理程序(前臂) 主窗口。推送处理程序(前臂。键处理程序) def更新(dt): 全局显示数据、数据、调整 newData=列表(数据) 数据=[] newDisplay=list(displayData[len(newData):len(displayData)]+newData) displayData=列表(新建显示) #把你的flex算法代码放在这里! #如果检测到弯曲,请将“flexing”变量设置为True。 #否则,将其设置为False。 ############################# #所有代码都应该放在下面 如果displayData>20: 弯曲=真 其他: 弯曲=假 #你的所有代码都应该在上面 前臂更新(dt) @主窗口事件 def on_draw(): 主窗口。清除() 主批次图() pyglet.clock.schedule_间隔(更新,1/120.0) pyglet.app.run()文件
首先,您已经将
newDisplay
实例化为一个列表,因此无需执行
displayData=list(newDisplay)
。您只需执行
displayData=newDisplay

其次,当您尝试计算
displayData>5
时,您将列表与整数进行比较。这就像在问:“这个列表是否大于5?”。这不合逻辑

一个更常见的范例是询问列表的长度是否大于某个数字。您是想说,“如果
displayData
列表的长度大于20,请采取措施”?如果是,请使用
If len(displayData)>5

但是,在这些代码行中存在一些更大的逻辑问题:

newDisplay = list(displayData[len(newData):len(displayData)] + newData)
displayData = list(newDisplay) 
您正试图在
newDisplay
定义中使用
displayData
,但是
displayData
在代码中还不存在


正如另一个人所提到的,如果您发布足够的代码来传达您的问题,以及完整的错误消息,我们可以更有效地帮助您。

欢迎使用StackOverflow。请按照您创建此帐户时的建议,阅读并遵循帮助文档中的发布指南。适用于这里。在您发布MCVE代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中,并重现您描述的问题。请发布您的最小代码和完整错误消息。您有
displayData=list()
然后是
displayData>20
,您无法比较这两个,因为错误消息指出,但是如何从displayData获取数据并将其设置为8位无符号整数?您实际上想要比较什么?第一个要素?如果有较大的元素?如果阵列中有20个以上的东西?