# coding: utf-8
class Body():
    def __init__(self, height, tits):
        self.height = height
        self.parts = {
            'грудь':tits
        }

class Dummy():
    def __init__(self):
        self.body = Body(165, 3)

    def fullName(self):
        return 'Васян'

char = Dummy()
player = None
sex = 'female'

age = 15
inClass = 2
loyality = 60

def getBodyDesc(sex, height, heights=[150, 175, 300], hdesc=['маленького роста', 'среднего роста', 'высокий'], femalefix={('female', 'высокий'): 'высокая'}):
    r = ''
    for i, d in enumerate(heights):
        if height < d:
            r = hdesc[i]
            break

    if (r, sex) in femalefix:
        return femalefix[r, sex]
    return r

def getSexDesc(age, loyality, sex):
    # без паттерн-матчинга эта часть действительно сильно лучше не получится
    tmp = {
        'futa': [['девочка', 'женщина'],['футанари', 'футанари']],
        'female': [['девочка', 'женщина'],['девочка', 'женщина']]
    }
    if sex == 'male':
        return 'мужчина' if age > 20 else 'мальчик'
    #if sex == 'futa':
    #    return ('футанари' if loyality >= 50 else
    #            'женщина' if age > 20 else 'девочка')
    #return 'женщина' if age > 20 else 'девочка'
    return tmp[sex][loyality > 50][age > 20]
    
print getSexDesc(20, 51, 'futa'), 'футанари'
print getSexDesc(20, 50, 'futa'), 'девочка'
print getSexDesc(21, 50, 'female'), 'женщина'
print getSexDesc(20, 50, 'female'), 'девочка'
print getSexDesc(21, 50, 'futa'), 'женщина'


boobs = [None, 'почти отсутствуют', 'маленькие', 'небольшие', 'неплохие']
def getDescription(char, sex, age, loyality, inClass):
    description = []
    if char != player:
        description.append('Перед вами')
        description.append(char.fullName())
        description.append('\n')
        description.append('Это')
        
        description.append(getBodyDesc(sex, char.body.height))

        description.append(getSexDesc(age, loyality, sex))

        description.append(str(age))
        description.append('лет.')

        if inClass > 0:
            description.append('Учится в')
            description.append(str(inClass))
            description.append('классе.')

        if boobs[char.body.parts['грудь']] != None:
            description.append('Сиськи')
            description.append(boobs[char.body.parts['грудь']])

    return ' '.join(description)
    
print getDescription(char, sex, age, loyality, inClass)