2016-01-17 1 views
2

Я пытаюсь создать объект моего класса Member с entryies двух списков, которые я создал:Создать объект из нескольких списков

class Member: 
    __name = "" 
    __dayoff = "" 

amount = int(input()) #amount of members 
peplist = [] #list with all the names 
dolist = [] #list with all the days off 

for i in range(0, amount): 
    print('\n') 
    print('type in a persons name please!') 
    name = input() 
    peplist.append(name) 
    daycheck() 

Моя функция daycheck() выглядит следующим образом:

def daycheck(): 
    print('type in', name, "'s day off, please!") 
    dayoff = input() 
    if (dayoff == 'monday') or (dayoff == 'tuesday') or (dayoff == 'wednesday') or (dayoff == 'thursday') or (dayoff == 'friday') or (dayoff == 'saturday') or (dayoff == 'sunday'): 
     print(name, "'s dayoff is", dayoff, '!!!') 
     dolist.append(dayoff) 
    else: 
     print("I don't know this day! Please try again!") 
     daycheck() 

Теперь хотелось бы создать объект моего класса Member() с атрибутами name и dayoff из двух списков, например:

for i in range(0, amount): 
    Member[i] = Member(peplist[i], dolist[i]) 

Очевидно, что этот цикл for не работает, но есть ли способ создать объекты с такими списками форм атрибутов?

+0

Nit: 'dayoff == 'monday' или 'tuesday' or 'wednesday' или 'thursday' или 'friday' or 'saturday' или 'sunday'' всегда True ... – kennytm

+0

@kennytm, если вы не вводите в день, который не существует, в этом случае функция попросит вас повторить процесс. И если вы вводите, например, понедельник, тогда это будет безопасно в понедельник в долисте –

+0

Я вижу, что вы имеете в виду сейчас и отредактировал его, спасибо! –

ответ

0

Я думаю, что это должно быть ближе к тому, что вы намерены делать:

class Member: 
    def __init__(self, name, dayoff): 
     self.name = name 
     self.dayoff = dayoff 

peplist = ['A', 'B', 'C'] 
dolist = ['monday', 'tuesday', 'thursday'] 

members = [Member(name, dayoff) for name, dayoff in zip(peplist, dolist)] 

Давайте посмотрим, что находится внутри:

for member in members: 
    print(member.name, member.dayoff) 

печатает:

A monday 
B tuesday 
C thursday 

Эта функция daycheck будет работать лучше:

def daycheck(name, dolist): 
    days = ['monday', 'tuesday', 'wednesday','thursday', 'friday', 
      'saturday', 'sunday'] 
    print('type in', name, "'s day off, please!") 
    dayoff = input() 
    if dayoff.strip().lower() in days: 
     print(name, "'s dayoff is", dayoff, '!!!') 
     dolist.append(dayoff) 
    else: 
     print("I don't know this day! Please try again!") 
     daycheck(name, dolist) 

daycheck('A', dolist) 
+0

Я получаю эту идею, но она создает эту ошибку. Msg: AttributeError: Объект 'Member' не имеет атрибута 'dayoff' –

+0

Убить меня, я нашел опечатку! теперь он работает благодаря миллиону! –

+0

ваш отредактированный func теперь возвращает эту ошибку. Msg: ТипError: daycheck() missing 2 обязательных позиционных аргумента: 'name' и 'dolist'! Я получил его, изменив daycheck (name, dolist) на daycheck() –

 Смежные вопросы

  • Нет связанных вопросов^_^