style1
a=1
b=2
print(a)
print(b)
print(c)
Résultat d'exécution
$ pylint style1.py
************* Module style1
style1.py:1:1: C0326: Exactly one space required around assignment
a=1
^ (bad-whitespace)
style1.py:2:1: C0326: Exactly one space required around assignment
b=2
^ (bad-whitespace)
style1.py:1:0: C0114: Missing module docstring (missing-module-docstring)
style1.py:1:0: C0103: Constant name "a" doesn't conform to UPPER_CASE naming style (invalid-name)
style1.py:2:0: C0103: Constant name "b" doesn't conform to UPPER_CASE naming style (invalid-name)
#Un E au début indique une erreur.
style1.py:5:6: E0602: Undefined variable 'c' (undefined-variable)
-------------------------------------
Your code has been rated at -10.00/10
Ajoutez la valeur de c pour éliminer l'erreur.
style2.py
a=1
b=2
c=3
print(a)
print(b)
print(c)
Résultat d'exécution
$ pylint style2.py
************* Module style2
style2.py:1:1: C0326: Exactly one space required around assignment
a=1
^ (bad-whitespace)
style2.py:2:1: C0326: Exactly one space required around assignment
b=2
^ (bad-whitespace)
style2.py:3:1: C0326: Exactly one space required around assignment
c=3
^ (bad-whitespace)
style2.py:1:0: C0114: Missing module docstring (missing-module-docstring)
style2.py:1:0: C0103: Constant name "a" doesn't conform to UPPER_CASE naming style (invalid-name)
style2.py:2:0: C0103: Constant name "b" doesn't conform to UPPER_CASE naming style (invalid-name)
style2.py:3:0: C0103: Constant name "c" doesn't conform to UPPER_CASE naming style (invalid-name)
------------------------------------
Your code has been rated at -1.67/10
Essayez d'allonger le nom de la variable.
style3.py
def func():
first=1
second=2
third=3
print(first)
print(second)
print(third)
func()
Résultat d'exécution
$ pylist style3.py
-bash: pylist: command not found
uemuratntonoAir:bin uemura$ pylint style3.py
************* Module style3
style3.py:3:9: C0326: Exactly one space required around assignment
first=1
^ (bad-whitespace)
style3.py:4:10: C0326: Exactly one space required around assignment
second=2
^ (bad-whitespace)
style3.py:5:9: C0326: Exactly one space required around assignment
third=3
^ (bad-whitespace)
style3.py:1:0: C0114: Missing module docstring (missing-module-docstring)
style3.py:1:0: C0116: Missing function or method docstring (missing-function-docstring)
-----------------------------------
Your code has been rated at 3.75/10
cap.py
def just_do_it(text):
return text.capitalize()
test_cap.py
import unittest
import cap
class TestCap(unittest.TestCase):
def setUp(self):
pass
def tearDown(self):
pass
def test_one_word(self):
text="duck"
result=cap.just_do_it(text)
self.assertEqual(result, "Duck")
def test_multiple_words(self):
text="a veritable flock of ducks"
result=cap.just_do_it(text)
self.assertEqual(result, "A Veritable Flock Of Ducks")
#Vérifiez le résultat avec une méthode dont le nom commence par assert.
if __name__=="__main__":
unittest.main()
Résultat d'exécution
$ python test_cap.py
..
----------------------------------------------------------------------
Ran 2 tests in 0.000s
OK
$ python test_cap.py
..
----------------------------------------------------------------------
Ran 2 tests in 0.000s
OK
$ python test_cap.py
..F
======================================================================
FAIL: test_words_with_apostrophes (__main__.TestCap)
----------------------------------------------------------------------
Traceback (most recent call last):
File "test_cap.py", line 25, in test_words_with_apostrophes
self.assertEqual(result, "I'm Fresh Out Of Ideas")
AssertionError: "I'M Fresh Out Of Ideas" != "I'm Fresh Out Of Ideas"
#^Indique où les chaînes de caractères sont réellement différentes.
- I'M Fresh Out Of Ideas
? ^
+ I'm Fresh Out Of Ideas
? ^
----------------------------------------------------------------------
Ran 3 tests in 0.001s
FAILED (failures=1)
capitalize () fait uniquement du premier mot une casse de titre.
cap.py
#capitalize()Titre()Réécrire dans
def just_do_it(text):
return text.title()
Résultat d'exécution
$ python test_cap.py
...
----------------------------------------------------------------------
Ran 3 tests in 0.000s
OK
test_cap.py
import unittest
import cap
class TestCap(unittest.TestCase):
def setUp(self):
pass
def tearDown(self):
pass
def test_one_word(self):
text="duck"
result=cap.just_do_it(text)
self.assertEqual(result, "Duck")
def test_multiple_words(self):
text="a veritable flock of ducks"
result=cap.just_do_it(text)
self.assertEqual(result, "A Veritable Flock Of Ducks")
#Vérifiez le résultat avec une méthode dont le nom commence par assert.
def test_words_with_apostrophes(self):
text="I'm fresh out of ideas"
result=cap.just_do_it(text)
self.assertEqual(result, "I'm Fresh Out Of Ideas")
def test_words_with_quotes(self):
text="\"You're despicable,\" said Daffy Duck"
result=cap.just_do_it(text)
self.assertEqual(result, "\"You're Despicable,\" Said Daffy Duck")
if __name__=="__main__":
unittest.main()
Résultat d'exécution
$ python test_cap.py
...F
======================================================================
FAIL: test_words_with_quotes (__main__.TestCap)
----------------------------------------------------------------------
Traceback (most recent call last):
File "test_cap.py", line 30, in test_words_with_quotes
self.assertEqual(result, "\"You're Despicable,\" Said Daffy Duck")
AssertionError: '"you\'re Despicable," Said Daffy Duck' != '"You\'re Despicable," Said Daffy Duck'
- "you're Despicable," Said Daffy Duck
? ^
+ "You're Despicable," Said Daffy Duck
? ^
----------------------------------------------------------------------
Ran 4 tests in 0.002s
FAILED (failures=1)
--nose est un package tiers.
test_cap_nose.py
import cap
from nose.tools import eq_
def test_one_word(self):
text="duck"
result=cap.just_do_it(text)
eq_(result, "Duck")
def test_multiple_words(self):
text="a veritable flock of ducks"
result=cap.just_do_it(text)
eq_(result, "A Veritable Flock Of Ducks")
def test_words_with_apostrophes(self):
text="I'm fresh out of ideas"
result=cap.just_do_it(text)
eq_(result, "I'm Fresh Out Of Ideas")
def test_words_with_quotes(self):
text="\"You're despicable,\" said Daffy Duck"
result=cap.just_do_it(text)
eq_(result, "\"You're Despicable,\" Said Daffy Duck")
Le même bug que j'ai trouvé lors des tests avec unittestn.
Résultat d'exécution
$ nosetests test_cap_nose.py
E
======================================================================
ERROR: Failure: IndentationError (unexpected indent (test_cap_nose.py, line 4))
----------------------------------------------------------------------
...(réduction)
def test_one_word(self):
^
IndentationError: unexpected indent
----------------------------------------------------------------------
Ran 1 test in 0.001s
FAILED (errors=1)
test_dump.py
from dump1 import dump
@dump
def double(*args, **kwargs):
"Double every argument"
output_list=[2*x for x in args]
output_dict={k:2*v for k,v in kwargs.items()}
return output_list, output_dict
if __name__=="__main__":
output=double(3, 5, first=100,next=98.6, last=-40)
Résultat d'exécution
$ python test_dump.py
Function name: double
Input arguments: 3 5
Input keyword arguments: dict_items([('first', 100), ('next', 98.6), ('last', -40)])
Output: ([6, 10], {'first': 200, 'next': 197.2, 'last': -80})
capitals.py
def process_cities(filename):
with open(filename, "rt") as file:
for line in file:
line=line.strip()
if "quit" in line.lower():
return
country, city=line.split(",")
city=city.strip()
country=country.strip()
print(city.title(),country.title(), sep=",")
if __name__=="__main__":
import sys
process_cities(sys.argv[1])
Résultat d'exécution
$ python capitals.py cities1.csv
Paris,France
Caracas,Venuzuela
Vilnius,Lithunia
Lors de l'exécution de cities2.csv, il s'arrête lorsque seulement 5 lignes sur 15 sont produites.
cities2.csv
$ python capitals.py cities2.csv
Buenos Aires,Argentinam
La Paz,Bolivia
Brasilia,Brazil
Santiago,Chile
Bogota,Colombia
Résultat d'exécution
$ python -m pdb capitals.py cities2.csv
#Si vous entrez c, il se termine normalement ou s'arrête avec une erreur.
(Pdb) c
Buenos Aires,Argentinam
La Paz,Bolivia
Brasilia,Brazil
Santiago,Chile
Bogota,Colombia
The program finished and will be restarted
> /Users/practice/bin/capitals.py(1)<module>()
-> def process_cities(filename):
#Entrez s pour exécuter les lignes dans l'ordre.
(Pdb) s
> /Users/practice/bin/capitals.py(13)<module>()
-> import sys
(Pdb) s
> /Users/practice/bin/capitals.py(14)<module>()
-> process_cities(sys.argv[1])
(Pdb) s
--Call--
> /Users/practice/bin/capitals.py(1)process_cities()
-> def process_cities(filename):
(Pdb) s
> /Users/practice/bin/capitals.py(2)process_cities()
-> with open(filename, "rt") as file:
#J'ai mis un point d'arrêt sur la 6ème ligne.
(Pdb) b 6
Breakpoint 1 at /Users/uemura/practice/bin/capitals.py:6
#Exécutez le programme jusqu'à ce qu'il atteigne un point d'arrêt ou lit toutes les lignes d'entrée et se termine.
(Pdb) c
Buenos Aires,Argentinam
La Paz,Bolivia
Brasilia,Brazil
Santiago,Chile
Bogota,Colombia
> /Users/practice/bin/capitals.py(6)process_cities()
-> return
#Vérifiez ce que vous lisez.
(Pdb) p line
'ecuador,quito'
(Pdb) b
Num Type Disp Enb Where
1 breakpoint keep yes at /Users/uemura/practice/bin/capitals.py:6
breakpoint already hit 1 time
#1 est la ligne de code, position actuelle(->), point d'arrêt(B)Est montré.
#Puisque l sans option commence à s'afficher à partir de la fin de l'affichage précédent, spécifiez-le comme option.
(Pdb) l 1
1 def process_cities(filename):
2 with open(filename, "rt") as file:
3 for line in file:
4 line=line.strip()
5 if "quit" in line.lower():
6 B-> return
7 country, city=line.split(",")
8 city=city.strip()
9 country=country.strip()
10 print(city.title(),country.title(), sep=",")
11
Réécrivez le test d'arrêt pour qu'il corresponde uniquement à ceux qui ont été abandonnés sur toute la ligne.
capitals2.py
def process_cities(filename):
with open(filename, "rt") as file:
for line in file:
line=line.strip()
if "quit" ==line.lower():
return
country, city=line.split(",")
city=city.strip()
country=country.strip()
print(city.title(),country.title(), sep=",")
if __name__=="__main__":
import sys
process_cities(sys.argv[1])
Résultat d'exécution
$ python capitals2.py cities2.csv
Buenos Aires,Argentinam
La Paz,Bolivia
Brasilia,Brazil
Santiago,Chile
Bogota,Colombia
Quito,Ecuador
Stanley,Falkland Islands
Cayenne,French Guiana
Asuncion,Paraguay
Lima,Peru
Paramaribo,Suriname
Montevideo,Uruguay
Caracas,Venezuela
>>> import logging
>>> logging.debug("Looks like rain")
>>> logging.info("And hill")
#Le niveau de priorité par défaut est WARNIG.
>>> logging.warn("Did I hear thunder?")
__main__:1: DeprecationWarning: The 'warn' function is deprecated, use 'warning' instead
WARNING:root:Did I hear thunder?
>>> logging.critical("Stop fencing and get inside")
CRITICAL:root:Stop fencing and get inside
#Le niveau par défaut est basicConfig()Peut être défini avec.
#Tous les niveaux supérieurs à DEBUG sont enregistrés.
>>> import logging
>>> logging.basicConfig(level="DEBUG")
>>> logger.debug("Timber")
DEBUG:bunyan:Timber
>>> logging.info("And hill")
INFO:root:And hill
time1.py
#Soustrayez l'heure de fin du traitement de l'heure actuelle.
from time import time
t1=time()
num=5
num*=2
print(time()-t1)
$ python time1.py
3.0994415283203125e-06
$ python time1.py
1.9073486328125e-06
$ python time1.py
1.6689300537109375e-06
time2.py
from time import time, sleep
t1=time()
sleep(1.0)
print(time()-t1)
Résultat d'exécution
$ python time2.py
1.0051441192626953
uemuratntonoAir:bin uemura$ python time2.py
1.0001447200775146
Il est pratique d'utiliser la fonction timeit () du module timeit.
timeit1.py
#time.timeit("code",number,count)Syntaxe
#Puisqu'il est exécuté dans timeit, le code est""Doit être inclus dans.
from timeit import timeit
print(timeit("num=5;num*=2", number=1))
Résultat d'exécution
$ python timeit1.py
1.63200000000141e-06
uemuratntonoAir:bin uemura$ python timeit1.py
1.252999999999671e-06
time2.py
#repeat()Vous pouvez augmenter le nombre d'exécutions en utilisant l'argument de répétition de la fonction.
from timeit import repeat
print(repeat("num=5;num*=2", number=1,repeat=3))
Résultat d'exécution
$ python timeit2.py
[8.809999999977169e-07, 2.57000000000035e-07, 1.659999999993611e-07]
Quel est le plus rapide, la notation d'inclusion de liste ou la boucle for?
time_lists.py
from timeit import timeit
def make1():
result=[]
for value in range(1000):
result.append(value)
return result
def make2():
result=[value for value in range(1000)]
return result
print("make1 takes", timeit(make1, number=1000), "seconds")
print("make2 takes", timeit(make2, number=1000), "seconds")
La notation d'inclusion de liste est plus rapide.
Résultat d'exécution
$ python time_lists.py
make1 takes 0.07954489899999999 seconds
make2 takes 0.035908797000000006 seconds
#Déplacer après avoir créé un nouveau répertoire.
$ mkdir newdir
$ cd newdir
#Créez un référentiel Git local dans newdir dans le répertoire actuel.
$ git init
Initialized empty Git repository in /Users/practice/bin/newdir/.git/
#Ajoutez des fichiers au référentiel Git.
$ git add test.py
#Vérifiez l'état de Git.
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: test.py
#-m "my first commit"Commit avec le message de commit.
$ git commit -m "my first commit"
[master (root-commit) e03cd1c] my first commit
1 file changed, 1 insertion(+)
create mode 100644 test.py
#Des changements ont été validés.
$ git status
On branch master
nothing to commit, working tree clean
C'était le premier tour, mais j'ai pu terminer la course en un mois environ. Cependant, comme la sortie n'a pas été produite, je me concentrerai sur la sortie pour le mois prochain.
"Introduction à Python3 par Bill Lubanovic (publié par O'Reilly Japon)"
Recommended Posts