[PYTHON] J'ai essayé d'utiliser doctest

bibliothèque doctest

Immédiatement après la définition de la fonction, vous pouvez mettre quelque chose comme `` foo bar buzz '' '' en python pour décrire la fonction. Cela s'appelle «docstring». doctest est une histoire que vous pouvez également tester le fonctionnement d'une fonction en utilisant cette docstring.

J'ai essayé de l'utiliser

Aperçu

Je dois écrire une fonction. J'ai choisi «fizzbuzz» parce que c'est trop normal comme «factoriel». Il existe une liaison ʻone liner` en python, et j'ai essayé d'utiliser le code ici.

fizzbuzz.py


def fizzbuzz(n):
    """
    This function returns a list whose elements are
    converted into fizzbuzz form.

    >>> fizzbuzz(10)
    [1, 2, 'Fizz', 4, 'Buzz', 'Fizz', 7, 8, 'Fizz', 'Buzz']
    >>> len(fizzbuzz(9))
    9
    >>> fizzbuzz(10) + 1
    Traceback (most recent call last):
      File "/Users/yourname/python/fizbuzz.py", line 32, in <module>
        fizzbuzz(10) + 1
    TypeError: can only concatenate list (not "int") to list
    """
    for i in range(1,n+1): res.append("FizzBuzz"[(i**2)%3*4:8--(i**4)%5] or i)
    return res


if __name__ == '__main__':
    import doctest
    doctest.testmod()

À propos de la fonction FizzBuzz

Pour expliquer un peu, la chaîne de caractères "FizzBuzz" est découpée et imprimée. La chaîne souhaitée est coupée en ajustant le nombre à gauche et à droite séparés par :. en bref

case(i):
je suis[Multiple de 3]Et[Multiple de 5]:
    "FizzBuzz"[0:8]

je suis[Multiple de 3]Et[Pas un multiple de 5]:
    "FizzBuzz"[0:4]

je suis[Pas un multiple de 3]Et[Multiple de 5]:
    "FizzBuzz"[4:8]

je suis[Pas un multiple de 3]Et[Pas un multiple de 5]:
    "FizzBuzz"[4:4] /* Empty String => None */

C'est. Pour y parvenir, préparez 0 pour des multiples de «3, 4» pour les autres, 8 pour des multiples de «5» et 4 »pour les autres. Puisqu'il s'agit d'une ligne unique, je fais de gros efforts avec le surplus, mais je pense qu'il n'y a rien de mal à créer une fonction distincte.

Impressions

Cela se produit lorsqu'une erreur se produit

Au fait, je l'ai simulé lorsque j'ai augmenté la valeur à retourner.

**********************************************************************
File "/Users/hiroberry/python/foo.py", line 8, in __main__.fizzbuzz
Failed example:
    len(fizzbuzz(9))
Expected:
    10
Got:
    9
**********************************************************************
1 items had failures:
   1 of   3 in __main__.fizzbuzz
***Test Failed*** 1 failures.
[Finished in 0.1s]

C'est évident en un coup d'œil. Ce serait trop pratique.

À propos de Traceback

J'ai fait un exemple spécial qui ne fonctionne pas et je l'ai essayé. Traceback Les déclarations suivantes ne semblent pas nécessairement correspondre exactement. Apparemment, je ne regarde que la déclaration «TypeError: can only ...».

Recommended Posts

J'ai essayé d'utiliser doctest
J'ai essayé d'utiliser paramétré
J'ai essayé d'utiliser argparse
J'ai essayé d'utiliser la mimesis
J'ai essayé d'utiliser anytree
J'ai essayé d'utiliser Summpy
J'ai essayé d'utiliser coturn
J'ai essayé d'utiliser Pipenv
J'ai essayé d'utiliser matplotlib
J'ai essayé d'utiliser "Anvil".
J'ai essayé d'utiliser Hubot
J'ai essayé d'utiliser ESPCN
J'ai essayé d'utiliser openpyxl
J'ai essayé d'utiliser Ipython
J'ai essayé d'utiliser PyCaret
J'ai essayé d'utiliser cron
J'ai essayé d'utiliser ngrok
J'ai essayé d'utiliser face_recognition
J'ai essayé d'utiliser Jupyter
J'ai essayé d'utiliser du folium
J'ai essayé d'utiliser jinja2
J'ai essayé d'utiliser du folium
J'ai essayé d'utiliser la fenêtre de temps
[J'ai essayé d'utiliser Pythonista 3] Introduction
J'ai essayé d'utiliser easydict (mémo).
J'ai essayé la reconnaissance faciale avec Face ++
J'ai essayé d'utiliser RandomForest
J'ai essayé d'utiliser BigQuery ML
J'ai essayé d'utiliser magenta / TensorFlow
J'ai essayé d'utiliser AWS Chalice
J'ai essayé d'utiliser l'émojinateur Slack
J'ai essayé d'utiliser Rotrics Dex Arm # 2
J'ai essayé d'utiliser Rotrics Dex Arm
J'ai essayé d'utiliser GrabCut d'OpenCV
J'ai essayé de communiquer avec le client serveur en utilisant tmux
J'ai essayé l'apprentissage en profondeur avec Theano
J'ai essayé d'utiliser le notebook jupyter d'une manière ou d'une autre
[Kaggle] J'ai essayé le sous-échantillonnage en utilisant un apprentissage déséquilibré
J'ai essayé de photographier une vague de tortue en utilisant OpenPose
J'ai essayé d'utiliser l'API checkio
J'ai essayé le traitement asynchrone en utilisant asyncio
J'ai essayé de gratter
J'ai essayé PyQ
J'ai essayé le moulin à papier
J'ai essayé django-slack
J'ai essayé Django
J'ai essayé spleeter
J'ai essayé cgo
J'ai essayé d'utiliser Amazon SQS avec django-celery
J'ai essayé de jouer au jeu ○ ✕ en utilisant TensorFlow
J'ai essayé d'utiliser l'API de données YOUTUBE V3
J'ai essayé d'utiliser du sélénium avec du chrome sans tête
J'ai essayé de dessiner une ligne en utilisant une tortue
J'ai essayé d'utiliser l'optimisation bayésienne de Python
J'ai essayé de classer le texte en utilisant TensorFlow
J'ai essayé d'utiliser la recherche sélective comme R-CNN
J'ai essayé d'utiliser l'API UnityCloudBuild de Python