我遇到以下代码的问题
这是我的主要功能
def jogoFinal(id_tema, id_tipo, id_user):
global pontuacao
perguntas = db.jogoFinal(id_tema, id_tipo, id_user)
dados = []
id_jogo = random.randrange(1, 10000, 2)
for row in range(len(perguntas)):
id_pergunta = row[0]
perg = row[1]
op1 = row[2]
op2 = row[3]
op3 = row[4]
op4 = row[5]
res = row[6]
print (perg)
print("Estas são as suas opções: ")
print ("opção 1: ", op1)
print ("opção 2: ", op2)
print ("opção 3: ", op3)
print ("opção 4: ", op4)
resp = int(input("Escolha uma das seguintes opções: "))
while resp not in (1,2,3,4):
print("Tem de introduzir uma opção válida (1,2,3,4)")
resp = int(input("Escolha uma das seguintes opções: "))
else:
dados.append([id_jogo, id_user,id_pergunta, resp])
if resp == res:
pontuacao += 1
print(pontuacao)
def jogoFinal(self, id_tema, id_tipo, id_user):
query = "SELECT id_pergunta,pergunta,op1,op2,op3,op4,correto FROM perguntas where id_tema = %s and id_grau = %s ORDER BY RAND() LIMIT 5;"
try:
self.cur.execute(query, (id_tema,id_tipo))
self.result = self.cur.fetchall()
for row in self.result:
return row
except mdb.IntegrityError:
logging.warn("Falhou a inserção dos dados")
然后返回必须给我5个问题的结果,但我收到了以下错误
id_pergunta = row[0]
TypeError:'int'对象不可订阅
任何帮助?
UPDATE 如果我不使用我的db类
使用def jogoFinal(id_tema, id_tipo, id_user):
global pontuacao
ans=True
id_jogo = random.randrange(1, 10000, 2)
try:
cur = conn.cursor()
cur.execute("SELECT id_pergunta,pergunta,op1,op2,op3,op4,correto FROM perguntas where id_tema = %s and id_grau = %s ORDER BY RAND() LIMIT 5",(id_tema,id_tipo))
data = cur.fetchall()
dados = []
for row in data:
id_pergunta = row[0]
perg = row[1]
op1 = row[2]
op2 = row[3]
op3 = row[4]
op4 = row[5]
res = row[6]
print (perg)
print("Estas são as suas opções: ")
print ("opção 1: ", op1)
print ("opção 2: ", op2)
print ("opção 3: ", op3)
print ("opção 4: ", op4)
resp = int(input("Escolha uma das seguintes opções: "))
while resp not in (1,2,3,4):
print("Tem de introduzir uma opção válida (1,2,3,4)")
resp = int(input("Escolha uma das seguintes opções: "))
else:
dados.append([id_jogo, id_user,id_pergunta, resp])
if resp == res:
pontuacao += 1
print(pontuacao)
except:
print ("Erro: Dados indisponíveis ")
gravaJogada(dados)
cur.close()
conn.close()
我有我想要的东西,但我必须使用db class并让它工作
任何帮助
更新2
我的db class
class DB():
def __init__(self):
db = mdb.connect('localhost', 'root', '', 'escola')
self.cur = db.cursor()
def close(self):
self.cur.close()
def jogoFinal(self, id_tema, id_tipo, id_user):
query = "SELECT id_pergunta,pergunta,op1,op2,op3,op4,correto FROM perguntas where id_tema = %s and id_grau = %s ORDER BY RAND() LIMIT 5;"
try:
self.cur.execute(query, (id_tema,id_tipo))
self.result = self.cur.fetchall()
for row in self.result:
return row
except mdb.IntegrityError:
logging.warn("Falhou a inserção dos dados")
从另一个文件中,我称这个类和函数
答案 0 :(得分:0)
row
是一个整数,不支持订阅。
list
,tuple
和dictionary
是三种支持订阅的内置类型。