проблема в атрибуте объекта в python - PullRequest
0 голосов
/ 04 апреля 2020

Когда я пытаюсь использовать атрибут, появляется ошибка

AttributeError: type object 'Question' has no attribute 'prompt'

Но это мой код

from hello import Question
questions=[
Question(question_sample[0],'a'),
Question(question_sample[1],'a'),
Question(question_sample[2],'a')
]


def run_test(test):
    score=0
    for question in test:
        answer=input(Question.prompt)
        if answer==Question.answer:
        score+=1
    print('you got'+str(score)+'/'+str(len(question_sample)))

run_test(questions)

И модуль, который я сделал, -

class Question:
def __init__(self, prompt, answer):
    self.prompt=prompt
    self.answer=answer

Пожалуйста, помогите, почему возникает ошибка`

from project import Test

question_sample=["(1)What is facebook?\n(a)Social network\n(b)Toy\n(c)News website\n(d)Mobile\n\n",
'(2)What is Apple Inc.?\n(a)Social network\n(b)Toy\n(c)News website\n(d)Mobile Company\n\n',
'(3)What is Barbie?\n(a)Social network\n(b)Toy\n(c)News website\n(d)Mobile\n\n']

Questions=[
    Test(question_sample[0], 'a'),
    Test(question_sample[1], 'd'),
    Test(question_sample[2], 'b')
    ]


def exam(x):
    Score=0
    for question in x:
        answer=input(question.question)
        if answer==question.answer:
            Score+=1
    print('you got')

На самом деле эта проблема у меня возникла давно. `

Ответы [ 2 ]

0 голосов
/ 04 апреля 2020

с помощью для l oop for question in test вы тайно переименовали все Question(...,...) в вопрос , чтобы получить к ним доступ, используя вопрос

, таким образом, l oop должно быть

for question in test:
    answer = question.prompt
0 голосов
/ 04 апреля 2020

Я полагаю, у вас очень глупая проблема. (бывает) Просто замените Question внутри вашего for l oop на question (строчная буква q)

for question in test:
  answer=input(question.prompt)
  if answer==question.answer:
    score+=1

Кроме того, вам нужно сделать отступ после вашего предложения if answer==question.answer:.

Надеюсь, это поможет.

...