我遇到的问题是我的代码给了我:
TypeError: unorderable types: str() >= int()
事情是,我不知道如何将我的值从str切换到int,反之亦然:
def separate(seq):
result=[0,0];
a=0
b=0
for c in seq:
if(c=='0'):
a+=1
elif(c=='1'):
b+=1
else:
c>=2,
pass
return result
和
cursor1=mydb.cursor()
statement ="SELECT prediction FROM splicingdb.proteinsignalexperimental, splicingdb.disorderpredictions where proteinsignalexperimental.ID = disorderpredictions.ID AND source regexp 'disprot'"
cursor1.execute(statement)
resultat = cursor1.fetchall()
#print (resultat)
in [statement]: int(i)
s=statement
print(resultat)
zero, one = separate(s);
print ("zero: %d"%zero)
print ("one: %d"%one)
答案 0 :(得分:0)
else: #
c>=2, #<----- Not sure what that is, but maybe you want to get rid of it!
pass #<----- I suggest to get rid of the whole "else" block.
该代码将c与int进行比较。 前面的if-elif将c与字符串进行比较:
if(c=='0'):
...
elif(c=='1'):
...
c是陈述的要素。 和 statement =&#34; SELECT prediction FROM host.proteinsignalexperimental,host.disorderpredictions where proteinsignalexperimental.ID = disorderpredictions.ID AND source regexp&#39; disprot&#39;&#34;
c是一个str,你在跟踪你的其他内容时会比较一个似乎是语法错误(或一个非常奇怪的语法)的int。
如果你想改变你的变量类型,你可以这样做:
c = int(c) #<--- changes c to int
# or
c = str(c) #<--- changes c to str
或进行比较而不更改类型:
int(c) == 2 # <--- Choose which applies to your data.
str(c) == '2'
答案 1 :(得分:0)
一旦你调整了缩进错误,我猜你的实际separate
代码是这样的:
def separate(seq):
result=[0,0];
a=0
b=0
for c in seq:
if(c=='0'):
a+=1
elif(c=='1'):
b+=1
else:
c>=2,
pass
return result
行c>=2,
正在提供TypeError
,因为您尝试将字符c
与整数1
进行比较。看起来你打算将那条线仅仅作为评论,所以只需用英镑符号作为前缀。
#c>=2,
或者完全删除else
子句。
for c in seq:
if(c=='0'):
a+=1
elif(c=='1'):
b+=1
#no else needed here!
return result
(顺便说一句,你可能意味着return [a,b]
。无论result
包含什么,返回seq
都会给你[0,0]