Harvard Square – ზე Pinocchio’s Pizza & Subs ყველაზე პოპულარული პიცერიაა.
სტუდენტები პიცას ყიდულობენ ნაჭრებად მაგრამ Pinocchio მთლიან, სიცილიურ პიცებსაც ყიდის მომდევნო CSV ფორმატში მოცემული მენიუს მიხედვით – გადმოწერე: sicilian.csv
Sicilian Pizza,Small,Large
Cheese,$25.50,$39.95
1 item,$27.50,$41.95
2 items,$29.50,$43.95
3 items,$31.50,$45.95
Special,$33.50,$47.95
ასევე იხილე regular.csv ფაილიც სადაც ჩვეულებრივი პიცების ჩამონათვალიცაა და არა სიცილიურის.
დავალება
საინტერესო იქნებოდა CSV – ფორმატის ფაილის მონაცემებით შეგვექნმა ASCII art – ის მსგავსი ცხრილი რომელიც გაცილებით უკეთ გამოიყურება:
+------------------+---------+---------+
| Sicilian Pizza | Small | Large |
+==================+=========+=========+
| Cheese | $25.50 | $39.95 |
+------------------+---------+---------+
| 1 item | $27.50 | $41.95 |
+------------------+---------+---------+
| 2 items | $29.50 | $43.95 |
+------------------+---------+---------+
| 3 items | $31.50 | $45.95 |
+------------------+---------+---------+
| Special | $33.50 | $47.95 |
+------------------+---------+---------+
ზუსტად ეს იქნება შენი დავალება:
შექმენი პროგრამა სახელად pizza.py რომელსაც გადასცემ მხოლოდ 1 command-line არგუმენტს – csv ფაილის სახელს რომელშიც ინფორმაცია შეტანილი იქნება Pinocchio პიცერიის მსგავსი ფორმატით.
შენმა პროგრამამ შედეგად უნდა გამოიტანოს CSV ფაილიდან ამოღებული ინფორამაცია, ASCII art ცხრილის ფორმატით. ამაში tabulate მოდული დაგეხმარება – https://pypi.org/project/tabulate/
ცხრილის ფორმატირებისთვის გამოიყენე grid ფორმატი რომელსაც tabulate მოდულის აღწერაში იპოვი.
თუ მომხმარებელი არ შეიყვანს ზუსტად 1 command line არგუმენტს, ან მას არ ექნება .csv გაფართოება ან ასეთი ფაილი არ არსებობს, მაშინ შენი პროგრამა უნდა დასრულდეს sys.exit – ით.
მინიშნებები:
- გაიხსენე რომ csv – მოდულს ბევრი სასარგებლო მეთოდი აქვს აქვს, მათ შორის reader – https://docs.python.org/3/library/csv.html#csv.reader და DictReader
- გაითვალისწინე რომ open – ს შეუძლია გამოიწვიოს(raise) შემდეგი ექსეფშენი – FileNotFoundError – დოკუმენტაციის მიხედვით: https://docs.python.org/3/library/exceptions.html#FileNotFoundError
- გაითვალისწინე რომ tabulate მოდულს მხოლოდ 1 ფუნქცია აქვს და მისი დაყენება შეიძლება ამ ბრძანებით:
pip install tabulate
სანამ დაიწყებ
- Terminal – ში გაუშვი ბრძანება
cd
– ამ ბრძანების გაშვებით თავს დაიზღვევ რომ ნამდვილად შენს მთავარ ფოლდერში ხარ. - შემდეგ ისევ Terminal – ში გაუშვი ბრძანება
mkdir pizza
– ამ ბრძანებით შექმნი ახალ ფოლდერს სახელად pizza შენი დავალებისთვის. -
შემდეგ გაუშვი cd pizza - ამ ბრძანებით შეხვალ შენს მიერ შექმნილ pizza ფოლდერში.
- ახლა ამ ფოლდერში შექმენი ფაილი სახელად pizza
.py
– ამ ბრძანების გამოყენებითcode pizza.py
- დაიწყე დავალების შესრულება pizza
.py
ფაილში.
როგორ უნდა გატესტო შენი პროგრამა?
როდესაც ჩათვლი რომ შედეგს მიაღწიე და გინდა დარწმუნდე რომ შენი პროგრამა სწორად მუშაობს, შეგიძლია გატესტო რამდენიმე გზით.
გატესტე ხელით
- გაუშვი პროგრამა ბრძანებით python pizza.py. პროგრამამ უნდა დაასრულოს მუშაობა მაშინვე sys.exit – ით და დაგიწეროს:
Too few command-line arguments
- გადმოწერე regular.csv და sicilian.csv ფაილები და ჩაამატე ისინი შენს pizza.py – სთან ერთად. გაუშვი შენი პროგრამა და გადაეცი პარამეტრად ორივეს დასახელება python pizza.py regular.csv sicilian.csv და შედეგად შენი პროგრამა უნდა დასრულდეს sys.exit – ით და შესაბამისი მესიჯით:
Too many command-line arguments
- გაუშვი შენი პროგრამა ბრძანებით python pizza.py invalid_file.csv – ვგულისხმობთ რომ invalid_file.csv არ არსებობს. შედეგად პროგრამამ უნდა დაასრულოს მუშაობა sys.exit – ით და შესაბამისი მესიჯით:
File does not exist
- შექმენი ფაილი sicilian.txt და გაუშვი შენი პროგრამა ბრძანებით python pizza.py sicilian.txt – შედეგად პროგრამა უნდა დასრულდეს sys.exit – ით და შესაბამისი მესიჯით:
Not a CSV file
- გაუშვი შენი პროგრამა ბრძანებით python pizza.py regular.csv (ვგულისხმობთ რომ regular.csv უკვე გადმოწერე). შედეგად უნდა მიიღო:
+-----------------+---------+---------+ | Regular Pizza | Small | Large | +=================+=========+=========+ | Cheese | $13.50 | $18.95 | +-----------------+---------+---------+ | 1 topping | $14.75 | $20.95 | +-----------------+---------+---------+ | 2 toppings | $15.95 | $22.95 | +-----------------+---------+---------+ | 3 toppings | $16.95 | $24.95 | +-----------------+---------+---------+ | Special | $18.50 | $26.95 | +-----------------+---------+---------+
Demo
ავტომატური გატესტვა – check50
მას შემდეგ რაც ხელით გატესტავ და ჩათვლი რომ შენი პროგრამა სავარაუდოდ სწორად მუშაობს, შეგიძლია ავტომატური ტესტირების სისტემაც გამოიყენო.
ამისათვის Terminal – ში გაუშვი ასეთი ბრძანება check50 cs50/problems/2022/python/pizza
მწვანე სმაილები ნიშნავს რომ შენმა პროგრამამ გაიარა ტესტი.
წითელი მოწყენილი სახეები ნიშნავს რომ შენმა პროგრამამ კონკრეტულ შემთხვევებში არასწორად იმუშავა და იმ შემთხვევების შესაბამისად უნდა გამოასწორო მანამ სანამ მწვანე სმაილს არ მიიღებ.
check50 ასევე დაგიბრუნებს მისამართს რომელსაც შეგიძლია ეწვიო და ნახო ზუსტად რა მნიშვნელობებზე გაიტესტა შენი პროგრამა.
როგორ გავაგზავნოთ ნამუშევარი Harvard – ის სისტემაში?
მას შემდეგ რაც ხელით და ავტომატური გატესტვავ და დარწმუნდები რომ ყველაფერი რიგზეა, submit50 – ბრძანების გამოყენებით შეგიძლია გააგზავნო შენი ნამუშევარი Harvard – ის სისტემაში.
ზუსტი ბრძანება ასე გამოიყურება: submit50 cs50/problems/2022/python
/pizza
სწავლა და ბრძოლა