एक पंक्ति में अधिकतम पीईपी 8 उल्लंघन


17

आपका कार्य एक फ़ाइल लिखना है जिसमें कई pep8 उल्लंघन के साथ एक पंक्ति है ।

नियम:

  • हम pep8 संस्करण 1.5.7 और डिफ़ॉल्ट सेटिंग्स का उपयोग करते हैं।
  • अन्य कमांड लाइन विकल्पों के साथ pep8 को कॉल करना या कस्टम आरसी फ़ाइल का उपयोग करने की अनुमति नहीं है।
  • अधिकतम पंक्ति लंबाई 120 वर्ण। आप निश्चित रूप से E501 का उल्लंघन कर सकते हैं, लेकिन आपके स्कोर की गणना जिस लाइन पर की जानी है, वह <= 120 वर्ण की होनी चाहिए।
  • आपके मॉड्यूल में पहले या बाद में अन्य लाइनें हो सकती हैं, लेकिन आपके स्कोर में केवल एक पंक्ति का योगदान होता है।
  • आपकी फ़ाइल में SyntaxErrors या किसी भी प्रकार का कचरा हो सकता है, इसे आयात या चलाने की आवश्यकता नहीं है।

स्कोरिंग का उदाहरण:

निम्न मॉड्यूल thing.pyमें 2 का स्कोर है, क्योंकि इसमें 2 pep8 उल्लंघन के साथ एक पंक्ति (पंक्ति 1) है।

 spam='potato'

एक अंक की जांच करने के लिए:

~$ mktmpenv 
(tmp-ae3045bd2f629a8c)~/.virtualenvs/tmp-ae3045bd2f629a8c$ pip install pep8==1.5.7
(tmp-ae3045bd2f629a8c)~/.virtualenvs/tmp-ae3045bd2f629a8c$ echo -n "spam='potato'" > thing.py
(tmp-ae3045bd2f629a8c)~/.virtualenvs/tmp-ae3045bd2f629a8c$ pep8 thing.py 
thing.py:1:5: E225 missing whitespace around operator
thing.py:1:14: W292 no newline at end of file

2
क्या यह ... भाषा-विशिष्ट चुनौती है? क्योंकि हम वास्तव में ये पसंद नहीं करते हैं।
जॉन ड्वोरक

मुझे लगता है कि यह वास्तव में भाषा विशिष्ट नहीं है (क्योंकि फ़ाइल में कोई भी कचरा हो सकता है), लेकिन जाहिर है कि अजगर कोडिंग से परिचित लोगों को कुछ फायदा होगा
wim

जवाबों:


11

241

यदि आप सबसे अधिक त्रुटि चाहते हैं, तो अर्धविराम के साथ पागल हो जाएं

$ cat test.py
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

$ cat test.py | wc -m
120

$ pep8 test.py | wc -l
241

अधिकांश त्रुटि हैं:

test.py:1:119: E231 missing whitespace after ';'
test.py:1:119: E702 multiple statements on one line (semicolon)

अंत में उन त्रुटि के साथ:

test.py:1:120: E703 statement ends with a semicolon
test.py:1:121: W292 no newline at end of file

@wim आपके पोस्ट का जवाब नहीं दे सका, इसलिए मैंने इसे यहां डाल दिया। आप लाभ के बारे में सही थे, मुझे आश्चर्य होता है कि अगर कोई व्यक्ति किसी और चीज का पता
लगाता है

मुझे लगता है कि आप अर्धविराम कम हैं। wc अनुगामी न्यूलाइन को गिनता है, लेकिन हम इस साइट पर वर्ण गणना के लिए नहीं गिनते हैं। जैसा कि आप अपने कोड उद्धरण में देख सकते हैं, आपका अंतिम वर्ण # 119 है। आपको पिछले अर्ध को छोड़कर प्रत्येक अर्धविराम के लिए 240, 2 प्राप्त करना चाहिए, 1 अधिक लम्बी पंक्ति के लिए, और 1 अर्धविराम के साथ समाप्त होने के लिए।
isaacg

@ आइसाकग आह, आप सही कह रहे हैं, मुझे लगा कि यह अजीब था कि इसमें चरित्र की संख्या * 2 की तुलना में कम त्रुटि हुई, मैं अदृश्य न्यूलाइन को जोड़ने के लिए
गेडिट को दोष देता हूं

haha, सस्ते की तरह .. लेकिन प्रभावी! +1
विम

7

123

हाँ, पात्रों की तुलना में अधिक उल्लंघन!

$ curl -s http://pastebin.com/raw.php?i=RwLJfa0Q | cat
 (  =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =
$ curl -s http://pastebin.com/raw.php?i=RwLJfa0Q | wc -m
 120
$ curl -s http://pastebin.com/raw.php?i=RwLJfa0Q | pep8 - | wc -l
 123

चाल यह है कि एक के =बाद एक (pep लगता है कि आप एक फ़ंक्शन कॉल (जैसे foo(bar=12)) में एक कीवर्ड कर रहे हैं । इस संदर्भ में, [TAB]=दोनों को ट्रिगर करता है

killpep.py:1:3: E223 tab before operator
killpep.py:1:3: E251 unexpected spaces around keyword / parameter equals

और =[TAB]दोनों को ट्रिगर करता है

killpep.py:1:5: E224 tab after operator
killpep.py:1:5: E251 unexpected spaces around keyword / parameter equals

उल्लासपूर्वक पर्याप्त, आप सिर्फ इन श्रृंखला कर सकते हैं।

इससे प्रति वर्ण एक उल्लंघन संख्या मिलती है। मुझे (इसे सेट करने की आवश्यकता है, लेकिन )हमें प्रदान नहीं करता है:

killpep.py:2:1: E901 TokenError: EOF in multi-line statement

यह 120 है। कोई नई पंक्ति = 121 नहीं। यह "लाइन बहुत लंबी" त्रुटि को ट्रिगर करने में कामयाब रहा, इसलिए यह 122 है। अंत में, एक वर्ण को अंतरिक्ष के साथ शुरू करने के लिए उपयोग करना (धन्यवाद eric_lagergren ) 1 के बजाय 2 उल्लंघन देता है:

killpep.py:1:2: E111 indentation is not a multiple of four
killpep.py:1:2: E113 unexpected indentation

विजय!


एक प्रमुख व्हाट्सएप जोड़ें और आखिरी निकालें zऔर आप 103 के साथ समाप्त हो जाएंगे ... लेकिन जब भी मैं इस कोड को कॉपी करता हूं मुझे 102 के बजाय 83 मिलता है। मुझे लगता है कि रिक्ति गड़बड़ हो रही है।
एरिक लेगरग्रेन ने

@eric_lagergren: मैं रिक्त स्थान के बजाय टैब का उपयोग कर रहा हूं और मुझे लगता है कि वे ठीक से नकल नहीं कर रहे हैं। यह मुझे लगता है कि pastebin होगा!
क्लॉडिउ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.