Sunday, July 12, 2015

თავი 7 (7,9 - 7,11)



7.9 გამართვა

როცა ფაილებს წერ და კითხულობ, შეიძლება შეგექმნას პრობლემა ჰარებთან.  ეს პრობლემა გამართვისთვის შეიძლება გახდეს რთული, იმიტომ რომ ჰარები, ტაბები და ახალი ხაზები როგორც წესი უხილავია:

>>> s = '1 2\t 3\n 4'
>>> print s
1 2      3
 4

ჩაშენებულ ფუნქციას repr დახმარება შეუძლია. ნებისმიერ ობიექტს იღებს არგუმენტად და აბრუნებს ობიექტის სტრინგულ გამოსახულებას. სტრინგებისთვის, იგი წარმოადგენს თეთრადგილიან სიმბოლოებს with backslash  sequences:

>>> print repr(s)
'1 2\t 3\n 4'

გამართვისთვის ეს შეიძლება იყოს სასარგებლო.
კიდევ ერთი პრობლემა, რომელსაც შეიძლება გადააწყდე განსხვავებულ სისტემებზე არის სხვადასხვა სიმბოლოების გამოყენება ხაზის დამთავრების საჩვენებლად. ზოგი სისტემა იყენებს \n - და ზოგი იყენებს \r - ს; ზოგიერთი კი ორივეს. ფაილის ერთიდან მეორე სისტემაზე გადატანისას ამ შეუსაბამობამ  შეიძლება შეგიქმნას  პრობლემა. სისტემების უმეტესობისთვის არის აპლიკაცია ერთი ფორმატიდან მეორეში გადასაყვანად. აპლიკაციები შეგიძლია იპოვნო(და მეტი წაიკითხო ამის შესახებ) wikipedia.org/wiki/Newline. ანდაც შეგიძლია თვითონ დაწერო ასეთი აპლიკაცია.

7.10 ლექსიკონი

catch: პროგრამის გაჩერების თავიდან ასარიდებლად try და except - ის გამოყენება.
newline: ფაილში და სტრინგებში გამოყენებული სპეციალური სიმბოლო, რომელიც აჩვენებს ხაზის დასასრულს.
Pythonic: ტექნიკა, რომელიც პითონში მუშაობს მოხდენილად. არარსებული ფაილების შემთხვევაში, თავის დასაზღვევად  try და except - ის გამოყენება პითონიკური გზა იყო.
Quality Assurance: ადამიანი ან გუნდი ფოკუსირებული პროგრამული პროდუქტის საერთო ხარისხის დაზღვევაზე. ხ.კ. ხშირად ამოწმებს პროდუქტს, რომ აღმოაჩინოს პრობლემა, მანამ სანამ პროდუქტი რეალიზაციაში გავა.
text file: პერმენტულ სათავსოში შენახული სიმბოლოების რიგი - როგორიცაა მყარი დისკი.

7.11 სავარჯიშოები

სავარჯიშო 7.1 დაწერე პროგრამა, რომელიც წაიკითხავს ფაილს და ამობეჭდავს ფაილის შიგთავსს დიდ ასოებად. ამონაბეჭდი ამის მსგავსად უნდა გამოიყურებოდეს:

python shout.py
Enter a file name: mbox-short.txt
FROM STEPHEN.MARQUARD@UCT.AC.ZA SAT JAN 5 09:14:16 2008
RETURN-PATH: <POSTMASTER@COLLAB.SAKAIPROJECT.ORG>
RECEIVED: FROM MURDER (MAIL.UMICH.EDU [141.211.14.90])
BY FRANKENSTEIN.MAIL.UMICH.EDU (CYRUS V2.3.8) WITH LMTPA;
SAT, 05 JAN 2008 09:14:16 -0500

ფაილის გადმოწერა შეგიძლია აქედან www.py4inf.com/code/mbox-short.txt

სავარჯიშო 7.2 დაწერე პროგრამა, რომელიც გკითხავს ფაილის სახელს, წაიკითხავს ფაილს და ნახავს ხაზების ფორმებს:(and then read through the file and look for lines of the form:)

X-DSPAM-Confidence: 0.8475

როცა წააწყდება ხაზს, რომელი იწყება X-DSPAM-Confidence: - ით, დაამუშავოს ხაზი ისე, რომ გამოიტანოს მარტო წილადი. დათვალოს ეს ხაზები და გამოიანგარიშოს წილადების საერთო ჯამი. ფაილის დამთავრებისას ამობეჭდოს X-DSPAM-Confidence: - ის და წილადების საშუალო არითმეტიკული(When you reach
the end of the file, print out the average spam confidence.)

Enter the file name: mbox.txt
Average spam confidence: 0.894128046745

Enter the file name: mbox-short.txt
Average spam confidence: 0.750718518519

შეამოწმე შენი ფაილი mbox.txt და mbox-short.txt -ზე.

სავარჯიშო 7.3 ზოგჯერ როცა პროგრამისტები მოიწყენენ და უნდათ რომ ცოტა გამხიარულდნენ, თავის პროგრამას ამატებენ უვნებელ "Easter Egg -" (en.wikipedia.org/wiki/Easter_egg_(media)). პროგრამის შეცვლა ისე, რომ პროგრამა მომხმარებელს ფაილი სახელს სთხოვს და როცა შეყავს რამე სასაცილო, პროგრამაც ასევე იქცევა. პროგრამა კარგად უნდა მუშაობდეს  ნორმალური შემთხვევებისთვის. აქაა ნიმუში:

python egg.py
Enter the file name: mbox.txt
There were 1797 subject lines in mbox.txt

python egg.py
Enter the file name: missing.tyxt
File cannot be opened: missing.tyxt

python egg.py
Enter the file name: na na boo boo
NA NA BOO BOO TO YOU - You have been punk'd!

Easter Egg - ის პროგრამაში დამატება შენს გასამხიარულებლად არ დაგვიწერია. ეს სავარჯიშოა.