Red de conocimiento informático - Problemas con los teléfonos móviles - Programación en Python, ¡responda! Preguntas 2 y 3

Programación en Python, ¡responda! Preguntas 2 y 3

#!/usr/bin/env?python

#coding=utf-8

importar?re

desde?datetime ?import?datetime?as?dt,?timedelta

import?platform

if?platform.python_version()[:1]?==?'2':?#Judgement ¿La versión 2 o 3 de Python

import?sys

reload(sys)

sys.setdefaultencoding('utf8')

clase ?Idcard(objeto):

'''?

gt;gt;gt;?m?=?Idcard('225122198611134730')

gt ; gt; gt;?print(m.sex)

Hombre

gt; gt;?m.nacimiento

'1986-11-13 '

gt;gt;gt;?m.age

30

'''

def?__init__(self, idcard ) :

self.idcard?=?idcard

if?len(idcard)?==?15:

sexo,?nacimiento?=?idcard [ -1:],?'19'??idcard[6:12]

elif?len(idcard)?==?18:

sexo,?nacimiento?= ? tarjeta de identificación[-2:-1],?tarjeta de identificación[6:14]

else:

raise?Exception('len(tarjeta de identificación)?is?{}?(15 / 18)'.format(len(idcard)))

self._sex?=?int(sex)??2

self._birth?=?birth

@property

def?sex(self):

return?u'male'?if?self._sex??2?else?u'female'< / p>

@property

def?age(self):?

ahora,?bir?=?dt.now(),?dt.strptime(self. _nacimiento ,?'Ymd')

antes del nacimiento?=?(ahora?-?dt(ahora.año,?bir.mes,?bir.día)).días?lt;?0

return?dt.now().año?-?int(self._birth[:4])?-?beforebirth

@property

def?birth( self ):

return?dt.strptime(self._birth,?'Ymd').strftime('Y-m-d')

def?alignment(str1,?space, ? align?=?'left'):

longitud?=?len(str1.encode('gb2312'))

espacio?=?espacio?-?longitud

?if?space?gt;=length?else?0

if?align?==?'left':

str1?=?str1?'?'?* ?espacio

elif?align?==?'right':

str1?=?'?'*?espacio? str1

elif?align? ==?'center':

str1?=?'?'?*?(espacio?//2)? str1?'?'*?(espacio?-?espacio?//? 2)

return?str1

def?main():

fname?=?'cliente.txt'

'' '

con?open(fname,?'w')?as?f:

f.write("""

Zheng Wenjie?225122198611134730

p>

¿Wen Ping?225122198912094740

¿Mamá Zheng?225122590303476

¿Papá Zheng?225122560506471

""")

' ''

newf?=?'nuestrosclientes.txt'

con?open(fname)?as?f:

s?=? f.readlines ()

L,?newL?=?[re.split(r'\s ',?i.strip())?for?i?in?s],?[]

for?i?in?L:

if?len(i)?==?2:

g?=?Idcard(i[1 ])

newL.append('{}{}{}'.format(

alineación(i[0],?10),?alineación(g.sex,? 8), ?g.age))

con?open(newf,?'w')?as?f:

f.write('\n'.join( newL))

print('\n'.join(newL[:100]))

print('¿Cliente?datos?¿has?estado?escribir?en?{} '.format (newf))

if?__name__?==?'__main__':

importar?doctest

doctest.testmod()

principal()