我在Python3.6TypeError中得到了错误:'&燃气轮机';在';列表';和';int';
我在Python 3.6 TypeError中得到错误: 'list'和'int'的实例之间不支持'>' 我试图从另一个Python程序中获取数据,并使用它来显示是否进行了调整,但我不知道这方面的语法。我的代码粘贴在下面 我只需要将8位无符号整数与接收的数据进行比较我在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
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个以上的东西?