小白求教,int()参数必须是字符串,类似字节的对象或数...

import sys,pygame
from pygame import *

class Trivia(object):
        def __init__(self, filename):
                self.data = []                                #数据
                self.current = 0                        #当前
                self.total = 0                                #总
                self.correct = 0                        #正确
                self.score = 0                                #得分了
                self.scored = False                        #得分
                self.failed = False                        #失败了
                self.wronganswer = 0                #错误的答案
                self.colors = [white,white,white,white]

                #read trivia data from file
                f = open(filename,"r")
                trivia_data = f.readlines()
                f.close()

                #count and clear up trivia data
                for text_line in trivia_data:
                        self.data.append(text_line.strip)
                        self.total+=1

        def show_question(self):
                print_text(font1,210,5,"TRIVIA GAME")
                print_text(font2,190,500-20,"Press Key (1-4) To Answer",purple)
                print_text(font2,530,6,"SCORE",purple)
                print_text(font2,530,25,str(self.score),purple)

                #get correct answer out of data (first)
                self.correct = int(self.data[self.current+5])###########################################################

                #display question
                question = self.current // 6 + 1
                print_text(font1,5,80,"QUESTION" + str(question))
                print_text(font2,20,150,self.data[self.current],yellow)

                #respond to correct answer
                if self.scored:
                        self.colors = [white,white,white,white]
                        self.colors[self.correct - 1] = green
                        print_text(font1,230,380,"CORRECT!",green)
                        print_text(font2,170,420,"Press Enter For Next Question",green)
                elif self.failed:
                        self.colors = [white,white,white,white]
                        self.colors[self.wronganswer-1] = red
                        self.colors[self.correct-1] = green
                        print_text(font1,220,380,"INCORRECT!",red)
                        print_text(font2,170,420,"Press Enter For Next Question",red)

                #display answers
                print_text(font1,5,170,"ANSWER")
                print_text(font2,20,210,"1-" + self.data[self.current+1],self.colors[0])
                print_text(font2,20,240,"2-" + self.data[self.current+2],self.colors[1])
                print_text(font2,20,270,"3-" + self.data[self.current+3],self.colors[2])
                print_text(font2,20,300,"4-" + self.data[self.current+4],self.colors[3])

        def handle_input(self,number):
                if not self.scored and not self.failed:
                        if number == self.correct:
                                self.scored = True
                                self.score +=1
                        else:
                                self.failed = True
                                self.wronganswer = numbe

        def next_question(self):
                if self.scored or self.failed:
                        self.scored = False
                        self.failed = False
                        self.correct = False
                        self.colors = [white,white,white,white]
                        self.current += 6
                        if self.current >= self.total:
                                self.current = 0

def print_text(font, x ,y, text, color=(255,255,255), shadow = True):
        if shadow:
                imgText  =font.render(text, True, (0, 0, 0))
                screen.blit(imgText,(x-2, y-2))

        imgText = font.render(text, True, color)
        screen.blit(imgText, (x, y))

#main program begins
pygame.init()
screen = pygame.display.set_mode((600, 500))
pygame.display.set_caption("The Trivia Game")

font1 = pygame.font.SysFont("arial",40)
font2 = pygame.font.SysFont("arial",24)

white = 255, 255, 0
cyan = 0, 255, 255
yellow = 255, 255, 0
purple = 255, 0, 255
green = 0, 255, 0
red = 255, 0, 0

#load the trivia data file
trivia = Trivia("D:\\python\\Trivia_game\\trivia_data.txt")

#repeating loop
while True:
        for event in pygame.event.get():
                if event.type == QUIT:
                        sys.exit()
                elif event.type == KEYUP:
                        if event.key == pygame.K_ESCAPE:
                                sys.exit()
                        elif event.key == pygame.K_1:
                                trivia.handle_input(1)
                        elif event.key == pygame.K_2:
                                trivia.handle_input(2)
                        elif event.key == pygame.K_3:
                                trivia.handle_input(3)
                        elif event.key == pygame.K_4:
                                trivia.handle_input(4)
                        elif event.key == pygame.K_RETURN:
                                trivia.next_question()

        #clear the screen
        screen.fill((0, 0, 200))

        #display tirvia data
        trivia.show_question()

        #update the display
        pygame.display.update()


Traceback (most recent call last):
  File "D:/python/Trivia_game/trivia_game.py", line 128, in <module>
    trivia.show_question()
  File "D:/python/Trivia_game/trivia_game.py", line 33, in show_question
    self.correct = int(self.data[self.current+5])
TypeError: int() argument must be a string, a bytes-like object or a number, not 'builtin_function_or_method'

报int() argument must be a string, a bytes-like object or a number, not 'builtin_function_or_method'这个问题了,
我尝试过self.correct = int(str(self.data[self.current+5]))这种可是不对,小白求教


请先 登录 后评论

5 个回答

吃货玲洋
首先要确认self.data[self.current+5] 这个得到的值是什么,怀疑这个值有问题,建议打印一下这个值试试
请先 登录 后评论
乡下女孑
首先感谢你的回答,下面这两个是我打印出来的,您看看,谢谢
print(self.data[self.current+5])
<built-in method strip of str object at 0x000001CC21DE3110>

print(self.current+5)
5
请先 登录 后评论
檬娜


首先感谢你的回答,下面这两个是我打印出来的,你看看,谢谢
打印(self.data [self.current + 5])
<内置方法条的str对象在0x000001CC21DE3110>

print(self。当前+ 5)
5
请先 登录 后评论
大耳朵狗
您好,请问您这个问题解决了吗?
请先 登录 后评论
秋叶

请问您这个问题解决了吗?

请先 登录 后评论
  • 5 关注
  • 0 收藏,615 浏览
  • 时榕-余 提出于 2021-07-21 16:49

相似问题