# 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)
IyBjb2Rpbmc6IHV0Zi04CmNsYXNzIEJvZHkoKToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBoZWlnaHQsIHRpdHMpOgogICAgICAgIHNlbGYuaGVpZ2h0ID0gaGVpZ2h0CiAgICAgICAgc2VsZi5wYXJ0cyA9IHsKICAgICAgICAgICAgJ9Cz0YDRg9C00YwnOnRpdHMKICAgICAgICB9CgpjbGFzcyBEdW1teSgpOgogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgIHNlbGYuYm9keSA9IEJvZHkoMTY1LCAzKQoKICAgIGRlZiBmdWxsTmFtZShzZWxmKToKICAgICAgICByZXR1cm4gJ9CS0LDRgdGP0L0nCgpjaGFyID0gRHVtbXkoKQpwbGF5ZXIgPSBOb25lCnNleCA9ICdmZW1hbGUnCgphZ2UgPSAxNQppbkNsYXNzID0gMgpsb3lhbGl0eSA9IDYwCgpkZWYgZ2V0Qm9keURlc2Moc2V4LCBoZWlnaHQsIGhlaWdodHM9WzE1MCwgMTc1LCAzMDBdLCBoZGVzYz1bJ9C80LDQu9C10L3RjNC60L7Qs9C+INGA0L7RgdGC0LAnLCAn0YHRgNC10LTQvdC10LPQviDRgNC+0YHRgtCwJywgJ9Cy0YvRgdC+0LrQuNC5J10sIGZlbWFsZWZpeD17KCdmZW1hbGUnLCAn0LLRi9GB0L7QutC40LknKTogJ9Cy0YvRgdC+0LrQsNGPJ30pOgogICAgciA9ICcnCiAgICBmb3IgaSwgZCBpbiBlbnVtZXJhdGUoaGVpZ2h0cyk6CiAgICAgICAgaWYgaGVpZ2h0IDwgZDoKICAgICAgICAgICAgciA9IGhkZXNjW2ldCiAgICAgICAgICAgIGJyZWFrCgogICAgaWYgKHIsIHNleCkgaW4gZmVtYWxlZml4OgogICAgICAgIHJldHVybiBmZW1hbGVmaXhbciwgc2V4XQogICAgcmV0dXJuIHIKCmRlZiBnZXRTZXhEZXNjKGFnZSwgbG95YWxpdHksIHNleCk6CiAgICAjINCx0LXQtyDQv9Cw0YLRgtC10YDQvS3QvNCw0YLRh9C40L3Qs9CwINGN0YLQsCDRh9Cw0YHRgtGMINC00LXQudGB0YLQstC40YLQtdC70YzQvdC+INGB0LjQu9GM0L3QviDQu9GD0YfRiNC1INC90LUg0L/QvtC70YPRh9C40YLRgdGPCiAgICB0bXAgPSB7CiAgICAgICAgJ2Z1dGEnOiBbWyfQtNC10LLQvtGH0LrQsCcsICfQttC10L3RidC40L3QsCddLFsn0YTRg9GC0LDQvdCw0YDQuCcsICfRhNGD0YLQsNC90LDRgNC4J11dLAogICAgICAgICdmZW1hbGUnOiBbWyfQtNC10LLQvtGH0LrQsCcsICfQttC10L3RidC40L3QsCddLFsn0LTQtdCy0L7Rh9C60LAnLCAn0LbQtdC90YnQuNC90LAnXV0KICAgIH0KICAgIGlmIHNleCA9PSAnbWFsZSc6CiAgICAgICAgcmV0dXJuICfQvNGD0LbRh9C40L3QsCcgaWYgYWdlID4gMjAgZWxzZSAn0LzQsNC70YzRh9C40LonCiAgICAjaWYgc2V4ID09ICdmdXRhJzoKICAgICMgICAgcmV0dXJuICgn0YTRg9GC0LDQvdCw0YDQuCcgaWYgbG95YWxpdHkgPj0gNTAgZWxzZQogICAgIyAgICAgICAgICAgICfQttC10L3RidC40L3QsCcgaWYgYWdlID4gMjAgZWxzZSAn0LTQtdCy0L7Rh9C60LAnKQogICAgI3JldHVybiAn0LbQtdC90YnQuNC90LAnIGlmIGFnZSA+IDIwIGVsc2UgJ9C00LXQstC+0YfQutCwJwogICAgcmV0dXJuIHRtcFtzZXhdW2xveWFsaXR5ID4gNTBdW2FnZSA+IDIwXQogICAgCnByaW50IGdldFNleERlc2MoMjAsIDUxLCAnZnV0YScpLCAn0YTRg9GC0LDQvdCw0YDQuCcKcHJpbnQgZ2V0U2V4RGVzYygyMCwgNTAsICdmdXRhJyksICfQtNC10LLQvtGH0LrQsCcKcHJpbnQgZ2V0U2V4RGVzYygyMSwgNTAsICdmZW1hbGUnKSwgJ9C20LXQvdGJ0LjQvdCwJwpwcmludCBnZXRTZXhEZXNjKDIwLCA1MCwgJ2ZlbWFsZScpLCAn0LTQtdCy0L7Rh9C60LAnCnByaW50IGdldFNleERlc2MoMjEsIDUwLCAnZnV0YScpLCAn0LbQtdC90YnQuNC90LAnCgoKYm9vYnMgPSBbTm9uZSwgJ9C/0L7Rh9GC0Lgg0L7RgtGB0YPRgtGB0YLQstGD0Y7RgicsICfQvNCw0LvQtdC90YzQutC40LUnLCAn0L3QtdCx0L7Qu9GM0YjQuNC1JywgJ9C90LXQv9C70L7RhdC40LUnXQpkZWYgZ2V0RGVzY3JpcHRpb24oY2hhciwgc2V4LCBhZ2UsIGxveWFsaXR5LCBpbkNsYXNzKToKICAgIGRlc2NyaXB0aW9uID0gW10KICAgIGlmIGNoYXIgIT0gcGxheWVyOgogICAgICAgIGRlc2NyaXB0aW9uLmFwcGVuZCgn0J/QtdGA0LXQtCDQstCw0LzQuCcpCiAgICAgICAgZGVzY3JpcHRpb24uYXBwZW5kKGNoYXIuZnVsbE5hbWUoKSkKICAgICAgICBkZXNjcmlwdGlvbi5hcHBlbmQoJ1xuJykKICAgICAgICBkZXNjcmlwdGlvbi5hcHBlbmQoJ9Ct0YLQvicpCiAgICAgICAgCiAgICAgICAgZGVzY3JpcHRpb24uYXBwZW5kKGdldEJvZHlEZXNjKHNleCwgY2hhci5ib2R5LmhlaWdodCkpCgogICAgICAgIGRlc2NyaXB0aW9uLmFwcGVuZChnZXRTZXhEZXNjKGFnZSwgbG95YWxpdHksIHNleCkpCgogICAgICAgIGRlc2NyaXB0aW9uLmFwcGVuZChzdHIoYWdlKSkKICAgICAgICBkZXNjcmlwdGlvbi5hcHBlbmQoJ9C70LXRgi4nKQoKICAgICAgICBpZiBpbkNsYXNzID4gMDoKICAgICAgICAgICAgZGVzY3JpcHRpb24uYXBwZW5kKCfQo9GH0LjRgtGB0Y8g0LInKQogICAgICAgICAgICBkZXNjcmlwdGlvbi5hcHBlbmQoc3RyKGluQ2xhc3MpKQogICAgICAgICAgICBkZXNjcmlwdGlvbi5hcHBlbmQoJ9C60LvQsNGB0YHQtS4nKQoKICAgICAgICBpZiBib29ic1tjaGFyLmJvZHkucGFydHNbJ9Cz0YDRg9C00YwnXV0gIT0gTm9uZToKICAgICAgICAgICAgZGVzY3JpcHRpb24uYXBwZW5kKCfQodC40YHRjNC60LgnKQogICAgICAgICAgICBkZXNjcmlwdGlvbi5hcHBlbmQoYm9vYnNbY2hhci5ib2R5LnBhcnRzWyfQs9GA0YPQtNGMJ11dKQoKICAgIHJldHVybiAnICcuam9pbihkZXNjcmlwdGlvbikKICAgIApwcmludCBnZXREZXNjcmlwdGlvbihjaGFyLCBzZXgsIGFnZSwgbG95YWxpdHksIGluQ2xhc3Mp