Python Forum
Making a hotel filled with people categorizing them
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Making a hotel filled with people categorizing them
#1
Hello forum,

so I've been trying to learn python by myself and made up an exercise that I can't handle.

I've been trying to populate a hotel (i.e. list) with a random amount of people (i.e. objects) with 3 attributes (origin, age, gender). I think that part worked. But now I want to categorize them. Namely, I want to count the number of people that are underage (<18) and how many among those are male or female.

I might be messing up the indentation but I don't know.

Thanks for your help in advance!

Best regards,
Lucas

This is my code so far:
import random
guestsUnderage = 0
guestsUnderageMale = 0
guestsUnderageFemale = 0
guestsAdults = 0

class Tenant:
    def __init__(self, origin, age, gender):
        self.origin = origin
        self.age = age
        self.gender = gender
    
    def __str__(self):
        return '\nOrigin: ' + self.origin + '\nAge: ' + str(self.age) + '\nGender: ' + self.gender
    
origins = ['Europe', 'Africa', 'Americas', 'Asia', 'Australia']
ages = range(10,70)
genders = ['male', 'female']


hotel = []

for i in range(random.randint(20,40)): #random number of rooms between 20 and 40
    tenanti = Tenant(origins[random.randint(0, len(origins) - 1)], str(ages[random.randint(0, len(ages) - 1)]), genders[random.randint(0, len(genders)-1)])

    hotel.append(tenanti)

for i in range(len(hotel)):
    if int(tenanti.age) < 18:
        guestsUnderage += 1
        if tenanti.gender == 'male':
           guestsUnderageMale += 1
        else:
            guestsUnderageFemale += 1
    else:
        guestsAdults += 1
    
print(guestsUnderage,guestsUnderageFemale, guestsUnderageMale,guestsAdults)
Reply
#2
This works for me:

#! /usr/bin/env python3
import random
guestsUnderage = 0
guestsUnderageMale = 0
guestsUnderageFemale = 0
guestsAdults = 0

class Tenant:
    def __init__(self, origin, age, gender):
        self.origin = origin
        self.age = age
        self.gender = gender

    def __str__(self):
        return '\nOrigin: ' + self.origin + '\nAge: ' + str(self.age) + '\nGender: ' + self.gender

origins = ['Europe', 'Africa', 'Americas', 'Asia', 'Australia']
ages = range(10,70)
genders = ['male', 'female']


hotel = []

for i in range(random.randint(20,40)): #random number of rooms between 20 and 40
    tenanti = Tenant(origins[random.randint(0, len(origins) - 1)], str(ages[random.randint(0, len(ages) - 1)]), genders[random.randint(0, len(genders)-1)])

    hotel.append(tenanti)

for guest in hotel:
    if int(guest.age) < 18:
        guestsUnderage += 1

        if guest.gender == 'male':
            guestsUnderageMale += 1
        else:
            guestsUnderageFemale += 1
    else:
        guestsAdults += 1

print(f'Guest Underage: {guestsUnderage},\nFemale Underage: {guestsUnderageFemale}, \nMale Underage: {guestsUnderageMale}, \nAdults: {guestsAdults}')
Output:
Guest Underage: 4, Female Underage: 3, Male Underage: 1, Adults: 26
I welcome all feedback.
The only dumb question, is one that doesn't get asked.
My Github
How to post code using bbtags


Reply
#3
Watch your indentation. Do you only want to count the gender of underage guests? If not, why is the gender test more deeply indented than the age test?
Reply
#4
(Jan-08-2022, 06:05 PM)deanhystad Wrote: Watch your indentation. Do you only want to count the gender of underage guests? If not, why is the gender test more deeply indented than the age test?

Yes, exactly. For the purposes of my exercise I wanted to exclusively count the gender of underage guests.
(Jan-08-2022, 06:04 PM)menator01 Wrote: This works for me:

Awesome! Thank you so much. This worked perfectly. Sorry for the late reply, I could have sworn I had already answered you.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  How do I scrape profile information from Twitter People search results? asdad 0 737 Nov-29-2022, 10:25 AM
Last Post: asdad
  Find last filled column in openpyxl Irv1n 2 12,839 Jan-16-2022, 11:05 AM
Last Post: Pedroski55
  How to recognize, what functions are filled in of the Python interpreter stack? AlekseyPython 3 2,690 Mar-13-2019, 12:14 PM
Last Post: AlekseyPython
  Code isn't working in several IDE's when other people are getting desired output. SuperSymmetry 1 2,561 Jul-22-2017, 07:03 PM
Last Post: Larz60+

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020