Ravi de vous rencontrer. Voici leo1109, un ingénieur. Puisque c'est mon premier article, j'écrirai sur Python, que j'ai touché récemment.
Tout le code utilisé dans l'article a été téléchargé sur GitHub.
Vérification du format du code. Cliquez ici pour PyPI.
Aujourd'hui, je souhaite écrire un programme en Python pour obtenir le numéro de Fibonacci! Alors je vais l'écrire. Le nombre de Fibonacci est une séquence dans laquelle les termes de la séquence sont la somme des termes un avant et deux avant.
Exprimé dans une formule mathématique, il se présente comme suit.
n > 0, n is unsigned Int.
n = 1: F(1) = 1
n = 2: F(2) = 1
n > 2: F(n) = F(n-1) + F(n-2)
Écrivons-le immédiatement. Nous devons conserver la valeur précédente, donc implémentons-la en utilisant un tableau.
# python 3.5.2
def get_fibonacci_by_index(index):
if index in [1 ,2]:
return 1
fibs = [1, 1]
for i in range(3, index + 1):
c = fibs[i - 2] + fibs[i-3]
fibs.append(c)
return fibs[-1]
C'est fait!
Je vais vérifier si cela fonctionne correctement.
Python 3.5.2 (default, Dec 19 2016, 00:08:16)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.42.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import my_math
>>> x=[]
>>> for i in range(1, 11):
... x.append(my_math.get_fibonacci_by_index(i))
...
>>> x
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
Cela semble fonctionner correctement.
--Référence: https://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A3%E3%83%9C%E3%83%8A%E3%83%83%E3%83% 81% E6% 95% B0
Cependant, il y a quelques subtilités dans ce code. Par exemple, le suivant. Eh bien, je suis curieux.
def get_fibonacci_by_index(index):
if index in [1,2]:
return 1
fibs = [1, 1] #Deux espaces après égal?
...
c = fibs[i - 2] + fibs[i-3] # i-2 et i-3 n'est pas unifié
Python a une convention de codage appelée PEP8.
Bien sûr, il est bon d'écrire en fonction de cela, mais il est difficile d'écrire en vérifiant si cela est suivi à chaque fois. Il est également très inefficace de faire en sorte que plusieurs personnes développent et écrivent différemment pour une seule personne et se trompent. C'est là que l'outil de vérification de code flake8 entre en jeu. Je laisserai l'explication détaillée à d'autres articles, mais utilisons-la réellement.
$ flake8 my_math_before.py
my_math_before.py:3:1: E302 expected 2 blank lines, found 1
my_math_before.py:4:19: E231 missing whitespace after ','
my_math_before.py:6:11: E222 multiple spaces after operator
Gununu. J'étais faché. Je dis généralement ce qui suit.
C'est facile à réparer car il a le nombre de lignes et la raison.
Le diff ressemble à ceci.
3d2
<
7,8c6
<
< fibs = [1, 1]
---
> fibs = [1, 1]
11c9
< c = fibs[i-2] + fibs[i-3]
---
> c = fibs[i - 2] + fibs[i-3]
Voici après la correction.
# python 3.5.2
def get_fibonacci_by_index(index):
if index in [1, 2]:
return 1
fibs = [1, 1]
for i in range(3, index + 1):
c = fibs[i-2] + fibs[i-3]
fibs.append(c)
return fibs[-1]
Essayons à nouveau flake8. Si vous spécifiez un nom de fichier, vous ne pouvez vérifier que le fichier cible. Si vous ne le spécifiez pas, il semble qu'il cherchera récursivement sous le répertoire exécuté.
$ flake8 my_math.py
Rien n'a été affiché! c'est pratique. En l'incorporant dans les tâches de construction Jenkins, etc., il semble que non seulement la logique, mais aussi l'uniformité du code peuvent être garanties.
La vérification fréquente du code améliore la visibilité et réduit les risques d'incorporation de bogues. J'ai omis une introduction détaillée, mais elle vous informera des erreurs ainsi que des formats.
# a.py
x = 2
x = z + 3
x = 5
if x == 5:
y = 5
$ flake8 a.py
a.py:5:1: E999 IndentationError: unexpected indent
a.py:5:2: E111 indentation is not a multiple of four
a.py:5:2: E113 unexpected indentation
a.py:6:3: E111 indentation is not a multiple of four
Je veux écrire le test de la fonction de nombre de Fibonacci que j'ai écrit cette fois en Python!
Correction d'une définition incorrecte de la séquence de Fibonacci. Merci pour la demande!
Recommended Posts