[PYTHON] Ich habe versucht, doctest zu verwenden

Doctest Bibliothek

Unmittelbar nach der Funktionsdefinition können Sie in Python so etwas wie "Foo Bar Buzz" in Python einfügen, um die Funktion zu beschreiben. Dies wird als "docstring" bezeichnet. doctest spricht über die Verwendung dieser "Dokumentzeichenfolge", um die Funktionsweise von Funktionen zu testen.

Ich habe es versucht

Überblick

Ich muss eine Funktion schreiben. Ich habe mich für "fizzbuzz" entschieden, weil es zu normal ist wie "Fakultät". In Python gibt es eine Bindung namens "one liner", und ich habe versucht, den Code [hier] zu verwenden (http://stackoverflow.com/questions/6890037/python-fizzbuzz-in-one-line).

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()

Über die FizzBuzz-Funktion

Um es ein wenig zu erklären, wird die Zeichenkette "FizzBuzz" geschnitten und gedruckt. Die gewünschte Zeichenfolge wird ausgeschnitten, indem die Zahl links und rechts durch ":" getrennt angepasst wird. Zusamenfassend

case(i):
ich bin[Vielfaches von 3]Und[Vielfaches von 5]:
    "FizzBuzz"[0:8]

ich bin[Vielfaches von 3]Und[Kein Vielfaches von 5]:
    "FizzBuzz"[0:4]

ich bin[Kein Vielfaches von 3]Und[Vielfaches von 5]:
    "FizzBuzz"[4:8]

ich bin[Kein Vielfaches von 3]Und[Kein Vielfaches von 5]:
    "FizzBuzz"[4:4] /* Empty String => None */

Das ist. Um dies zu erreichen, bereiten Sie 0 für Vielfache von "3", 4 "für andere, 8 für Vielfache von" 5 "und 4" für andere vor. Da es sich um einen Einzeiler handelt, bemühe ich mich sehr um den Überschuss, aber ich denke, es ist in Ordnung, eine separate Funktion zu erstellen.

Impressionen

Dies geschieht, wenn ein Fehler auftritt

Ich habe es übrigens simuliert, als ich den zurückzugebenden Wert erhöht habe.

**********************************************************************
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]

Es ist auf einen Blick offensichtlich. Es wäre zu bequem.

Über Traceback

Ich habe ein spezielles Beispiel gemacht, das nicht funktioniert, und es ausprobiert. Rückverfolgung Die folgenden Aussagen scheinen nicht genau übereinzustimmen. Anscheinend schaue ich nur auf die Anweisung "TypeError: kann nur ...".

Recommended Posts

Ich habe versucht, doctest zu verwenden
Ich habe versucht, parametrisiert zu verwenden
Ich habe versucht, Argparse zu verwenden
Ich habe versucht, Mimesis zu verwenden
Ich habe versucht, anytree zu verwenden
Ich habe versucht, Summpy zu verwenden
Ich habe versucht, Coturn zu verwenden
Ich habe versucht, Pipenv zu verwenden
Ich habe versucht, Matplotlib zu verwenden
Ich habe versucht, "Anvil" zu verwenden.
Ich habe versucht, Hubot zu verwenden
Ich habe versucht, ESPCN zu verwenden
Ich habe versucht, openpyxl zu verwenden
Ich habe versucht, Ipython zu verwenden
Ich habe versucht, PyCaret zu verwenden
Ich habe versucht, Cron zu verwenden
Ich habe versucht, ngrok zu verwenden
Ich habe versucht, face_recognition zu verwenden
Ich habe versucht, Jupyter zu verwenden
Ich habe versucht, Folium zu verwenden
Ich habe versucht, jinja2 zu verwenden
Ich habe versucht, Folium zu verwenden
Ich habe versucht, das Zeitfenster zu verwenden
[Ich habe versucht, Pythonista 3 zu verwenden] Einführung
Ich habe versucht, easydict (Memo) zu verwenden.
Ich habe versucht, das Gesicht mit Face ++ zu erkennen
Ich habe versucht, RandomForest zu verwenden
Ich habe versucht, BigQuery ML zu verwenden
Ich habe versucht, Magenta / TensorFlow zu verwenden
Ich habe versucht, AWS Chalice zu verwenden
Ich habe versucht, Slack Emojinator zu verwenden
Ich habe versucht, Rotrics Dex Arm # 2 zu verwenden
Ich habe versucht, Rotrics Dex Arm zu verwenden
Ich habe versucht, GrabCut von OpenCV zu verwenden
Ich habe versucht, mit dem Server-Client über tmux zu kommunizieren
Ich habe versucht, mit Theano tief zu lernen
Ich habe irgendwie versucht, ein Jupyter-Notebook zu verwenden
[Kaggle] Ich habe versucht, mit unausgeglichenem Lernen zu unterabtasten
Ich habe versucht, mit OpenPose eine Schildkrötenwelle zu schießen
Ich habe versucht, die checkio-API zu verwenden
Ich habe versucht, asynchrone Verarbeitung mit Asyncio
Ich habe versucht zu kratzen
Ich habe PyQ ausprobiert
Ich habe es mit Papiermühle versucht
Ich habe versucht, Django-Slack
Ich habe es mit Django versucht
Ich habe es mit Spleeter versucht
Ich habe es mit cgo versucht
Ich habe versucht, Amazon SQS mit Django-Sellerie zu verwenden
Ich habe versucht, ○ ✕ mit TensorFlow zu spielen
Ich habe versucht, YOUTUBE Data API V3 zu verwenden
Ich habe versucht, Selen mit Headless-Chrom zu verwenden
Ich habe versucht, mit einer Schildkröte eine Linie zu ziehen
Ich habe versucht, die Bayes'sche Optimierung von Python zu verwenden
Ich habe versucht, Text mit TensorFlow zu klassifizieren
Ich habe versucht, die selektive Suche als R-CNN zu verwenden
Ich habe versucht, die UnityCloudBuild-API von Python zu verwenden