style1
a=1
b=2
print(a)
print(b)
print(c)
Ausführungsergebnis
$ 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)
#Ein E am Anfang zeigt einen Fehler an.
style1.py:5:6: E0602: Undefined variable 'c' (undefined-variable)
-------------------------------------
Your code has been rated at -10.00/10
Addieren Sie den Wert von c, um den Fehler zu beseitigen.
style2.py
a=1
b=2
c=3
print(a)
print(b)
print(c)
Ausführungsergebnis
$ 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
Versuchen Sie, den Variablennamen zu verlängern.
style3.py
def func():
first=1
second=2
third=3
print(first)
print(second)
print(third)
func()
Ausführungsergebnis
$ 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")
#Überprüfen Sie das Ergebnis mit einer Methode, deren Name mit assert beginnt.
if __name__=="__main__":
unittest.main()
Ausführungsergebnis
$ 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"
#^Gibt an, wo die Zeichenfolgen tatsächlich unterschiedlich sind.
- I'M Fresh Out Of Ideas
? ^
+ I'm Fresh Out Of Ideas
? ^
----------------------------------------------------------------------
Ran 3 tests in 0.001s
FAILED (failures=1)
großschreiben () macht nur das erste Wort zu einem Titelfall.
cap.py
#capitalize()Titel()Umschreiben an
def just_do_it(text):
return text.title()
Ausführungsergebnis
$ 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")
#Überprüfen Sie das Ergebnis mit einer Methode, deren Name mit assert beginnt.
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()
Ausführungsergebnis
$ 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 ist ein Paket eines Drittanbieters.
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")
Der gleiche Fehler, den ich beim Testen mit unittestn gefunden habe.
Ausführungsergebnis
$ nosetests test_cap_nose.py
E
======================================================================
ERROR: Failure: IndentationError (unexpected indent (test_cap_nose.py, line 4))
----------------------------------------------------------------------
...(Kürzung)
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)
Ausführungsergebnis
$ 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])
Ausführungsergebnis
$ python capitals.py cities1.csv
Paris,France
Caracas,Venuzuela
Vilnius,Lithunia
Während der Ausführung von citys.csv wird es gestoppt, wenn nur 5 von 15 Zeilen ausgegeben werden.
cities2.csv
$ python capitals.py cities2.csv
Buenos Aires,Argentinam
La Paz,Bolivia
Brasilia,Brazil
Santiago,Chile
Bogota,Colombia
Ausführungsergebnis
$ python -m pdb capitals.py cities2.csv
#Wenn Sie c eingeben, wird es normal beendet oder mit einem Fehler beendet.
(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):
#Geben Sie s ein, um die Zeilen der Reihe nach auszuführen.
(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:
#Ich habe einen Haltepunkt in der 6. Zeile gesetzt.
(Pdb) b 6
Breakpoint 1 at /Users/uemura/practice/bin/capitals.py:6
#Führen Sie das Programm aus, bis es einen Haltepunkt erreicht oder alle Eingabezeilen liest und beendet ist.
(Pdb) c
Buenos Aires,Argentinam
La Paz,Bolivia
Brasilia,Brazil
Santiago,Chile
Bogota,Colombia
> /Users/practice/bin/capitals.py(6)process_cities()
-> return
#Überprüfen Sie, was Sie gelesen haben.
(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 ist die Codezeile, aktuelle Position(->)Haltepunkt(B)Wird gezeigt.
#Da l ohne Option ab dem Ende der vorherigen Anzeige angezeigt wird, geben Sie es als Option an.
(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
Schreiben Sie den Beendigungstest so um, dass nur diejenigen übereinstimmen, die in der gesamten Zeile beendet wurden.
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])
Ausführungsergebnis
$ 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")
#Die Standardprioritätsstufe ist 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
#Die Standardstufe ist basicConfig()Kann mit eingestellt werden.
#Alle Ebenen über DEBUG werden protokolliert.
>>> import logging
>>> logging.basicConfig(level="DEBUG")
>>> logger.debug("Timber")
DEBUG:bunyan:Timber
>>> logging.info("And hill")
INFO:root:And hill
time1.py
#Subtrahieren Sie die Verarbeitungsendzeit von der aktuellen Zeit.
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)
Ausführungsergebnis
$ python time2.py
1.0051441192626953
uemuratntonoAir:bin uemura$ python time2.py
1.0001447200775146
Es ist zweckmäßig, die timeit () - Funktion des timeit-Moduls zu verwenden.
timeit1.py
#time.timeit("code",number,count)Syntax
#Da es innerhalb von timeit ausgeführt wird, ist der Code""Muss in beigefügt sein.
from timeit import timeit
print(timeit("num=5;num*=2", number=1))
Ausführungsergebnis
$ python timeit1.py
1.63200000000141e-06
uemuratntonoAir:bin uemura$ python timeit1.py
1.252999999999671e-06
time2.py
#repeat()Sie können die Anzahl der Ausführungen erhöhen, indem Sie das Wiederholungsargument der Funktion verwenden.
from timeit import repeat
print(repeat("num=5;num*=2", number=1,repeat=3))
Ausführungsergebnis
$ python timeit2.py
[8.809999999977169e-07, 2.57000000000035e-07, 1.659999999993611e-07]
Was ist schneller, Listeneinschlussnotation oder for-Schleife?
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")
Die Notation der Listeneinbeziehung ist schneller.
Ausführungsergebnis
$ python time_lists.py
make1 takes 0.07954489899999999 seconds
make2 takes 0.035908797000000006 seconds
#Verschieben Sie nach dem Erstellen eines neuen Verzeichnisses.
$ mkdir newdir
$ cd newdir
#Erstellen Sie ein lokales Git-Repository in newdir im aktuellen Verzeichnis.
$ git init
Initialized empty Git repository in /Users/practice/bin/newdir/.git/
#Fügen Sie dem Git-Repository Dateien hinzu.
$ git add test.py
#Überprüfen Sie den Status von 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 mit der Commit-Nachricht.
$ git commit -m "my first commit"
[master (root-commit) e03cd1c] my first commit
1 file changed, 1 insertion(+)
create mode 100644 test.py
#Änderungen wurden festgeschrieben.
$ git status
On branch master
nothing to commit, working tree clean
Es war die erste Runde, aber ich konnte das Rennen in ungefähr einem Monat beenden. Da die Ausgabe jedoch nicht produziert wurde, werde ich mich auf die Ausgabe für den nächsten Monat konzentrieren.
"Einführung in Python3 von Bill Lubanovic (veröffentlicht von O'Reilly Japan)"
Recommended Posts