Generator losowych wizytówek.

0

Witam serdecznie. Mam problem z funkcją, która będzie generowała losowe wizytówki z pomocą fakera. Chciałbym żeby funkcja miała dwa parametry: rodzaj wizytówki(biznes lub dom) i ilość wizytówek. Za pomocą fakera stworzyłem wizytowki domowe i służbowe ale to wszystko najpierw rozpisałem:

from faker import Faker
fake = Faker("pl_PL")

class BaseContact:
    def __init__(self, first_name, last_name, email_address,tel_priv):
        self.first_name = first_name
        self.last_name = last_name
        self.email_address = email_address
        self.tel_priv = tel_priv
        
    def __str__(self):
        return f"{self.first_name} {self.last_name}, {self.email_address}, {self.occupation}, {self.company}"

    def __repr__(self):
        return f"Card(first_name={self.first_name} last_name={self.last_name}, adres email={self.email_address})"

    def contact(self):
        return f"Wybieram numer domowy: {self.tel_priv} i dzwonię do {self.first_name} {self.last_name} "
    
    def workcontact(self):
        return f"Wybieram numer służbowy: {self.tel_work} i dzownię do {self.first_name} {self.last_name}"
    
    @property
    def label_lenght(self):
        return sum([len(self.first_name), len(self.last_name),+1])

    
    

class BusinessContact(BaseContact):
    def __init__(self, tel_work, company, occupation, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.tel_work = tel_work
        self.company = company
        self.occupation = occupation
human_1 = BusinessContact(first_name=fake.first_name(), last_name=fake.last_name(), company=fake.company(), occupation=fake.job(),
              email_address=fake.email(), tel_priv=fake.phone_number(), tel_work=fake.phone_number())
print(human_1)
print(human_1.contact())
print(human_1.workcontact())
print(human_1.label_lenght)
print()

I do tego momentu wszystko działa. Faker generuje jednego człowieka. Teraz mam coś takiego ale to nie działa. Pomożecie?

def create_contacts(kind, how_many):


    contacts = []
    for i in range(how_many):
        if kind == 'b':
            how_many.append(BusinessContact)
        elif kind == 'd':
            how_many.append(BaseContact)
    return contacts


if __name__ == "__main__":
    kind = input("Jaki rodzaj wizytówki utworzyć? b - biznesowa, d - domowa: ")
    how_many = int(input('Proszę podaj liczbę wizytówek do stworzenia '))
    contacts = create_contacts(kind, how_many)
    print(contacts)
1

Teraz mam coś takiego ale to nie działa. Pomożecie?

Co to znaczy nie działa, zły wynik, komputer wybuchł?

0
Jaki rodzaj wizytówki? b - biznesowa, d - domowa: b
Proszę podaj liczbę wizytówek do stworzenia 2
Traceback (most recent call last):
  File "main.py", line 87, in <module>
    contacts = create_contacts(kind, how_many)
  File "main.py", line 78, in create_contacts
    how_many.append(BusinessContact)
AttributeError: 'int' object has no attribute 'append'
1

how_many to u Ciebie int → how_many = int(input('Proszę podaj liczbę wizytówek do stworzenia ')). Nie ma sensu wywoływać na nim append, jak masz w how_many.append(BusinessContact). Co by to miało w ogóle oznaczać?

0

@Althorion: To jak to rozpisać, żeby program po podaniu informacji, czy chcemy stworzyć wizytówkę służbową czy domową i po podaniu liczby tych wizytówek, stworzył je za pomocą fakera, tak jak to ma miejsce w kodzie na samej górze? Taki wychodzi wynik z kodu gdzie wszystko jest po kolei rozpisane:

Agnieszka Łuczyk, [email protected], Konserwator zabytków, PPUH Guściora
Wybieram numer domowy: +48 517 115 421 i dzwonię do Agnieszka Łuczyk 
Wybieram numer służbowy: 22 024 81 87 i dzownię do Agnieszka Łuczyk
16
0

Zrobić sobie kolekcję, na początku pustą, i dodawać do niej wizytówki. Czy to przez list comprehention, czy przez append na już istniejącej liście.

1 użytkowników online, w tym zalogowanych: 0, gości: 1