კურსის შიგთავსი
შესავალი და კურსის შესახებ
ინფორმაცია კურსის შესახებ. გამოყენებული ხელსაწყოები. სერტიფიკატები.
0/4
კომენტარები და ფსევდო კოდი
0/2
და თუ დაემთხვევა? | Match
0/1
დავალებები 7
0/1
დავალებები 8
0/1
ფინალური პროექტი
0/1
Python პროგრამირების საფუძვლები

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

დააკვირდი მოცემულ კოდს:

# Say hello

name = input("What's your name? ")
print(f"hello, {name}")

აქ სულ 2 ხაზი კოდი წერია, პირველ ხაზზე კომენტარია რომელიც კოდად არ ითვლება, მეორე ხაზი ცარიელია და მხოლოდ ბოლო 2 ხაზზე წერია კოდი.

კომპლექსურობის ამბავსაც რომ შევეხოთ, შეხედე ამ კოდს:

def is_even(n):
    if n % 2 == 0:
        return True
    else:
        return False

ახლა შეადარე ამ კოდს:

def is_even(n):
    return n % 2 == 0

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

დავალება

ამ ყველაფრის მიუხედავად, ფაილში სახელად lines.py შექმენი პროგრამა რომელიც ელოდება 1 command-line არგუმენტს (sys.argv) რომელიც არის რომელიმე სხვა python ფაილის მისამართი / სახელი. პროგრამა პასუხად უნდა აბრუნებდეს ფაილში ნაპოვნი კოდის ხაზების რაოდენობას. კოდად არ უნდა თვლიდეს კომენტარებს (# – ით დაწყებულ ხაზებს) და ცარიელ ხაზებს.

თუ მომხმარებელი არ შეიყვანს ზუსტად 1 command-line არგუმენტს ან შეყვანილი ფაილის სახელი არ დაბოლოვდება .py გაფართოებით, ან თუ მოცემული ფაილი საერთოდ არ არსებობს – პროგრამამ უნდა დაასრულოს მუშაობა sys.exit – ის გამოყენებით. 

მინიშნებები:

  • გაიხსენე რომ str – ს ბევრი სასარგებლო მეთოდები აქვს, მათ შორის lstrip და startswith – https://docs.python.org/3/library/stdtypes.html#string-methods
  • გაითვალისწინე რომ open – ს შეუძლია გამოიწვიოს(raise) შემდეგი ექსეფშენი – FileNotFoundError – დოკუმენტაციის მიხედვით: https://docs.python.org/3/library/exceptions.html#FileNotFoundError
  • შეგიძლია გატესტო შენი პროგრამა ამ თავის გაკვეთილში გამოყენებული კოდის ფაილების გადმოწერით და შენს ედიტორში ატვირთვით: https://cdn.cs50.net/python/2022/x/lectures/6/src6/ ან უბრალოდ შენს მიერ უკვე შესრულებული დავალებებით.

სანამ დაიწყებ

  1. Terminal – ში გაუშვი ბრძანება cd – ამ ბრძანების გაშვებით თავს დაიზღვევ რომ ნამდვილად შენს მთავარ ფოლდერში ხარ. 
  2. შემდეგ ისევ Terminal – ში გაუშვი ბრძანება mkdir lines – ამ ბრძანებით შექმნი ახალ ფოლდერს სახელად lines შენი დავალებისთვის.
  3. შემდეგ გაუშვი cd lines - ამ ბრძანებით შეხვალ შენს მიერ შექმნილ lines ფოლდერში. 
  4. ახლა ამ ფოლდერში შექმენი ფაილი სახელად lines.py – ამ ბრძანების გამოყენებით code lines.py
  5. დაიწყე დავალების შესრულება lines.py ფაილში.

როგორ უნდა გატესტო შენი პროგრამა?

როდესაც ჩათვლი რომ შედეგს მიაღწიე და გინდა დარწმუნდე რომ შენი პროგრამა სწორად მუშაობს, შეგიძლია გატესტო რამდენიმე გზით. 

გატესტე ხელით
  • გაუშვი პროგრამა ბრძანებით python lines.py. პროგრამამ უნდა დაასრულოს მუშაობა მაშინვე sys.exit – ით და დაგიწეროს:
    Too few command-line arguments
  • შექმენი 2 მარტივი პროგრამა hello.py და goodbye.py. გაუშვი შენი პროგრამა და გადაეცი პარამეტრად ორივეს დასახელება python lines.py hello.py goodbye.py და შედეგად შენი პროგრამა უნდა დასრულდეს sys.exit – ით და შესაბამისი მესიჯით: 
    Too many command-line arguments
  • შექმენი ფაილი სახელად invalid_extension.txt და გაუშვი შენი პროგრამა ბრძანებით python lines.py invalid_extension.txt – შედეგად პროგრამამ უნდა დაასრულოს მუშაობა sys.exit – ით და შესაბამისი მესიჯით:
    Not a Python file
  • გაუშვი შენი პროგრამა ბრძანებით python lines.py non_existent_file.py – არარსებულ ფაილზე, შედეგად პროგრამა უნდა დასრულდეს sys.exit – ით და შესაბამისი მესიჯით:
    File does not exist
  • შექმენი ან გადმოწერე დამატებითი Python ფაილები, სხვადასხვა სირთულისა და სიდიდის კოდით, კომენტარებით, ცარიელი ხაზებით და ყველაფერი იმის კომბინაციით რაც აქამდე გამოგვიყენებია კოდში. შენი შექმნილი თითოეული ფაილი გადაეცი არგუმენტად შენს lines.py პროგრამას და მან პასუხად უნდა დააბრუნოს ფაილში ნაპოვნი კოდის ხაზების რაოდენობა.
Demo

 

ავტომატური გატესტვა – check50

მას შემდეგ რაც ხელით გატესტავ და ჩათვლი რომ შენი პროგრამა სავარაუდოდ სწორად მუშაობს, შეგიძლია ავტომატური ტესტირების სისტემაც გამოიყენო. 

ამისათვის Terminal – ში გაუშვი ასეთი ბრძანება check50 cs50/problems/2022/python/lines

მწვანე სმაილები ნიშნავს რომ შენმა პროგრამამ გაიარა ტესტი. 

წითელი მოწყენილი სახეები ნიშნავს რომ შენმა პროგრამამ კონკრეტულ შემთხვევებში არასწორად იმუშავა და იმ შემთხვევების შესაბამისად უნდა გამოასწორო მანამ სანამ მწვანე სმაილს არ მიიღებ.

check50 ასევე დაგიბრუნებს მისამართს რომელსაც შეგიძლია ეწვიო და ნახო ზუსტად რა მნიშვნელობებზე გაიტესტა შენი პროგრამა.

როგორ გავაგზავნოთ ნამუშევარი Harvard – ის სისტემაში?

მას შემდეგ რაც ხელით და ავტომატური გატესტვავ და დარწმუნდები რომ ყველაფერი რიგზეა, submit50 – ბრძანების გამოყენებით შეგიძლია გააგზავნო შენი ნამუშევარი Harvard – ის სისტემაში.

ზუსტი ბრძანება ასე გამოიყურება: submit50 cs50/problems/2022/python/lines

სწავლა და ბრძოლა