Добавить объекты в списки в Python - PullRequest
0 голосов
/ 28 марта 2020

Я только начал изучать python, и это моя проблема, я очень плохо знаком с python - у меня есть два python файла, все в одной папке ..

1. question.py

class Question:

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

    def chkQuestion(self):
        if self.answer != "":
            return True

2. quiz.py

questions_prompts = [
    "what color are apples? \n (a) red \n(b) green \n(c) orange",
    "what color are bananas? \n (a) Teal \n(b) Magenta \n(c) Yellow",
    "what color are strawberries? \n (a) yellow \n(b) red \n(c) blue"
]

questions = []

answers = "bcd"

for i in range(3):
    pos = int(i)-1
    print(i)
    questions.append(Question(questions_prompts[pos], answers[pos]))

print(questions[0].prompt)

, когда я распечатываю список вопросов - он показывает мне все вопросы, добавленные в список, как и ожидалось, но когда я пытаюсь распечатать свойство prompt первого вопроса ( вопросы [0]) выдает эту ошибку

AttributeError: 'str' object has no attribute 'prompt'

пожалуйста, что я делаю не так, как мне вывести sh объект в список и прочитать свойства, как и ожидалось. Учебное пособие создавало новые объекты вопросов и передавало значения вручную, но мне стало любопытно, что, если у меня более 300 вопросов, я не могу сделать это вручную, поэтому я создал l oop, и я застрял.

Ответы [ 2 ]

1 голос
/ 28 марта 2020

Хотя не ясно, что вы пытаетесь сделать, поэтому я предположил из написанного кода:

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

    def execute(self):
        self.answer = input(self.prompt)

    def chkQuestion(self):
        if self.answer != "":
            return True


questions_prompts = [
    "what color are apples? \n (a) red \n(b) green \n(c) orange",
    "what color are bananas? \n (a) Teal \n(b) Magenta \n(c) Yellow",
    "what color are strawberries? \n (a) yellow \n(b) red \n(c) blue"
]

questions = []

for question in questions_prompts:
    q = Question(question)
    q.execute()
    questions.append(q)

print(questions)

for i, q in enumerate(questions):
    print("Answer for question %s was: %s" % (i, q.answer))

Вывод:

[<__main__.Question object at 0x10e2d67d0>, <__main__.Question object at 0x10e2d6810>, <__main__.Question object at 0x10e2d6850>]
Answer for question 0 was: a
Answer for question 1 was: b
Answer for question 2 was: c
0 голосов
/ 28 марта 2020

Рабочий пример, который вам нужно адаптировать:

import numpy as np

class Foo:
    def __init__(self, a, b):
        self.a = a
        self.b = b

list_of_foos = list()

a_rand = np.random.rand(100) * 1000 # Random a
b_rand = np.random.rand(100) * 1000 # Random b

for i in range(100): # Generate 100 Objects
    Obj = Foo(a_rand[i], b_rand[i])
    list_of_foos.append(Obj)

print (list_of_foos[20].a)
print (a_rand[20])

В этом случае я создал список объектов, и в конце я печатаю атрибут a из 20-го объекта что совпадает с 20-м элементом списка a_rand.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...