擅长:python、mysql、java
<p>首先要解决的问题是函数太长:</p>
<pre><code>def calculate_pares(numero):
return int(numero[1]) + int(numero[3]) + int(numero[5])
def calculate_impares(numero):
result = 0
for i in range(0, 8, 2):
j = int(numero[i]) * 2
if j < 10:
result += j
else:
result += j - 9
return result
def calculate_check_cif(entrada):
numero = entrada[1:10]
pares = calculate_pares(numero)
impares = calculate_impares(numero)
digito = str(pares+impares)[-1]
if int(digito) == 0:
return 0
return 10 - int(digito)
def validarCodigoCIF(entrada):
"""
:param: entrada: str
:rtype: bool
"""
letras = "ABCDEFGHIJKLMNPQRSVW"
if len(entrada) != 9 or entrada[0] not in letras:
return False
checkCIF = calculate_check_cif(entrada)
# print(checkCIF)
return str(checkCIF) == entrada[-1]
</code></pre>
<p>这只是第一步,我想你明白了。当你有一些小的函数时,进一步的改进就更容易了。</p>
<p>另外,如果你用英语编写代码,这会更容易——也许人们会帮助你发现更多有意义的函数,而不仅仅是通过盲目的分区/猜测。</p>