Printable Version of Topic
Click here to view this topic in its original format
თბილისის ფორუმი > Hello World > Python-ის სწავლა 0-დან


Posted by: Lilith 25 Oct 2017, 02:35
პროექტის შინაარსი:
CODE
დღის განმავლობაში როგორც წესი მაქვს რამოდენიმე საათი თავისუფალი დრო, რომელსაც ხშირად ვატარებ ფორუმზე. მსურს ეს დრო გამოვიყენო სხვების სასიკეთოდ და მაქსიმალურად დაგეხმაროთ პითონის, და ზოგადად პროგრამირების საფუძვლების ათვისებაში.
ჩემი აზრით პითონი არის ერთ-ერთი საუკეთესო ენა დამწყებთათვის. ძირითადი მასალა იქნება პრაქტიკული სახის მაგალითები, აღებული სხვადასხვა სახის სახელმძღვანელოებიდან ან/და ონლაინ რესურსებიდან. ამოცანები ძირითადად იქნება მათემატიკური სახის პრობლემები/მაგალითები. თუკი იქნება დაინტერესება და პროგრესი, გადავალთ ვებზე, ინტერნეტიდან სხვადასხვა სახის მონაცემების წამოღება დამუშავებაზე. ვისწავლით მონაცემთა ბაზებთან მუშაობას.


ვის შეუძლია მონაწილეობის მიღება:
CODE
თემა ძირითადად განკუთვნილია დამწყებებზე, ვისაც არათუ პითონთან, არამედ ზოგადად პროგრამირებასთან მინიმალური, ან საერთოდ არანაირი შეხება და გამოცდილება არ გააჩნია. თუმცა ნებისმიერ სხვას (ვისაც მაგალითად აქვს სხვა ტექნოლოგიებში შედარებით დიდი გამოცდილება და სურს პითონის სწავლა) შეუძლია ჩაერთოს დისკუსიაში და სწავლის პროცესში. ზოგადი მიდგომა არის - ხელს ნუ შეუშლი სხვას და ცოდნას, პროფესიას, ასაკს და სქესს არანაირი მნიშვნელობა არ აქვს!
კიდევ ერთი მნიშვნელოვანი ნიუანსი, პროგრამირებას ვისწავლით old school-ის სტილში, აპრობირებული მეთოდებით. შესაბამისად როგორც ზევით დავწერე - გვექნება ძირითადად მათემატიკური პრობლემებისა და მაგალითების ამოხსნაზე ორიენტირებული კურსი. ამიტომ თუკი თქვენი ინტერესი არის ვებზე საკაიფო საიტების აწყობა, აქ ამას ვერ ისწავლით. ვერც ჰაკერობას ვერ გასწავლით.


სასწავლო პროცესი:
CODE
პერიოდულად დავდებ კონკრეტულ პრობლემას/მაგალითს/ამოცანას, თავისი ამოხსნით, კოდით, კოდის დეტალური გარჩევით. დავდებ მსგავსი დონის პრობლემას/მაგალითს/ამოცანას, რომელიც უკვე თქვენ თქვენით უნდა "ამოხსნათ". გავარჩევთ თუ როგორ შეიძლება ერთიდაიგივე ამოცანის სხვადასხვა გზით გადაჭრა. კითხვები რაც მეტი იქნება, მით უკეთესი. თხოვნაა არავითარი კითხვები PM-ში, ყველაფერს ვკითხულობთ და ვარჩევთ აქ, ამ თემაში.


რა დაგვჭირდება:
CODE
პითონი - https://www.python.org/downloads/
პროგრამირების გარემო (IDE) - https://www.jetbrains.com/pycharm/download (Community ვერსია, უფასო)


მოკლედ დავიწყებ და რა გამოვა დრო გვაჩვენებს!

პირველი ნაბიჯი რა იქნება Hello World!-ის გარეშე:
ვუშვებთ PyCharm-ს, ვქმნით ახალ პროექტს, პირობითად ვარქმევთ Forum.Ge-ს (ან სურვილისამებრ ნებისმიერ სხვა სახელს).

ახლად შექმნილ პროექტში ვქმნით ახალ ფაილს - ამისათვის მარცხენა მხარეს პანელში ვირჩევთ ჩვენს პროექტს - მარჯვენა წკაპი->New->Python File. ისევ პირობითად დავარქვათ HelloWorld.py

შემდეგ ვწერთ შემდეგ სტრიქონს:
CODE
print('Hello World!')

ვინახავთ, შემდეგ ისევ მარჯვენა წკაპი, ოღონდ ამჯერად ჩვენს ახალდამატებულ ფაილზე და Run 'HelloWorld'.

ქვედა ნაწილში გამოჩნდება პანელი, სადაც დავინახავთ თუ რა მოხდა ჩვენი პირველი პროგრამის შედეგად:
CODE
C:\Python35\python.### C:/Projects/LearnPython/Forum.ge/HelloWorld.py
Hello World!

Process finished with exit code 0

სიმარტივისათვის ამ პანელს მომავალში 'კონსოლი'-თ მოვიხსენიებთ (console). კონსოლში ვხედავთ ჩვენი პროგრამის ე.წ. output-ს.

print() ფუნქცია საშუალებას გვაძლევს გამოვიტანოთ კონსოლში ჩვენთვის სასურველი ტექსტი, და არა მარტო ტექსტი, როდესაც ვისწავლით ცვლადებთან და მეთოდებთან მუშაობას ეს ბრძანება გახდება ჩვენი უახლოესი მეგობარი smile.gif


ამოცანა #1: კვადრატული განტოლების ამოხსნა. გვაქვს ax^2 + bx + x = 0 ტიპის კვადრატული განტოლება. დისკრიმინანტი d = b^2 - 4ac. თუ დისკრიმინანტი უარყოფითია - ამოხსნა არ გვაქ, თუ 0-ის ტოლია - გვაქვს ერთი ამონახსნი, თუ დადებითია - გვაქვს ორი ამონახსნი.

პროგრამა გამოიყურება შემდეგნაირად:
CODE
print('გთხოვთ შეიყვანოთ a, b და c კოეფიციენტები:')

a = int(input('a = '))
b = int(input('b = '))
c = int(input('c = '))

d = b**2-4*a*c

if d < 0:
   print('ამ განტოლებას არ აქვს ნამდვილი ამონახსნი!')
elif d == 0:
   x = (-b+d**(1/2.0)) / (2*a)
   print('ამ განტოლებას აქვს ერთი ნამდვილი ამონახსნი: ', x)
else:
   x1 = (-b-d**(1/2.0)) / (2*a)
   x2 = (-b+d**(1/2.0)) / (2*a)
   print('ამ განტოლებას აქვს ორი ნამდვილი ამონახსნი:')
   print('x1 = ', x1)
   print('x2 = ', x2)


input() - ამ ფუნქციის საშუალებით ხდება მომხმარებლის მიერ გარკვეული მნიშვნელობის შეტანა ჩვენს პროგრამაში. ჩვენს შემთხვევაში ჩვენ გვჭირდება მომხმარებელმა მოგვაწოდოს a, b და c კოეფიციენტების მნიშვნელობები. ნებისმიერი მნიშვნელობა შეტანილი მომხმარებლის მიერ, წარმოდგენილი იქნება ტექსტურ ფორმატში.

int() - ეს ფუნქცია საშუალებას გვაძლევს ჩავატაროთ მათემატიკური ოპერაციები მომხმარებლის მიერ შემოტანილ მნიშვნელობებზე. input()-ის საშუალებით შემოტანილი ნებისმიერი მნიშვნელობა ინახება ტექსტურ ფორმატში და ჩვენ არ გვექნება საშუალება შევასრულოთ გარკვეული ტიპის ოპერაციები მათზე, მანამ, სანამ არ დავიყვანთ მათ რიცხობრივ ტოლფას მნიშვნელობამდე.

a, b, c, d, x, x1 და x2 არის ჩვენი ე.წ. ცვლადები, კონტეინერები სხვადასხვა მნიშვნელობების შესანახად. a, b და c ვიყენებთ მომხმარებლის მიერ შემოტანილი მნიშვნელობების შესანახად. d-ში ვიყენებთ დისკრიმინანტის გამოთვლისას მიღებულ მნიშვნელობას. x, x1 და x2 გვჭირდება ამონახსნების მნიშვნელობების შესანახად.

გავარჩიოთ დისკრიმინანტის დათვლის კოდი:
CODE
d = b**2-4*a*c

4*a*c - აქ ყველაფერი მარტივია, '*' (ვარსკვლავი) გამოიყენება ორი მნიშვნელობის გადასამრავლებლად. ანუ ეს ნაწილი შედეგად მოქვცემს a-ს მნიშვნელობის ნამრავლს c-ს მნიშვნელობაზე, გამრავლებულს 4-ზე.

b**2 - '**' (ორმაგი ვარსკვლავი) გამოიყენება მნიშვნელობის ხარისხში აყვანისთვის. b**2 მოგვცემს b-ს მნიშვნელობის კვადრატს.

if მიეკუთვნება ე.წ. საკვანძო სიტყვების ჯგუფს (keyword) რომელიც საშუალებას გვაძლევს კოდის ნაწილი შესრულდეს მხოლოდ გარკვეული პირობის დაკმაყოფილების შემთხვევაში. სტრიქონის ბოლოში ':' არის პითონის დამახასიათებელი სინტაქსი. საქმე იმაშია, რომ პროგრამირებისას გვჭირდება კოდის ნაწილის რაღაცა მიზნით დაჯგუფება. სხვადასხვა ენაში ეს სხვადასხვანაირად არის რეალიზებული. მაგალითად C-ს "ოჯახის" ენებში ამისათვის გამოიყენება ფიგურული ფრჩხილები '{' და '}'. ზოგ ენაში გვხვდება 'begin' და 'end'. პითონში კი ამისათვის გამოიყენება ე.წ. 'ცარიელი სივრცე' (whitespace). ანუ მარცხენა კიდიდან ერთნაირად დაშორებული კოდის ორი სტრიქონი ითვლება რომ მიეკუთვნება ერთ ბლოკს. ჩვენს შემთხვევაში ეს ორი სტრიქონი:
CODE
if d < 0:
   print('ამ განტოლებას არ აქვს ნამდვილი ამონახსნი!')

სხვადასხვა მანძილითაა დაშორებული მარცხენა კიდეს. შესაბამისად მეორე სტრიქონი ეკუთვნის სხვა ბლოკს. d < 0 არის გამოსახულება, ოპერაცია, ისეთივე როგორიცაა იგივე გამრავლება, ან მიმატება. უბრალოდ ის სრულდება ნებისმიერ ორ ობიექტზე, შეგვიძლია ორი სტრიქონი შევადაროთ ერთმანეთს, ან ორი თარიღი. შესადარებლად შეგვიძლია გამოვიყენოთ მარტივი '<' ან '>' ოპერაციები. ტოლობის დასადგენად ვიყენებთ ორმაგ ტოლობას '==', ხოლო მეტია-ან-ტოლი და ნაკლებია-ან-ტოლი აღინიშნება '>=' და '<=' მიმდევრობით. ასევე გვაქვს არ-უდრის ოპერაცია '!='.

შედარების ოპერაციის შედეგი არის ე.წ. bool ტიპის და შეიძლება იყოს ან True (ჭეშმარიტება) ან False (სიცრუე). if-ის ე.წ. შვილობილ ბლოკში მოთავსებული კოდი შესრულდება მხოლოდ და მხოლოდ იმ შემთხვევაში, თუკი if-ში მითითებული პირობის შედეგი არის True.

ჩვენს შემთხვევაში თუკი d (დეტერმინანტის მნიშვნელობა) არის ნაკლები 0-ზე, მხოლოდ ამ შემთხვევაში პროგრამა კონსოლში დაბეჭდავს სტრიქონს 'ამ განტოლებას არ აქვს ნამდვილი ამონახსნი!'.

ასევე შეგვიძლია განვსაზღვროთ კოდი, რომელიც შესრულდება მხოლოდ და მხოლოდ იმ შემთხვევაში თუკი if-ში მითითებული პირობის შედეგი არის False (ანუ მარტივად რომ ვთქვათ თუკი პირობა არ სრულდება). ეს არის ჩვენი პროგრამის ბოლო, ყველაზე დიდი ბლოკი, რომელსაც სათავეში უდგას else: საკვანძო სიტყვა. როგორც if-ის შემთხვევაში სტრიქონის ბოლოში არსებული ':' გვანიშნებს, რომ ამ ბრძანების შემდგომ იწყება კოდის ბლოკი, რომელიც შესრულდაბა მხოლოდ და მხოლოდ იმ შემთხვევაში, თუკი if-ში მითითებული პირობის შედეგი არის False.

დაგვრჩა კიდე ერთი ბლოკი, რომელსაც გამოყოფს საკვანძო სიტყვა elif, რომელიც ასევე შეიცავს პირობას d == 0, და რომელიც ასევე ':'-ის გამოყენებით გვაძლევს საშუალებას გამოვყოთ კოდის ბლოკი, რომელიც შესრულდება უკვე ორი პირობის დაკმაყოფილების შემთხვევაში:
1. მანამდე განსაზღვრული პირობები, if-ის და სხვა (ასეთების არსებობის შემთხვევაში) elif-ების საშუალებით, არცერთი არ შესრულდა.
2. ამ კონკრეტულ elif-ში მითითებული პირობა სრულდება (ანუ მისი შედეგი არის True)
ორივე პირობის შესრულება აუცილებელია.

ანუ ეხლა უკვე ქართულად რომ ვილაპარაკოთ, თუკი ჩვენს მიერ გამოთვლილი დისკრიმინანტის მნიშვნელობა არის 0-ზე ნაკლები, მოხდება ამ კოდის შესრულება:
CODE
print('ამ განტოლებას არ აქვს ნამდვილი ამონახსნი!')

ხოლო თუკი დისკრიმინანტის მნიშვნელობა არის 0-ის ტოლი, შესრულდება შემდეგი კოდი:
CODE
x = (-b+d**(1/2.0)) / (2*a)
print('ამ განტოლებას აქვს ერთი ნამდვილი ამონახსნი: ', x)

და თუკი ზედა არცერთი პირობა არ შესრულდა, ანუ დისკრიმინანტის მნიშვნელობა არაა არც 0-ზე ნაკლები და არც 0-ის ტოლი (ლოგიკურად ვუშვებთ რომ მისი მნიშვნელობა 0-ზე მეტია), ამ შემთხვევაში შესრულდება შემდეგი კოდი:
CODE
x1 = (-b-d**(1/2.0)) / (2*a)
x2 = (-b+d**(1/2.0)) / (2*a)
print('ამ განტოლებას აქვს ორი ნამდვილი ამონახსნი:')
print('x1 = ', x1)
print('x2 = ', x2)


ცალკე მინდა განვიხილო ეს სტრიქონი:
CODE
x = (-b+d**(1/2.0)) / (2*a)

-b გვიბრუნებს b-ს უარყოფით მნიშვნელობას (თუკი b თავად უარყოფითია, მივიღებთ ორმაგ უარყოფას, ანუ შედეგი იქნება დადებითი). როგორც ზევით აღვნიშნეთ '**' არის ხარისხში აყვანის ოპერაცია. ჩვენ კი გვჭიდება ფესვი დისკრიმინანტიდან. თუკი გავიხსენებთ სკოლის მასალას n ხარისხის ფესვი რიცხვიდან ეს არის ეს რიცხვი აყვანილი 1 გაყოფილი ნ-ზე ხარისხში. ანუ კვადრატული ფესვი d-დან იგივეა რაც d აყვანილი 1/2 ხარისხში ('/' არის გაყოფის ოპერაცია). მოგვიანებით უფრო კარგად გავეცნობით სხვადასხვა მნიშვნელობის ტიპებს პითონში. ეხლა კი მარტივად რომ ავხსნათ პითონში თუკი ერთი ოპერაციის ორივე წევრი არის მთელი რიცხვი, შედეგი აუცილებლად მთელი რიცხვი იქნება. ჩვენს შემთხვევაში 1/2 ყოველთვის 0-ს დაგვიბრუნებს. ამიტომ გვჭირდება ერთერთი წევრი (გამყოფი) წარმოვადგინოთ ნამდვილ რიცხვად (2.0). ფრჩხილები მათემატიკურ ოპერაციებში იგივე პრინციპით გამოიყენება, რაც ზოგადად ალგებრაში - ჯერ სრულდება ის რაც ფრჩხილებშია, შემდეგ გამოფა/გამრავლება, და ბოლოს მიმატება გამოკლება. a/b*c მაგალითში ჯერ შესრულდება გაყოფა, შემდეგ გამრავლება. ამიტომ როდესაც გვჭირდება რაღაცის გაყოფა სხვა ორი ცვლადის ნამრავლზე, ვიყენებთ ფრჩხილებს - '/ (2*a)'. ანუ ჯერ a გამრავლდება 2-ზე, და შემდეგ მანამდე მიღებული მნიშვნელობა გაიყოფა 2-ისა და a-ს ნამრავლზე.

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

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

Posted by: MrAlex 25 Oct 2017, 15:13
კარგი წამოწყებაა ნამდვილად, წარმატებები.

Posted by: billy*jack 26 Oct 2017, 00:47
საღოლ..

მოგყვები.......... idea.gif

Posted by: INGATO 26 Oct 2017, 00:54
ძალიან კარგია თან დროული ჩემთვის. მადლობა თემის გახსნისთვის jump.gif


პ.ს ამ დავალების გარჩევაში შეგიძლიათ მომეხმაროთ? პირველი დავალებაა და ცოტა კი არა ძაან მერთულა მე rolleyes.gif

user posted image




2,3,4 ნომერი ადვილია გასაგებია ეგენი აი სხვები ვერ გავიგე user.gif

Posted by: Lilith 26 Oct 2017, 07:49
INGATO
დავალებაში თუ რამეა გაუგებარი გირჩევ ლექტორს ჰკითხო, დარწმუნებული ვარ მხოლოდ გაუხარდება yes.gif თუ კონკრეტულად პითონთან გაქვს დაკავშირებული შეკითხვები კიდევ - ორი თემაა აგერ აქვე, ამ განყოფილებაში https://forum.ge/?f=60&showtopic=33978899 და https://forum.ge/?f=60&showtopic=34977272. მოდი ამ თემასაც ზოგადი კითხვების თემად ნუ გადავაქცევთ, პირველ გვერდზე მაინც! biggrin.gif

MrAlex
billy*jack
მადლობა smile.gif

ტაკს, დავუბრუნდით სასწავლო პროცესს, კვლავ ჩვენს პირველ მაგალითს ვაგრძელებთ. ანუ გვაქვს პროგრამა, რომელიც ეშვება, გვეკითხება კვადრატული განტოლების a, b და c კოეფიციენტების მნიშვნელობებს და გვაძლევს შესაბამისი განტოლების ამონახსნ(ებ)ს, ან გვეუბნება რომ ასეთი კოეფიციენტებით განტოლებას არ აქვს ამონახსნი.

თუმცა საკმარისია კოეფიციენტების მნიშვნელობაში შევიყვანოთ არა-რიცხვითი მნიშვნელობა (მაგ. a = a), რომ მომენტალურად პითონი აგვინთებს წითელს:
QUOTE
ValueError: invalid literal for int() with base 10: 'a'


ანდაც a კოეფიციენტის მნიშვნელობად მივუთითოთ 0 და ამონახსნის გამოთვლისას მივიღოთ 0-ზე გაყოფის შეცდომა:
QUOTE
ZeroDivisionError: float division by zero


როგორ მოვიქცეთ ასეთ შემთხვევაში? არის ორი გზა, პირველი - ეს არის წინასწარ გავითვალისწინოთ თუ რა პრობლემებს შესაძლოა წავაწყდეთ პროგრამის მუშაობისას და "ჩავდოთ" შესაბამისი ბერკეტები. მაგალითად ჯერ შევამოწმოთ ხომ არ შეიყვანა მომხმარებელმა 0 პირველი კოეფიციენტის მნიშვნელობად?
CODE

...
if d < 0 or a == 0:
   print('ამ განტოლებას არ აქვს ნამდვილი ამონახსნი!')
...

როგორც ხედავთ if-ში დავამატეთ ახალი პირობა და საკვანძო სიტყვა or.

აქ პატარა (ან არც ისე პატარა) ლირიული გადახვევა უნდა გავაკეთოთ. როგორც პირველ პოსტში ავღნიშნე:
QUOTE
d < 0 არის გამოსახულება, ოპერაცია, ისეთივე როგორიცაა იგივე გამრავლება, ან მიმატება.

დაუკვირდით - a + b, ეს არის მიმატების ოპერაცია, რომლის შედეგი არის a-სა და b-ს მნიშვნელობების ჯამი. a < b ეს არის ოპერაცია, რომლის შედეგი არის ჭეშმარიტია(True) ან მცდარია(False). '+' არის შეკრების ოპერატორი, '<' არის შედარების ოპერატორი. მათემატიკურ ლოგიკაში არის ცალკე განშტოება, რომელსაც ეწოდება ბულის ალგებრა (https://en.wikipedia.org/wiki/Boolean_algebra) რომელიც სწორედ ასეთი გამოსახულებების პრინციპების შესწავლაზეა მიმართული. ეს არის ძალიან ვრცელი, პირადად ჩემთვის უაღრესად საინტერესო და პროგრამირებაში ერთერთი უმნიშვნელოვანესი სფერო.

რა არის or? ესეც თავისებურად არის ოპერაცია, როგორც მიმატება/გამოკლება, ან როგორც შედარება. უბრალოდ a და b ამ შემთხვევაში არის ლოგიკური გამოსახულებები, რომელთა შედეგი არის True ან False. ჩვენს მაგალითში განტოლებას არ აქვს ამონახსნი ორ შემთხვევაში, თუკი დისკრიმინანტის მნიშვნელობა ნაკლები აღმოჩნდა 0-ზე, ან... პირველი კოეფიციენტის მნიშვნელობა არის 0.

აი ეს 'ან' არის სწორედ or ოპერატორი. გვაქვს სხვა ოპერატორიც - and, რომელიც ასრულებს 'და' ოპერაციას. კიდევ არის სხვებიც, მაგრამ ჯერ ამ ორზე გავჩერდეთ. როგორც წინა პოსტში ავღნიშნე, if-ში კოდის ბლოკი სრულდება მხოლოდ იმ შემთხვევაში, თუკი პირობა არის ჭეშმარიტი, ანუ თუკი პირობის გამოსახულების შედეგი(მნიშვნელობა) არის True.

განვიხილოთ პატარა მაგალითი, გვაქვს ორი გამოსახულება - a და b. სიტყვაზე a არის 3 < 4 (True), ხოლო b იყოს 5 < 4 (False). თუკი ჩვენ ამ ორს დავაკავშირებთ or ოპერატორით, რა იქნება a or b გამოსახულების მნიშვნელობა? ლოგიკურად რომ ვიმსჯელოთ - 3 ნაკლებია 4-ზე, ან 5 ნაკლებია 4-ზე. ვინაიდან ერთერთი არის ჭეშმარიტება, ე.ი. მთლიანი გამოსახულების შედეგიც იქნება ჭეშმარიტება(True).

ეხლა ჩავანაცვლოთ 'ან' ოპერატორი, 'და' ოპერატორით. რას მივიღებთ - 3 < 4 და 5 < 4. ვინაიდან ერთერთი არ სრულდება, ე.ი. მთლიანი პირობაც არის მცდარი(False).

ძალიან დამაბნეველია თავიდან ეს ყველაფერი, ამიტომ სიმარტივისათვის ვთქვათ რომ ჭეშმარიტი(True) არის 1, ხოლო მცდარი(False) არის 0. ხოლო or ოპერაცია არის ჩვეულებრივი მათემატიკური მიმატება '+', ხოლო and ოპერაცია არის მათემატიკური გამრავლება. მაშინ a => 3 < 4 => True => 1, ხოლო b => 5 < 4 => False => 0. ხოლო a or b => a + b => 1 + 0 => 1, და a and b => a * b => 1 * 0 => 0. (შენიშვნა - True or True => 1 + 1 => 1 და არა 2-ს, ვინაიდან გვაქვს სულ ორი მნიშვნელობა - True = 1, False = 0).

Fუუუჰჰჰ.... დავუბრუნდეთ ჩვენს მრავალნატანჯ კვადრატულ განტოლებას.
CODE
...
if d < 0 or a == 0:
   print('ამ განტოლებას არ აქვს ნამდვილი ამონახსნი!')
...

თუკი დისკრიმინანტის მნიშვნელობა ნაკლებია 0-ზე, ან პირველი კოეფიციენტის მნიშვნელობა არის 0, განტოლებას არ აქვს ამონახსნი! (ნუ 0-ის შემთხვევაში რეალურად აქვს, უბრალოდ ეს აღარ არის კვადრატული განტოლება)

მეორე გზა ეს არის ე.წ. შეცდომების დამუშავება. როდესაც ჩვენ ვიცით, რომ გარკვეულ მომენტში, გარკვეული პირობების შესრულებისას, ჩვენი პროგრამა შეიძლება დადგეს ისეთი ოპერაციის შესრულების წინაშე, რომელიც შეუძლებელია შესრულდეს (მაგ. 0-ზე გაყოფა), და ჩვენ არ შეგვიძლია თავი დავიზღვიოთ ასეთი შეცდომებისგან რაიმე სახის დამატებითი პირობების გაწერით, შეგვიძლია უბრალოდ გავწეროთ გეგმა "ბ" და ამ ოპერაციის შესრულებისას როდესაც მოხდება შეცდომა, პროგრამა აღარ გააჩერებს კოდის შესრულებას და გააგრძელებს პროგრამული კოდის შესრულებას ოდნავ განსხვავებული სცენარით:

CODE
print('გთხოვთ შეიყვანოთ a, b და c კოეფიციენტები:')
try:
   a = int(input('a = '))
   b = int(input('b = '))
   c = int(input('c = '))

   d = b**2-4*a*c

   if d < 0:
       print('ამ განტოლებას არ აქვს ნამდვილი ამონახსნი!')
   elif d == 0:
       x = (-b+d**(1/2.0)) / (2*a)
       print('ამ განტოლებას აქვს ერთი ნამდვილი ამონახსნი: ', x)
   else:
       x1 = (-b-d**(1/2.0)) / (2*a)
       x2 = (-b+d**(1/2.0)) / (2*a)
       print('ამ განტოლებას აქვს ორი ნამდვილი ამონახსნი:')
       print('x1 = ', x1)
       print('x2 = ', x2)
except ValueError:
   print('გთხოვთ შეიყვანოთ მხოლოდ რიცხვითი მნიშვნელობები!')
except ZeroDivisionError:
   print('გთხოვთ პირველ კოეფიციენტად შეიყვანოთ 0-სგან განსხვავებული მნიშვნელობა!')


try: არის მორიგი საკვანძო სიტყვა, რომელიც საშუალებას გვაძლევს კოდის ბლოკში გარკვეული შეცდომის აღმოჩენის შემთხვევაში, შესრულდეს except: ბლოკში მითითებული კოდი. ზევით წითლად აღნიშნულ შეცდომებში შეგვიძლია ამოვიკითხოთ თუ რა შეცდომასთან გვაქვს საქმე - ამ შეცდომებს პროგრამულ ტერმინოლოგიაში ეწოდება exception-ები. პითონი გვაძლევს საშუალებას სხვადასხვა შეცდომის შემთხვევაში სხვადასხვა კოდის ბლოკი გავწეროთ. როგორც ამ ბოლო პროგრამული კოდიდან ჩანს ჩვენ კონსოლში გამოგვაქვს სხვადასხვა შეტყობინებები სხვადასხვა შემთხვევაში.

თუკი ჩვენ არ ვიცით წინასწარ თუ რა შეცდომა შეიძლება "დაემართოს" ჩვენ პროგრამას, შეგვიძლია არ მივუთითოთ კონკრეტული შეცდომის ტიპი და უბრალოდ დავკმაყოფილდეთ ზოგადი ტექსტით:
CODE
...
except:
   print('უბრალოდ მოხდა შეცდომა!')
...


ვფიქრობ საკმარისზე მეტ ნიუანს შევეხე ამ ჩვენი კვადრატული განტოლების მაგალითის განხილვისას. ვნახეთ როგორ შეგვიძლია შევიტანოთ სხვადასხვა ცვლადის მნიშვნელობა ჩვენს პროგრამაში (კოეფიციენტები, ფუნქცია input()), გავარჩიეთ if-ის შესაძლებლობები, ცალკე ვილაპარაკეთ ლოგიკურ გამოსახულებებზე, ოპერაციებზე და ბულის ალგებრაზე, რომელსაც კიდევ ბევრჯერ დავუბრუნდებით, იმიტომ რომ ეს არის ერთერთი უმნიშვნელოვანესი თემა პროგრამირებაში. და ბოლოს ვისწავლეთ როგორ მოვიქცეთ შეცდომების აღმოჩენის შემთხვევაში - განვიხილეთ ორი გზა, პირველი ესაა პროგრამულად ისეთი პირობების ჩადება, რომ შეცდომა გამოვრიცხოთ, მეორე გზა - გავწეროთ გეგმა "ბ", რომელიც შესრულდება შეცდომის შემთხვევაში.

მომავალი პოსტისთვის მაგალითი ჯერ არ მომიფიქრებია, ამიტომ წინასწარ ვერ გეტყვით შემდეგი პოსტი რაზე იქნება. smile.gif

Posted by: samkhara 26 Oct 2017, 07:56
კარგი წამოწყებაა ნამდვილად.
დავფიქსირდები.

Posted by: SoloFlyer 26 Oct 2017, 12:55
ჯერ ეხლა ვიწყებს სწავლას ამიტომ მეც დავფიქსირდები smile.gif

Posted by: ILIA1702 26 Oct 2017, 13:07
Lilith
იდეის დონეზე კარგია რასაც აკეთებ(თ), მაგრამ რეალურად არავის გამოადგება, რადგან ვისაც აინტერესებს თვითნ დაიწყებდა მოძიებას ზღვა მასალიდან. ისინი ვინც ამ ტუტორიალებით აპირებენ სწავლას, ჩემი აზრით მალევე მიაგდებენ(No offence). შესაბამისად არ ღირს ამდენი დროის კარგვა ელემენტარულ მაგალითებში. თუ რამე Advanced სტატიები შეგიძლია დაწერო ეგ ბევრად გამოსადეგი იქნება imho.

Posted by: billy*jack 26 Oct 2017, 13:10
ILIA1702

არაა ეგრე..

იუთუბის ტუტორიალებით დავიწყე 4-5 დღეა სწავლა, მაგრამ ზოგი რამის გაგება მიჭირს ინგლისურად..

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

Posted by: X2D3T9 26 Oct 2017, 13:36
up.gif

მეც ვეპარებოდი Python-ს
გამომადგება bis.gif

Posted by: negatoni 26 Oct 2017, 14:46
პერფექტო 10/10 წარმატებები მოგყვებოდი აქამდე
QUOTE
ამოცანა #1: კვადრატული განტოლების ამოხსნა. გვაქვს ax^2 + bx + x = 0 ტიპის კვადრატული განტოლება. დისკრიმინანტი d = b^2 - 4ac. თუ დისკრიმინანტი უარყოფითია - ამოხსნა არ გვაქ, თუ 0-ის ტოლია - გვაქვს ერთი ამონახსნი, თუ დადებითია - გვაქვს ორი ამონახსნი.

პროგრამა გამოიყურება შემდეგნაირად:
CODE
print('გთხოვთ შეიყვანოთ a, b და c კოეფიციენტები:')

a = int(input('a = '))
b = int(input('b = '))
c = int(input('c = '))

d = b**2-4*a*c

if d < 0:
   print('ამ განტოლებას არ აქვს ნამდვილი ამონახსნი!')
elif d == 0:
   x = (-b+d**(1/2.0)) / (2*a)
   print('ამ განტოლებას აქვს ერთი ნამდვილი ამონახსნი: ', x)
else:
   x1 = (-b-d**(1/2.0)) / (2*a)
   x2 = (-b+d**(1/2.0)) / (2*a)
   print('ამ განტოლებას აქვს ორი ნამდვილი ამონახსნი:')
   print('x1 = ', x1)
   print('x2 = ', x2)

აქ კი უკვე ზედმეტად ჩინურია ჩემთვის . მათემატიკაში მოვიკოჩლებ

Posted by: Lilith 26 Oct 2017, 17:17
ILIA1702
ანუ რაღაცით ხო უნდა დავიწყო? ხოდა იმისდამიხედვით თუ რა კატეგორია იქნება ჩართული იმ დონის მასალას დავდებ. რა არის იცი, ასეთ საბაზისო რაღაცეებს როდესაც ვუღრმავდები, მე თვითონაც რაღაცა ახალს ვსწავლობ ყოველ ჯერზე. ანუ სადღაც 6 თვეა რაც მე თვითონ დავიწყე პითონის სწავლა და რაღაცას ჩემთვის ვხლაფორთობ. თავიდან web-scrapping-ის მუღამით დავიწყე, მერე ნელნელა მოვუმატე, ეხლა ჩემი პირადი პროექტი tornado-ზე ასინქრონული request-ებით და mongo-ში მოდელით მუშა ბექენდია. დიდი არაფერია ჯერჯერობით, მაგრამ ვცდილობ ყოველდღე ცოტა-ცოტა რაღაცა ჩემ პროექტსაც წავამატო.

ხოდა ვინაიდან პითონი (და პრინციპში სხვა დანარჩენი ენებიც) ძალიან სპეციფიურია, აი ზუსტად ასეთი უბრალო მაგალითებით ბევრი მნიშვნელოვანი ნიუანსი შეიძლება დაიჭირო.

QUOTE
თუ რამე Advanced სტატიები შეგიძლია დაწერო ეგ ბევრად გამოსადეგი იქნება imho.

რა არის იცი, საბაზისო ცოდნა არის ძალიან კომპაქტური, რომელსაც შეიძლება ერთი ან ორი თვე დაუთმო და 90% განიხილო. მაგრამ Advanced არის ფაქტიურად უსასრულო და რომც დავწერო რაიმე კონკრეტულ თემაზე, იმის ალბათობა რომ ეს ვიღაცას კონკრეტულ საქმეში გამოადგება, არის დაბალი. ამიტომ მირჩევნია დავიწყო პატარათი, დაველოდო სხვების ჩართულობას, შეკითხვებს, იმისდამიხედვით რა დაინტერესება იქნება, იმ მიმართულებით გავაგრძელებ.

თუკი პირადად შენ გაქვს ინტერესი რაიმე კონკრეტულ თემასთან დაკავშირებით, შეგვიძლია გავარჩიოთ.

Posted by: Bloomy 27 Oct 2017, 01:35
ძალიან კარგი წამოწყებაა , , წარმატებები
მე მგონია რომ ადამიანს ვისაც საერთოდ არააქვს გამოცდილება პროგრამირებაში გაუჭირდება ამ გაკვეთილებს მიყვეს. ეგრევე კვადრატული განტოლების ამოხსნა და ამდენი ახალი თემის განხილვა ერთდროულად რთულია. ჯობია რამოდენიმე გაკვეთილი მართლა basic ს დაუთმო. მერე მაგალითად თითო თემას გაკვეთილზე., ვთქვათ ლოგიკური ამოცანებს და ამ თემის ირგვლივ იყოს სავარჯიშOები.

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

Posted by: lepori 27 Oct 2017, 13:04
ფიქსირს ვიზამ მეც
30ჯერ ფიქსირი

chups.gif

Posted by: ILIA1702 27 Oct 2017, 18:53
Lilith
QUOTE
მე თვითონაც რაღაცა ახალს ვსწავლობ ყოველ ჯერზე

მაშინ განაგრძე smile.gif
QUOTE
ანუ სადღაც 6 თვეა რაც მე თვითონ დავიწყე პითონის სწავლა

QUOTE
თუკი პირადად შენ გაქვს ინტერესი რაიმე კონკრეტულ თემასთან დაკავშირებით, შეგვიძლია გავარჩიოთ.

არა გმადლობთ.
წარმატებები.
პ.ს. https://repl.it/languages/python3 ეს ან მსგავსი გამოიყენე, რომ გააშეარო კოდები. დასატესტად მარტივია უფრო ვიდრე ტერმინალის გახსნა და ფაილის შექმენა დამწყებთათვის.

Posted by: Lilith 30 Oct 2017, 04:36
ILIA1702
QUOTE
პ.ს. https://repl.it/languages/python3 ეს ან მსგავსი გამოიყენე

მადლობა, ეგ ვნახე და ვაპირებდი მანდ დარეგისტრირებას, უფრო სწორედ დავრეგისტრირდი კიდეც. სირთულეს რაც შეეხება, თავიდან github-ის ახსნაც მინდოდა რომ ვინც რამეს გააკეთებს იქ დადოსთქო gigi.gif user.gif


დღეს მინდა კიდევ რამდენიმე მარტივი მაგალითი განვიხილოთ.

მაგალითი #2: ორი რიცხვის ჯამი:
CODE
print('გთხოვთ შეიყვანოთ შესაკრები რიცხვები:')
try:
   a = int(input('a = '))
   b = int(input('b = '))
   print('ჯამი = ', a+b)
except ValueError:
   print('გთხოვთ შეიყვანოთ მხოლოდ რიცხვითი მნიშვნელობები!')


მაგალითი #3: ლუწ/კენტობა:
CODE
print('გთხოვთ შეიყვანოთ რიცხვი:')
try:
   a = int(input('a = '))
   print('რიცხვი ', a, ' არის ', 'კენტი' if a % 2 == 1 else 'ლუწი')
except ValueError:
   print('გთხოვთ შეიყვანოთ მხოლოდ მთელი რიცხვითი მნიშვნელობები!')


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

ანუ ჩვენი სია გამოიყურება შემდეგნაირად:
  • 'რიცხვი '
  • a
  • ' არის '
  • 'კენტი' if a % 2 == 1 else 'ლუწი'

როდესაც ფუნქციას გადაეცემა რაიმე სახის მნიშვნელობები, ამ მნიშვნელობებს ეწოდება არგუმენტები (arguments).

ანუ ჩვენს print() ფუნქციას ვაწვდით 4 არგუმენტს. print() ფუნქციას შეგვიძლია ასეთი სიის სახით გადავცეთ სხვადასხვა მნიშვნელობები და ფუნქცია მათ კონსოლში ერთმანეთის მიყოლებით გამოიტანს. რაც არსებითია - მნიშვნელობები გამოტანილი იქნება ერთმანეთის მიყოლებით. ანუ 4 სხვადასხვა print() ფუნქცია რომ გამოგვეყენებინა ამ მნიშვნელობების გამოსატანად, 4-ივე დაბეჭდავდა ახალ სტრიქონზე, რაც არც თუ ისე მოსახერხებელია წინადადებების გამოსატანად.

ამ ოთხიდან 2 არის ჩვეულებრივი სიტყვა, ჩასმული ბრჭყალებში, და მათ პითონში ეწოდება სტრიქონები (strings). სტრიქონი ისეთივე მნიშვნელობითი ტიპია, როგორიცაა რიცხვითი მნიშვნელობის ტიპი (int, integer type). უბრალოდ ის გამოიყენება ტექსტური მნიშვნელობების დასამუშავებლად. რასაკვირველია სტრიქონებზე ჩვენ ვერ შევასრულებთ მათემატიკურ ოპერაციებს, თუმცა მიმატების ოპერაცია საშუალებას გვაძლევს მივიღოთ ორი სტრიქონის "ნაერთი" მნიშვნელობა, ანუ 'abc' + 'def' = 'abcdef'.

სიმარტივისთვის წარმოვიდგინოთ (ან შეგვიძლია კოდი შესაბამისად ჩავასწოროთ) რომ print() ბრძანებას მხოლოდ პირველი 3 არგუმენტი გადავეცით.
CODE
print('რიცხვი ', a, ' არის ')

ამ შემთხვევაში ჩვენს კონსოლში ვიხილავთ მსგავს წინადადებას (როდესაც a-ს მნიშვნელობად შევიტანთ 10-ს):
CODE
რიცხვი 10 არის


გავარჩიოთ მეოთხე არგუმენტი:
CODE
'კენტი' if a % 2 == 1 else 'ლუწი'

როგორც ვხედავთ ეს არის if...else... ტიპის ჩანაწერი, ოღონდ ოდნავ სახეშეცვლილი. if რატომღაც არ არის პირველი ამ ჩანაწერში და ასევე არ არის ':'-ები ბლოკების გამოსაყოფად. ეს არის გამარტივებული, ე.წ. 'ერთ-სტრიქონიანი' if...else... ბლოკი რომელიც ყველაზე მარტივად ალბათ შემდეგი ჩანაწერით აიხსნება:
CODE
value_if_true if condition else value_if_false

ანუ ამ ჩანაწერის მნიშვნელობა იქნება value_if_true, თუკი პირობა (condition) შესრულდება (მისი მნიშვნელობა იქნება True), ხოლო წინააღმდეგ შემთხვევაში ჩანაწერი დააბრუნებს value_if_false მნიშვნელობას.

ჩვენს შემთხვევაში ჩვენი პირობა არის
CODE
a % 2 == 1
'%' არის ე.წ. ნაშთის გაყოფის ოპერაცია, ანუ მისი შედეგი არის ერთი რიცხვის მეორეზე გამოფით მიღებული ნაშთი, 5 % 3 = 2, 6 % 3 = 0 და ა.შ. ჩვენს შემთხვევაში ჩვენ ვამოწმებთ თუ არის a-ს 2-ზე გაყოფის ნაშთი 1-ის ტოლი. თუკი ნაშთი არის ერთი, ჩვენი value_if_true მნიშვნელობა იქნება 'კენტი', ხოლო წინააღმდეგ შემთხვევაში 'ლუწი'.

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

მაგალითი #4: კუბში აყვანა:
CODE
print('გთხოვთ შეიყვანოთ რიცხვი:')
try:
   a = int(input('a = '))
   print('რიცხვი ', a, ' არის ', 'კენტი' if a % 2 == 1 else 'ლუწი')
except ValueError:
   print('გთხოვთ შეიყვანოთ მხოლოდ მთელი რიცხვითი მნიშვნელობები!')


ძალიან მარტივი მაგალითი, შეგვყავს რიცხვი, ვბეჭდავთ მისი მესამე ხარისხში აყვანის შედეგად მიღებულ მნიშვნელობას. როგორც ხვდებით 3-იანის 4-ანად გადაკეთებით მივიღებთ მეოთხე ხარისხში აყვანის შედეგად მიღებულ მნიშვნელობას და ა.შ.

Posted by: billy*jack 30 Oct 2017, 21:59
Lilith

ჯიგარი ხარ..

ე.ი try და exceptvalue ს დანიშნულება გავიგე დღეს..

კითხვები

1) ხო შეიძლებოდა N3 მაგალითში print ('ricxvi ', a , 'aris', 'lutsi' if a%2==0 else 'kenti') ეგრე ჩაგვეწერა მოცემულის ნაცვლად ? (ანუ პროგრამა ხოარ აირეოდა ? ჩემთვის მაინტერესებს თორე შენ რაც დაწერე კარგად მუშაობს )

2) კოდი როგორ სახეს მიიღებს როცა მინდა პროგრამა შესრულების მერე ავტომატურად ახლდებოდეს.. ანუ ჩავწერე 5, ამოაგდო კენტი, და მთავაზობს შევიყვანო ახალი რიცხვი შესამოწმებლად..

3) კუბში აყვანი მაგალითი აგრევია.. მანდაც ლუწ/კენტობა წერია

Posted by: Lilith 30 Oct 2017, 23:26
billy*jack
QUOTE
კითხვები

up.gif

1. კი, რა თქმა უნდა შეიძლებოდა, ძალიან კარგია ეგ მომენტი რომ დაიჭირე, ანუ სწორედ გაიგე if-ის ასეთი გამარტივებული ჩანაწერის შინაარსი

2. ეს ხდება ე.წ. 'ციკლების' (loop - მარყუჟი, რაღაც არ ჟღერს კარგად ქართულად, მაინც ყველა 'ციკლს' ხმარობს ტერმინად). ბარემ მოდი აქვე დავწერ პატარა მაგალითს:

მაგალითი #5: კუბში აყვანა, შესწორებული ვარიანტი, რომელიც იმუშავებს სანამ a-ს მნიშვნელობად არ შევიყვანთ 'x'-ს:
CODE
print('გთხოვთ შეიყვანოთ რიცხვი:')
while True:
   try:
       a = input('a = ')
       if a == 'x':
           print('პროგრამა დასრულებულია...')
           break
       print(a, '^3 = ', int(a)**3)
   except ValueError:
       print('გთხოვთ შეიყვანოთ მხოლოდ მთელი რიცხვითი მნიშვნელობები!')


while არის საკვანძო სიტყვა, რომელიც მიეკუთვნება ე.წ. 'ციკლები'-ს სახეობას. ციკლი არის გარკვეული პირობა, რომლის შესრულების შემთხვევაში სრულდება ერთი და იგივე კოდის ბლოკი. არის სხვადასხვა სახეობის ციკლები, while არის ალბათ ყველაზე მარტივი მათ შორის და ჩაიწერება შემდეგნაირად:
CODE
while condition:
   ...
   code
   ...

მის ქვევით კოდის ბლოკი სრულდება მანამ, სანამ condition-ში აღწერილი პირობის მნიშვნელობა არის True.

შესაბამისად ჩვენს მაგალითში მითითებული კოდი შესრულდება დაუსრულებლად, ვინაიდან True-ს მნიშვნელობა ყოველთვის იქნება True. ასეთი ციკლიდან 'გამოსასვლელად' დაგვეხმარება საკვანძო სიტყვა break, რომელიც აკეთებს არც მეტი, არც ნაკლები - ახდენს მიმდინარე ციკლის დასრულებას და ციკლის შემდგომი კოდის შესრულებას. ჩვენს შემთხვევაში მთელი პროგრამა მოთავსებულია ამ ციკლში, შესაბამისად break-ის შემდეგ არც აღარაფერია შესასრულებელი და პროგრამა დაასრულებს მუშაობას.

როგორც მაგალითიდან ჩანს ჩვენ ასევე მცირედი ცვლილება შევიტანეთ a-ს მნიშვნელობის მიღებისას, ჩვენ აღარ ვანიჭებთ მას მითითებული მნიშვნელობის რიცხვით ტიპზე დაყვანილ მნიშვნელობას, არამედ ვტოვებთ იმ ტიპად, რა ტიპადაც მას input() ფუნქცია იღებს - ანუ სტრიქონად. ეს გვაძლევს საშუალებას პროგრამამ აღარ 'იყვიროს' როდესაც არარიცხვით მნიშვნელობას ('x'-ს) შევიყვანთ. შემდეგ ვამოწმებთ თუ არის მითითებული მნიშვნელობა 'x'-ის ტოლი, ტოლობის შემთხვევაში ვბეჭდავთ შესაბამის ტექსტს და ვასრულებთ პროგრამას, ხოლო უტოლობის შემთხვევაში ვაგრძელებთ ჩვეულებრივად და უკვე print()-ის შიგნით, კუბში აყვანამდე, ვიყენებთ არა a-ს ნამდვილ მნIშვნელობას, არამედ მის რიცხვით ანალოგს, და აგვყავს იგი მესამე ხარისხში.

3. ooops... gigi.gif ეგ როგორ გამომეპარა, ზედა პოსტს აღარ მასწორებინებს, ამიტომ აქ დავწერ კუბში აყვანის პროგრამის პირვანდელ ვარიანტს:
CODE
print('გთხოვთ შეიყვანოთ რიცხვი:')
try:
  a = int(input('a = '))
  print(a, '^3 = ', a**3)
except ValueError:
  print('გთხოვთ შეიყვანოთ მხოლოდ მთელი რიცხვითი მნიშვნელობები!')

Posted by: billy*jack 31 Oct 2017, 00:59
QUOTE (Lilith @ 30 Oct 2017, 23:26 )
1) ანუ სწორედ გაიგე if-ის ასეთი გამარტივებული ჩანაწერის შინაარსი
____

2) while არის საკვანძო სიტყვა, რომელიც მიეკუთვნება ე.წ. 'ციკლები'-ს სახეობას. ციკლი არის გარკვეული პირობა, რომლის შესრულების შემთხვევაში სრულდება ერთი და იგივე კოდის ბლოკი.

1) გამიხარდა ეს bis.gif

2) გავარჩიე ლუპის მაგალითი და მივხვდი.. მადლობა
(თუ არ ვცდები ლუპის მაგალითში input-მდე int-ი არის მისაწერი.. პროგრამამ ერორი ამოაგდო და ინტი რო ჩავამატე გამოსწორდა..)

გააგრძელე შენი პროგრამის მიხედვით პოსტვა.. კარგად მიყვები.. ისეთი რამე თუ ვიკითხე რაც ჯერ ადრეა, მითხარი რო ადრეა, ეგ თემა ცალკე არ გამიშალო, თორე შენც ძაან გადაუხვევ თემას და მეც ვერ გავიგებ biggrin.gif (ლუპი გავიგე ისე.. არაა რთული)

Posted by: Lilith 31 Oct 2017, 01:32
billy*jack
QUOTE
(თუ არ ვცდები ლუპის მაგალითში input-მდე int-ი არის მისაწერი.. პროგრამამ ერორი ამოაგდო და ინტი რო ჩავამატე გამოსწორდა..)

ჰმმ, არ უნდა ამოეგდო ერორი, შეგიძლია შენი კოდი დადო და გავარჩიოთ?

ანუ მანდ მუღამი ეს იყო:
QUOTE
როგორც მაგალითიდან ჩანს ჩვენ ასევე მცირედი ცვლილება შევიტანეთ a-ს მნიშვნელობის მიღებისას, ჩვენ აღარ ვანიჭებთ მას მითითებული მნიშვნელობის რიცხვით ტიპზე დაყვანილ მნიშვნელობას, არამედ ვტოვებთ იმ ტიპად, რა ტიპადაც მას input() ფუნქცია იღებს - ანუ სტრიქონად. ეს გვაძლევს საშუალებას პროგრამამ აღარ 'იყვიროს' როდესაც არარიცხვით მნიშვნელობას ('x'-ს) შევიყვანთ. შემდეგ ვამოწმებთ თუ არის მითითებული მნიშვნელობა 'x'-ის ტოლი, ტოლობის შემთხვევაში ვბეჭდავთ შესაბამის ტექსტს და ვასრულებთ პროგრამას, ხოლო უტოლობის შემთხვევაში ვაგრძელებთ ჩვეულებრივად და უკვე print()-ის შიგნით, კუბში აყვანამდე, ვიყენებთ არა a-ს ნამდვილ მნIშვნელობას, არამედ მის რიცხვით ანალოგს, და აგვყავს იგი მესამე ხარისხში.

არ ვიღებთ int() მნიშვნელობას input-ისთანავე, რომ 'x'-ზე შეცდომა არ ამოაგდოს და ჩვეულებრივად დაასრულოს მუშაობა.

Posted by: billy*jack 31 Oct 2017, 01:39
Lilith

ამ კოდზე აგდებს
» სპოილერის ნახვისთვის დააწკაპუნეთ აქ «

Traceback (most recent call last):
File "D:\Python Projects\xarisxshi ayvana.py", line 8, in <module>
print (a, '^3 = ', a**3)
TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'

და ეს კოდი მუშაობს
» სპოილერის ნახვისთვის დააწკაპუნეთ აქ «


Posted by: Lilith 31 Oct 2017, 01:46
billy*jack
QUOTE
ამ კოდზე აგდებს

print()-ში ვიყენებთ int() ფუნქციას:
CODE
       print(a, '^3 = ', int(a)**3)

QUOTE
და უკვე print()-ის შიგნით, კუბში აყვანამდე, ვიყენებთ არა a-ს ნამდვილ მნIშვნელობას, არამედ მის რიცხვით ანალოგს, და აგვყავს იგი მესამე ხარისხში.

ანუ ეს
QUOTE
და ეს კოდი მუშაობს

კი იმუშავებს სწორად - კუბში აიყვანს რა რიცხვსაც მიუთითებ, მაგრამ პროგრამის დასრულება რომ დაგჭირდეს და 'x' შეიყვანო, ამოაგდებს ჩვეულებრივ ValueError-ს.

Posted by: billy*jack 31 Oct 2017, 01:50
QUOTE (Lilith @ 31 Oct 2017, 01:46 )
print()-ში ვიყენებთ int() ფუნქციას

აა იასნა.. გამომრჩენია ეგ მართალი ხარ..

ხვალ თავიდან გავარჩევ.. ეხლა ვერ გავქაჩავ biggrin.gif

ახალი მაგალითის დადებას აპირებ ხვალისთვის ?

Posted by: Lilith 31 Oct 2017, 07:17
რახან ციკლებიც გამოვიყენეთ, რამდენიმე მაგალითს ციკლებს დავუთმობ.

მაგალითი #6: 7-ის ჯერადი რიცხვი. მარტივი ამოცანა - პროგრამამ უნდა შეგვაყვანინოს რიცხვები მანამ, სანამ ჩვენ არ შევიყვანთ რაიმე 7-ის ჯერად რიცხვს:
CODE
print('გთხოვთ შეიყვანოთ 7-ის ჯერადი რიცხვი:')
while True:
   try:
       a = int(input('a = '))
       if a % 7 == 0:
           print(a, ' არის 7-ის ჯერადი! პროგრამა დასრულებულია...')
           break
       print(a, ' არ არის 7-ის ჯერადი! გთხოვთ შეიყვანოთ ხელახლა:')
   except ValueError:
       print('გთხოვთ შეიყვანოთ მხოლოდ მთელი რიცხვითი მნიშვნელობები!')


ძალიან მარტივია, ვკითხულობთ რიცხვს, თუკი მისი 7-ზე გაყოფით მიღებული ნაშთი არის 0-ის ტოლი, ვასრულებთ პროგრამას, წინააღმდეგ შემთხვევაში კვლავ ვეკითხებით რიცხვის შეყვანას, სანამ არ არ მივიღებთ 7-ის ჯერადს.

ოდნავ რთული მაგალითი,
მაგალითი #7: დავადგინოთ არის თუ არა შეყვანილი რიცხვი მარტივი:

CODE
print('გთხოვთ შეიყვანოთ ნებისმიერი ნატურალური რიცხვი:')
while True:
   try:
       a = int(input('a = '))      # 1

       if a < 2:                   # 2
           print('გთხოვთ შეიყვანოთ 1-ისგან განსხვავებული ნატურალური რიცხვი!')
           continue

       if a == 2:                  # 3
           print(a, ' არის მარტივი რიცხვი!')
           break

       k = 2                       # 4
       while k < a:                # 5
           if a % k == 0:          # 6
               print(a, ' არ არის მარტივი რიცხვი, ვინაიდან ის იყოფა ', k, '-ზე')
               break
           k += 1                  # 7
           pass                    # 8

       if k == a:                  # 9
           print(a, ' არის მარტივი რიცხვი!')
           break

   except ValueError:
       print('გთხოვთ შეიყვანოთ მხოლოდ ნატურალური რიცხვი!')


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

მე ამ მაგალითში გამოვიყენე იმისათვის რომ გაგვიმარტივდეს მაგალითის გარჩევა, შეიძლება 9 პუნქტი ბევრია, მაგრამ ცოტას ისევ ბევრი ჯობია smile.gif

# 1: ჩვენი სტანდარტული input() ფუნქცია რიცხვითი მნიშვნელობის წასაკითხად. არარიცხვითი მნიშვნელობის მითითების შემთხვევაში კონსოლში გამოიტანს შეცდომას და while ციკლის წყალობით ხელახლა მოგვთხოვს რიცხვის შეყვანას.

# 2: ვამოწმებთ, თუკი შეყვანილი რიცხვი 2-ზე ნაკლებია, კონსოლში გამოგვაქვს შესაბამისი შეტყობინება და ხელახლა ვითხოვთ რიცხვის შეყვანას. ბრძანება continue მიმდინარე ციკლის კოდის ბლოკს ხელახლა უშვებს, ანუ მარტივად რომ ვთქვათ ჩვენი პროგრამა ბრუნდება უკან და კოდის შესრულება while True: პოზიციიდან.

# 3: თუკი შეყვანილი რიცხვი არის 2, და 2 არის პირველი მარტივი რიცხვი, შესაბამისად გამოგვაქ შეტყობინება და ვასრულებთ პროგრამის მუშაობას break ბრძანების საშუალებით.

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

# 4: k არის ჩვეულებრივი ცვლადი, რომლის საწყის მნიშვნელობად ვიღებთ 2-ს.

# 5: ვინაიდან ჩვენ გვაინტერესებს მხოლოდ ჩვენს რიცხვზე ნაკლები რიცხვები (უნაშთოდ თავის თავზე დიდ რიცხვზე ვერ გაიყოფა, ხო სწორია?), ამიტომ ჩვენი მეორე ციკლის პირობა იქნება ჭეშმარიტება k-ს მხოლოდ a-ზე ნაკლები მნიშვნელობებისთვის. ანუ თუკი a = 3-ს, ხოლო k-ს საწყისი მნიშვნელობა არის 2, 2 < 3 => True

# 6: თუკი a უნაშთოდ იყოფა k-ზე, ე.ი. a არ არის მარტივი რიცხვი. ასეთ შემთხვევაში ჩვენ გამოგვაქ შესაბამისი შეტყობინება კონსოლში. ***ყურადღება*** - break ბრძანება ამ შემთხვევაში არ დაასრულებს პროგრამის მუშაობას. როგორც წინა პოსტში ავხსენი, break ასრულებს მხოლოდ მიმდინარე ციკლის მუშაობას. ანუ მოხდება ამ ჩვენი მეორე, 'ჩადგმული' while ციკლის დასრულება და პროგრამა გაგრძელდება # 9 პუნქტიდან.

# 7: თუკი არ მოხდა ციკლის დასრულება, ეს იმას ნიშნავს, რომ a არ იყოფა უნაშთოდ k-ზე, და ჩვენ უნდა გავზარდოთ k-ს მნიშვნელობა ერთი ბიჯით. k += 1 ეს არის გამარტივებული ჩანაწერი, იგივეა რაც დაგვეწერა k = k + 1. k += 4 იგივეა რაც k = k + 4, k *= 4 იგივეა რაც k = k * 4 და ა.შ.

# 8: pass არის ასევე საკვანძო სიტყვა, მას არ გააჩნია არავითარი ფუნქციონალური დატვირთვა, ის უბრალოდ გამოიყენება კოდის ბლოკის დასასრული აღსანიშნავად. ანუ როგორც break და continue, რომლებიც ასრულებენ კოდის მიმდინარე ბლოკის შესრულებას და პირველის შემთხვევაში ხდება შემდეგ ნაწილზე გადასვლა, ხოლო მეორის შემთხვევაში მიმდინარე ბლოკი სრულდება ხელახლა, pass არაფერს არ ცვლის, პროგრამა აგრძელებს თავის მუშაობას როგორც მანამდე იყო განსაზღვრული. უბრალოდ ვიზუალურად კარგად ჩანს სად მთავრდება მიმდინარე ბლოკი.

# 9: ამ ნაწილში ვხვდებით ორად-ორ შემთხვევაში. პირველი, ესაა როდესაც ჩვენ ვიპოვეთ a-ს გამყოფი, რომელიც 2-ზე მეტია ან ტოლი, და a-ზე მკაცრად ნაკლებია. ამ შემთხვევაში ჩვენ შეტყობინება უკვე გამოტანილი გვაქ და არც არაფერი გვაქ დამატებით გასაკეთებელი. ხოლო მეორე ეს არის შემთხვევა, როდესაც არ მოიძებნა a-ს გამყოფი 2<=k<a დიაპაზონში, მაგრამ k-ს მნიშვნელობა # 5 ციკლში გაუტოლდა a-ს მნიშვნელობას და while k < a: ციკლის პირობა აღარ შესრულდა. ამ შემთხვევაში ჩვენ შეგვიძლია ვთქვათ რომ a არის მარტივი რიცხვი. ამიტომ, რომ დავადგინოთ თუ რომელ შემთხვევასთან გვაქ საქმე, ვწერთ if-ს მარტივი პირობით - თუ k-ს მნიშვნელობა ტოლია a-ს მნიშვნელობის, ე.ი. საქმე გვაქ მეორე შემთხვევასთან და უნდა გამოვიტანოთ შესაბამისი მნიშვნელობა და დავასრულოთ პროგრამის მუშაობა break ბრძანებით.

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

Posted by: billy*jack 1 Nov 2017, 21:06
Lilith

საკაიფო მაგალითია..

#4 ანუ როცა რაღაც კოეფიციენტი შემომაქვს, და საწყისი მნიშვნელობის მინიჭება მინდა, ეგ მხოლოდ ერთი ტოლობის ნიშნით ხდება ?

ჩვენს შემთხვევაში K=2

ჰო კიდე ჩემთვის რამე მარტივი საშინაო დავალების მოცემა შეგიძლია ? biggrin.gif

Posted by: Lord_Crusader 1 Nov 2017, 21:32
როგორ მინდა მეც გამოგყვეთ,მაგრამ 1-2 კვირა დრო არ მაქვს სამსახურის გამო და მერე ალბათ ვეღარ დაგეწევით user.gif
კარგი წამოწყებაა და კარგი იუზერი ხარ Lilith
ესე უანგაროდ საკუთარ ცოდნას და გამოცდილებას აზიარებდეს ვინმე დიდი იშვიათობაა up.gif

Posted by: Lilith 2 Nov 2017, 06:55
billy*jack
QUOTE
#4 ანუ როცა რაღაც კოეფიციენტი შემომაქვს, და საწყისი მნიშვნელობის მინიჭება მინდა, ეგ მხოლოდ ერთი ტოლობის ნიშნით ხდება ?

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

QUOTE
ჰო კიდე ჩემთვის რამე მარტივი საშინაო დავალების მოცემა შეგიძლია ? 

როგორ არ შემიძლია, ორ დავალებას მოგცემ, ერთს მარტივს, მეორეს ოდნავ რთულს:
1. შეყვანილი r-ისთვის პროგრამამ დაითვალოს და კონსოლში გამოიტანოს r რადიუსის მქონე წრეწირის ფართობი. პი კონსტანტის მნიშვნელობად აიღეთ 3.14159
2. შეყვანილი n-ისთვის პროგრამამ დაითვალოს და კონსოლში გამოიტანოს n!-ის (n-ის ფაქტორიალის) მნიშვნელობა.
წარმატებები!

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

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

მაგალითი #8: 1-დან n-მდე დავითვალოთ 7-ის ჯერადი რიცხვების რაოდენობა და ჯამი. ამოხსნის პირველ ვარიანტში გამოვიყენებ while ციკლს:
CODE
print('გთხოვთ შეიყვანოთ ნებისმიერი ნატურალური რიცხვი:')
while True:
   try:
       n = int(input('n = '))

       total_sum = 0
       total_count = 0

       k = 7
       while k <= n:
           total_sum += k
           total_count += 1
           k += 7
           pass

       print('1-დან ', n, '-მდე 7-ის ჯერადი რიცხვების:')
       print('რაოდენობა = ', total_count)
       print('ჯამი = ', total_sum)

       if input('გნებავთ ახალი რიცხვის შეყვანა?(Y/N):').upper() == 'N':
           break
   except ValueError:
       print('გთხოვთ შეიყვანოთ მხოლოდ ნატურალური რიცხვი!')


ეს მთავარი ციკლი და input()-ი რას აკეთებს და რისთვისაა ამას აღარ გავიმეორებ. total_sum და total_count იქნება ჩვენი დამხმარე ცვლადები სადაც შესაბამისად შევინახავთ 1-დან n-მდე 7-ის ჯერადების ჯამს და რაოდენობას. k ისევ იქნება ჩვენი დამხმარე 'მთვლელი'. დანარჩენი მარტივია, ციკლს ვატრიალებთ n-ის ჩათვლით (ვინაიდან თავად n შეიძლება აღმოჩნდეს 7-ის ჯერადი). k-ს საწყის მნიშვნელობად ვიღებთ 7-ს, როგორც პირველ 7-ის ჯერად ნატურალურ რიცხვს. თუკი n-ის შეყვანილი მნიშვნელობა 7-ზე ნაკლებია, შედეგად მივიღებთ 0-ებს. სხვა შემთხვევაში ციკლის ყოველ ბიჯზე ჩვენ ვზრდით k-ს მნიშვნელობას 7-ით. ანუ დამატებით აღარ ვამოწმებთ 7-ის ჯერადი არის თუ არა და 7-ზე გაყოფისას ნაშთს თუ ვიღებთ 0-ს, ვინაიდან 7-ით ვიწყებთ და ყოველ ჯერზე ისევ 7-ს ვუმატებთ, ე.ი. ყოველი მომდევნო რიცხვი ლოგიკურად იქნება ისევ 7-ის ჯერადი. ანუ k-ს ვზრდით 7-ით, total_count-ს 1-ით და total_sum-ს k-ს მიმდინარე მნიშვნელობას ვუმატებთ.

აქ ერთერთი მნიშვნელოვანი მომენტია ცვლადების მნიშვნელობების მინიჭების თანმიმდევრობა, k-ს ვზრდით ბოლოს, ვინაიდან ჯერ არ ვიცი ახალი მნიშვნელობა თუ გვაქწყობს, თუ არის ისევ 1..n მონაკვეთში.

როგორც კი k-ს მნიშვნელობა გაცდება n-ს, ჩვენი ციკლი დაასრულებს მუშაობას და total_sum და total_count ცვლადებში გვექნება შენახული ის მნიშვნელობები, რომლების დათვლაც გვჭირდებოდა. რა ხდება შემდეგ?

აქ პატარა ხრიკს ვიყენებთ, მომხმარებელს ვეკითხებით თუ სურს მუშაობის გაგრძელება და ახალი n-ისთვის იგივეს გამეორება, თუ არა? Y/N ტიპის კითხვას ვუსვამთ და თუკი პასუხად მივიღეთ N-ისგან განსხვავებული მნიშვნელობა, პროგრამას ხელახალ წრეზე გავუშვებთ. აქვე დაუკვირდით .upper() ფუნქციის გამოყენებას. ჩვენ ფაქტიურად input() ფუნქცია გავაგრძელეთ, წერტილის გამოყენებით ჩვენ ვიძახებთ დამატებით ფუნქციას - upper().

ეხლა რა ხდება, ზოგადად წერტილის გამოყენებით ხდება წინამდებარე ცვლადისა თუ ობიექტის მახასიათებლების (properties) ან ატრიბუტების ან ფუნქციების გამოყენება კოდში. ანუ მომავალში როდესაც ჩვენი კლასების შექმნას ვისწავლით, შეიძლება გვქონდეს ცვლადი giorgi რომელსაც ექნება ატრიბუტები saxeli, gvari, mamis_saxeli და ფუნქციები adeqi, dajeqi, daidzine და ა.შ. შესაბამისად მათ ასეთნაირად გამოვიყენებთ:
CODE
giorgi.saxeli = 'giorgi'
giorgi.gvari = 'giorgadze'
giorgi.mamis_saxeli = 'giorgis dze'
giorgi.adeqi()
giorgi.dajeqi()
giorgi.daidzine()

gigi.gif მაპატიეთ, მეტი უკეთესი მაგალითი ვერ მოვიფიქრე smile.gif

ხოდა, დავუბრუნდეთ ჩვენს .upper()-ს, ამ შემთხვევაში პირველი შეხედვით ჩანს, თითქოს ეს ფუნქცია ეკუთვნის input() ფუნქცია, მაგრამ ეს ასე არ არის. .upper() ეკუთვნის input() ფუნქციის მიერ დაბრუნებულ ობიექტს, რომელიც ამ შემთხვევაში არის მოხმარებლის მიერ შეყვანილი სტრიქონი (მაგ. 'N'). რა დანიშნულება აქვს ამ ფუნქციას? ეს ფუნქცია აიღებს ჩვენს მიერ შეყვანილ სტრიქონს და დაგვიბრუნებს მის მსგავს სტრიქონს, რომელშიც ყველა პატარა ასო დიდით იქნება ჩანაცვლებული. მარტივად რომ ვთქვათ 'n'.upper() დაგვიბრუნებს 'N'-ს smile.gif

ეხლა განვიხილოთ იგივე მაგალითი მეორე ტიპის ციკლის გამოყენებით:
CODE
print('გთხოვთ შეიყვანოთ ნებისმიერი ნატურალური რიცხვი:')
while True:
   try:
       n = int(input('n = '))

       total_sum = 0
       total_count = 0

       for k in range(7, n, 7):
           total_sum += k
           total_count += 1
           pass

       print('1-დან ', n, '-მდე 7-ის ჯერადი რიცხვების:')
       print('რაოდენობა = ', total_count)
       print('ჯამი = ', total_sum)

       if input('გნებავთ ახალი რიცხვის შეყვანა?(Y/N):').upper() == 'N':
           break
   except ValueError:
       print('გთხოვთ შეიყვანოთ მხოლოდ ნატურალური რიცხვი!')


ანუ როგორც ხედავთ while k <= n: ჩანაწერი ჩავანაცვლეთ for k in range(7, n, 7): ჩანაწერით. ასევე წავშალე k = 7 და k += 7 ჩანაწერები.

მოდი სანამ for ციკლს ავხსნი, ჯერ range() ფუნქცია გავარკვიოთ რას აკეთებს. range() ფუნქცია გვიბრუნებს რიცხვების სიმრავლეს, ე.წ. მასივს მითითებულ დიაპაზონში. პირველი და მესამე პარამეტრები არის 'არააუცილებელი' (optional). მაგალითად range(3) დაგვიბრუნებს რიცხვებს 0-დან 3-ის ჩათვლით [0, 1, 2, 3]. ხოლო range(2, 7) დაგვიბრუნებს რიცხვებს 2-დან 7-ის ჩათვლით [2, 3, 4, 5, 6, 7]. range(7, n, 7) დაგვიბრუნებს რიცხვებს 7-იდან n-ის ჩათვლით, ოღონდ 7-ის გამოტოვებით. ამ მეორე 7-ს ეწოდება 'ბიჯი' ან 'ნაბიჯი' (step). მაგალითად თუკი n = 25, range(7, 25, 7) დაგვიბრუნებს [7, 14, 21] რიცხვების სიმრავლეს.

შესაბამისად for ციკლი ასრულებს გარკვეულ კოდს მითითებული სიმრავლის ყოველი წევრის მნიშვნელობისთვის. ანუ, ვისაც კი სხვა პროგრამულ ენებთან ჰქონია შეხება, იმას ეცოდინება რომ for ციკლი ყოველთვის გამოიყენება რაღაცა მთვლელის დანიშნულებით, ანუ ყოველთვის ცვლადი არის რიცხვითი მნიშვნელობის თავისი საწყისი და საბოლოო მნიშვნელობებით და ბიჯით. პითონში for ციკლი გამოიყენება ნებისმიერ სიმრავლესთან. და შემდეგ მაგალითებში ნელ-ნელა ჩავუღრმავდებით ამ სიმრავლეების გამოყენებას, ვინაიდან პითონის ერთერთი (და არა ერთადერთი) ყველაზე ძლიერი მხარე არის სწორედ სიმრავლეები.

დანარჩენი კი მარტივია, ანუ range(7, n, 7) პირდაპირ დაგვიგენერირებს 7-დან n-მდე 7-ის ჯერად რიცხვებს, და თითოეული მათგანისთვის გამოიძახებს ჩვენს კოდს, სადაც დავითვლით და ავჯამავთ ამ რიცხვებს.

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

Posted by: billy*jack 2 Nov 2017, 13:41
Lilith

დავალება N1
» სპოილერის ნახვისთვის დააწკაპუნეთ აქ «


პროგრამა გაეშვა ნორმალურად რავი.. სწორია ? gigi.gif
_______________________________________________

მეორე დავალებაზე და ახალ მაგალითზე ვმუშაობ მოგვიანებით დავდებ// givi.gif
__________

მეორე დავალებაში ფაქტორიალის ფუნქციამ გამჭედა//

მათემატიკურად n! = n!=n(n-1)...2·1 ,, პითონში როგორ ჩავწერო ეს მრავალწერტილი /?

ვიფიქრე ეგრე ხოარ მექნა

n! = n * (k-1)

სადაც k-ს პირველი მნიშვნელობა იქნება k=n

ამის მერე k -= 1 (შემცირდება ერთით)

სანამ k=2 არ გაუტოლდება ორს.. იმიტო რო ფაქტორიალის ბოლო წევრი გამოვიდეს (k-1) = 1..

მარა ამას რო ვწერ კ კოეფიციენტს ვეღარ ცნობს პროგრამა

Posted by: აბიტურიენტი 2 Nov 2017, 15:59
QUOTE
n! = n * (k-1)

n! = n * (n-1)!

მაგრამ არ გინდა რეკურსიული ამოხსნა. შედეგი გამოაცხადე ერთის მნიშვნელობით და მერე ლუპში სათითაოდ გადაამრავლე ყველა მნიშვნელობაზე n-მდე.

Posted by: billy*jack 2 Nov 2017, 17:03
QUOTE (აბიტურიენტი @ 2 Nov 2017, 15:59 )
n! = n * (n-1)!

მოიცა ეგრე რო ჩავწერო ანუ პითონი ფაქტორიალის ნიშანს ხვდება ? spy.gif

მე მეგონა ვერ ხვდებოდა და ჩანაწერის ალტერნატიულ გზებს ვეძებდი..



Posted by: Lilith 2 Nov 2017, 18:04
billy*jack
n!-ს ვერ მიხვდება პითონი. სხვანაირად შეხედე: n! = 1*2*...*(n-1)*n. მერე გადახედე კიდევ ერთხელ ციკლებზე მაგალითებს და იფიქრე როგორ გამოიყენო შენს ამოცანაში.

Posted by: billy*jack 2 Nov 2017, 18:07
Lilith

ოკ.. ჯერ არ დაპოსტო სწორი პასუხი, ან დაასპოილერე..

მივცხებ აბააა ვნახოთ რა გამოვა
* * *
Lilith

» სპოილერის ნახვისთვის დააწკაპუნეთ აქ «


გავიჭედე .. ვაბშე სწორად მივდივარ ?

იდეაში მინდა ამ ჩანაწერის გაკეთება
nfact = (k-1)*n
k range (2,n)
k += 1

ანუ შევიყვან n-ს ხოდა პროგრამამ დაიწყოს K-კოეფიციენტის ჩასმა ფორმულაში სადაც K იქნება 2 დან N მდე, და ყოველ ჯერზე გაიზრდება 1 ით.. სანამ არ გაუტოლდება k=n-ს..

Posted by: აბიტურიენტი 3 Nov 2017, 14:53
QUOTE
გავიჭედე .. ვაბშე სწორად მივდივარ ?

არა. ყოველ ციკლზე თავიდან ენიჭება ფაქტორიალის ცვლადს n*(k-1) მნიშვნელობა. ბოლოს გექნება n*(n-2) რაც არ უდრის ფაქტორიალს.
ესაა ამოხსნა
QUOTE
შედეგი გამოაცხადე ერთის მნიშვნელობით და მერე ლუპში სათითაოდ გადაამრავლე ყველა მნიშვნელობაზე n-მდე.

კოდი სპოილერში mo.gif
» სპოილერის ნახვისთვის დააწკაპუნეთ აქ «



QUOTE
n! = n * (n-1)!

ეს მეორე, უფრო "ჭკვიანური" ამოხსნა biggrin.gif
» სპოილერის ნახვისთვის დააწკაპუნეთ აქ «

Posted by: Lilith 3 Nov 2017, 22:22
billy*jack
ძალიან მნიშვნელოვანია პატარ-პატარა ექსპერიმენტების გაკეთება. მაგალითად ამ ტიპის კოდზე რომ 'ივარჯიშო', ძალიან გამოგადგება:
CODE
for k in (1, 10):
   print(k)

ან ასეთი 'სავარჯიშო':
CODE
x = 0
for k in range(1, 10):
   x += k
   print(k, ' ', x)

ზოგადად თუ სადმე რამეში ეჭვი გეპარება ჩაამატე print()-ი, ნებისმიერი რაღაცის დაბეჭდვა შეგიძლია და ეს დაგეხმარება უკეთ გაიგო თუ რა ხდება კოდში იმ კონკრეტულ მომენტში wink.gif

აბიტურიენტი
QUOTE
for i in range(1,n+1):

ჰაჰ, მე მეგონა range() მარჯვენა 'საზღვრის' ჩათვლით აბრუნებდა სიმრავლეს, თურმე სადა ბანაობ biggrin.gif up.gif

Posted by: Lilith 14 Nov 2017, 07:19
ვაგრძელებთ.

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

დღეს ერთ-ერთი მაგალითი ზუსტად ამას დაეთმობა. მაშ ასე:

მაგალითი #9: ფიბონაჩის რიცხვები. დავწეროთ პროგრამა, რომელიც დაგვიბეჭდავს რიგით მე-n ფიბონაჩის რიცხვს. შეგახსენებთ, რომ თითოეული შემდეგი რიცხვი ფიბონაჩის მწკრივებში არის წინა ორი რიცხვის ჯამის ტოლი.

მაშ ასე, პირველი ვარიანტი არის უბრალოდ, ჩვეულებრივი ამოხსნა:
CODE
print('გთხოვთ შეიყვანოთ ნებისმიერი ნატურალური რიცხვი:')
while True:
   try:
       n = int(input('n = '))

       a = 1
       b = 1
       s = 1
       for k in range(3, n+1):
           s = a + b
           a = b
           b = s
           pass

       print('ფიბონაჩის მწკრივის მე-n წევრის მნიშვნელობა არის ', s)

       if input('გნებავთ ახალი რიცხვის შეყვანა?(Y/N):').upper() == 'N':
           break
   except ValueError:
       print('გთხოვთ შეიყვანოთ მხოლოდ ნატურალური რიცხვი!')


პირველ რამოდენიმე ხაზს აღარ გავარჩევ, ვინაიდან წინა მაგალითებში უკვე ბევრჯერ გავარჩიეთ, თუ ვინმესთვის რაიმე მომენტია გაუგებარი არ მოგერიდოთ, მკითხეთ:
CODE
       a = 1
       b = 1
       s = 1

a და b არის ჩვენი ფიბონაჩის მწკვრივის პირველი ორი წევრი. s არის უბრალოდ დამხმარე ცვლადი, რომელშიც შემდგომ დროებით ვინახავთ a-ს და b-ს ჯამს
CODE
       for k in range(3, n+1):

ანუ, ვინაიდან პირველი ორი წევრის მნიშვნელობები გვაქვს, ამიტომ ციკლი გვჭირდება უკვე შემდეგი, ანუ მესამე წევრიდან დაწყებული n-მდე ყველა წევრის მნიშვნელობის დასათვლელად. ვინაიდან range() ფუნქცია მარჯვენა ზღვარს არ თვლის, ამიტომ n-ის მნიშვნელობის მისაღწევად ფაქტიურად ერთი დამატებითი ნაბიჯი სჭირდება. ამისათვის ვიყენებთ n+1 და არა n-ის მნიშვნელობას მარჯვენა ზღვრის დასადგენად.
CODE
           s = a + b
           a = b
           b = s

s-ში ვითვლით a და b-ს ჯამს, ანუ მწკვრივის შემდეგი წევრის მნიშვნელობას. ამის შემდეგ უნდა მოვახდინოთ ერთი ნაბიჯით წინ წაჩოჩება, ამისათვის a-ს (პირობითად პირველ წევრს) ვანიჭებთ შემდეგი წევრის, b-ს მნიშვნელობას. ხოლო b-ს (პირობითად მეორე წევრს) ვანიჭებთ ახლად დათვლილი შემდეგი (პირობითად მესამე) წევრის მნიშვნელობას - s-ს. და ა.შ., სანამ ჩვენი ციკლი არ შესრულდება რამდენჯერაც საჭიროა, და ჩვენი 'მთვლელი' k არ გაუტოლდება n-ის მნიშვნელობას. როგორც კი ეს მოხდება ჩვენი ციკლი დასრულდება და s-ში გვექნება რიგით მე-n წევრის მნიშვნელობა რომელსაც დავბეჭდავთ print() ბრძანების საშუალებით.

იგივე ამოხსნა, ოღონდ პითონის გამორჩეული სინტაქსის გამოყენებით შემდეგნაირად გამოიყენება:
CODE
print('გთხოვთ შეიყვანოთ ნებისმიერი ნატურალური რიცხვი:')
while True:
   try:
       n = int(input('n = '))

       a, b = 1, 1
       for k in range(3, n+1):
           a, b = b, a+b
           pass

       print('ფიბონაჩის მწკრივის მე-n წევრის მნიშვნელობა არის ', b)

       if input('გნებავთ ახალი რიცხვის შეყვანა?(Y/N):').upper() == 'N':
           break
   except ValueError:
       print('გთხოვთ შეიყვანოთ მხოლოდ ნატურალური რიცხვი!')


CODE
       a, b = 1, 1

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

CODE
       a, b = b, a+b

არსებითი მომენტია, რომ b-ს მნიშვნელობის დათვლისას გამოყენებული იქნება a-ს მნიშვნელობა შესაბამისი ახალი მნიშვნელობის მინიჭებამდე. ანუ თუკი a=1 და b=2, ზემოთაღნიშნული ოპერაცია შემდეგნაირად გამოიყურება: a, b = 2, 1+2.მიუხედავად იმისა, რომ a-ს მნიშვნელობა თითქოსდა უფრო ადრე უნდა შეიცვალოს, ეს ასე არ ხდება - a-ს შეცვლამდე არსებული მნიშვნელობა იქნება გამოყენებული.

გარდა იმისა, რომ კოდი ზომაში არსებითად შეგვიმცირდა, ასევე აღარ დაგვჭირდა დამატებითი (s) ცვლადის გამოყენება.

პითონის უპირატესობა არის მისი სიმარტივი აწარმოოს ისეთი დათვლები, რომლებიც სცდება სხვა ენებში არითმეტიკული ოპერაციების სტანდარტულ ლიმიტებს. მაგალითისათვის შეგიძლიათ ამავე რამოდენიმე ხაზიანი პროგრამის საშუალებით დაითვალოთ ფიბონაჩის მწკვრივის მე-100, მე-1000, მე-10000 წევრის მნიშვნელობა. ჩემს i3 პროცესორიან ლეპტოპზე მე-1000000 წევრის გამოთვლას დაახლოებით 20 წამი მოუნდა.

Posted by: billy*jack 12 Dec 2017, 23:53
Lilith

გავაცოხლოთ თემა sad.gif

სავარჯიშო :

დაწერე პროგრამა რომელიც გამეორებით კითხულობს ციფრებს, სანამ მომხმარებელი არ შეიყვანს "done” - ს. როცა კი ამას იზამს, ამობეჭდოს ჯამი, ციფრების რაოდენობა და ციფრების საშუალო რიცხვი. მომხმარებელი ციფრის გარდა სხვა რამეს თუ შეიყვანს, აღმოაჩინოს ეს შეცდომა try და except - ით, ამობეჭდოს შეცდომის მესიჯი და გადახტეს სხვა ციფრზე.

როგორ გააკეთებდი ?

Posted by: Lilith 13 Dec 2017, 03:32
billy*jack
მადლობა თემის გამოცოცხლებისთვის. კარგი სავარჯიშოა, ახალ რაღაცეებსაც ეხება, რასაც სიმართლე გითხრა არ ვიცოდი რომელი მხრიდან მივდგომოდი.


ანუ სანამ უშუალოდ კოდზე გადავალთ, გავაანალიზოთ რა გვაქვს გასაკეთებელი:

ნაბიჯი #1: წავიკითხოთ მომხმარებლის შეყვანილი მნიშვნელობა
ნაბიჯი #2: თუ ეს მნიშვნელობა არის 'done', გავაგრძელოთ პროგრამა ნაბიჯი #4-დან
ნაბიჯი #3: შევინახოთ ეს მნიშვნელობა სხვა დანარჩენ მნიშვნელობებთან ერთად სიმრავლეში და დავუბრუნდეთ ნაბიჯი #1-ს
ნაბიჯი #4: რიგრიგობით ავიღოთ და გავაანალიზოთ მნიშვნელობები შენახული სიმრავლიდან
ნაბიჯი #5: თუ მნიშვნელობა არ არის რიცხვი, დავაფიქსიროთ შეცდომა, დავბეჭდოთ ეს მნიშვნელობა და დავუბრუნდეთ ნაბიჯი #4-ს
ნაბიჯი #6: დავამატოთ მნიშვნელობა საერთო ჯამს, გავზარდოთ საერთო მთვლელი 1-ით, დავუბრუნდეთ ნაბიჯი #4-ს
ნაბიჯი #7: დავბეჭდოთ ჯამი, საერთო რაოდენობა, საშუალოს მნიშვნელობა

ამოცანის ასეთ ნაბიჯებად დაყოფა ამარტივებს საერთო სურათს. ნათლად ჩანს სად რა გვაქ გასაკეთებელი. თუკი რომელიმე ქმედებას ვერ აღწერთ, ე.ი. საჭიროა მისი კიდევ უფრო მარტივ ეტაპებად დაყოფა.

ეხლა რაც შეეხება კოდს:
CODE
numbers = []                                                                # 1

x = input('გთხოვთ შეიყვანოთ რიცხვითი მნიშვნელობა ან "done":')
while x != 'done':
   numbers.append(x)                                                       # 2
   x = input('გთხოვთ შეიყვანოთ რიცხვითი მნიშვნელობა ან "done":')
   pass

print('თქვენ შეიყვანეთ შემდეგი მნიშვნელობები: ', numbers)

s = 0
k = 0
for n in numbers:                                                           # 3
   try:
       int_n = int(n)
       s += int_n
       k += 1
   except ValueError:
       print(n, ' არ არის რიცხვითი მნიშვნელობა!')
   pass

print('სულ შეყვანილია ', k, ' რიცხვითი მნიშვნელობა')                        # 4
print('საერთო ჯამი = ', s)
print('საშუალო არითმეტიკული = ', s / k)


# 1 - numbers = [] - ესეთი ჩანაწერით პითონს ვატყობინებთ, რომ numbers ცვლადში ჩვენ გვინდა გარკვეული მონაცემების სიმრავლის შენახვა. პითონს აქვს რამოდენიმე სხვადასხვა საშუალება/მიდგომა სიმრავლეებთან სამუშაოდ. კონკრეტულად ამ ამოცანაში ჩვენ ვიყენებთ ყველაზე მარტივ და ალბათ ყველაზე გავრცელებულ სიმრავლეს, ე.წ. სიას (list). '[]' ცარიელი სიის აღმნიშვნელი ჩანაწერია. მაგალითად შეგვეძლო ჩაგვეწერა numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] და მაშინ გვექნებოდა 0-დან 10-მდე ყველა რიცხვისგან შემდგარი სიმრავლე/სია.

# 2-ში append() ფუნქციის გამოყენებით ვახდენთ მომხმარებლისგან მიღებული მნიშვნელობის სიაში დამატებას. [].append(1) = [1], [1].append(2) = [1, 2] და ა.შ. პირველი while ციკლის შემდეგ print ფუნქციის მეშვეობით ვბეჭდავთ პირველად სიას ყველა იმ მნიშვნელობისა, რაც მომხმარებელმა (ანუ ჩვენ) შევიყვანეთ პროგრამაში.

# 3-ში უკვე for ციკლის გამოყენებით 'გადავურბენთ' ყველა მნიშვნელობას ჩვენს შენახულ სიაში. ძალიან მარტივი ჩანაწერია, ინგლისურიდან პირდაპირ ითარგმნება როგორც numbers სიმრავლეში ყოველი n-ისთვის შეასრულე შემდეგი კოდი. და n-ში პითონი მოგვაწვდის თითოეულ მნიშვნელობას ამ სიმრავლიდან. უკვე ამის შემდეგ ჩვენ ვცდილობთ დავადგინოთ n არის თუ არა რიცხვითი მნიშვნელობა მისი int-ში გარდაქმნით. თუ მოხდა შეცდომა, ე.ი. არ არის რიცხვითი მნიშვნელობა და შესაბამისად დავბეჭდავთ ეკრანზე როგორც შეცდომას. თუ არ მოხდა შეცდომა, მაშინ დავამატებთ საერთო ჯამს და ჩვენს რიცხვით მთვლელ k-ს ერთით გავზრდით.

როდესაც ყველა მნიშვნელობას გადავარჩევთ უკვე ბოლოში print-ებით დაიბეჭდება რიცხვითი მნიშვნელობების საერთო რაოდენობა, ჯამი და საშუალო არითმეტიკულის მნიშვნელობა.

Posted by: billy*jack 14 Dec 2017, 22:13
Lilith

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

მარტივად მოაგვარებ, მაგრამ მე სხვა პრობლემა მაქ..

ეს უნდა ამოვხსნა მხოლოდ while,try,break,continue საშუალებით.. აპპენდი ჯერ არ მისწავლია sad.gif

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

CODE
n = int(input('enter a number: '))
while True:
   try:
       n = int(input('enter a number: '))
       continue
       if n == 'done' :
        break
       print ('Done!', 'sumn, total, average')
   except:
       print ('Invalid input')
       


რიცხვები შემყავს, ახალს მთხოვს, სტრინგის შეყვანისას invalid input-საც ,

მაგრამ "done" როცა შემყავს

CODE
print ('Done!', 'sumn, total, average')
ამას არ აგდებს და რატო ვერ მივხვდი

sum , total, average -ს ყურადღება არ მიაქციო ამ კოდში როგორც სტრინგს ისე ვბეჭდავ..

მაგათ რეალურ მნიშვნელობებზე მერე ვიმუშავებ.. ჯერ ეს ნაწილი მოვაგვარო biggrin.gif

Posted by: zingera 15 Dec 2017, 20:37
+++++++++++++++++++++++++++++++++++++++

Posted by: iraklikairakli 20 Dec 2017, 19:43
სალამი ბიჭებო smile.gif) იმედია ეს თემა "მკვდარი არაა" მეც დამწყები ვარ პითონში და თქვენც გვერდით ვარ smile.gif მთავარია თემა არ მოვკლათ

Posted by: ჩაქუჩი 3 Jan 2018, 10:25
მეგობრებო , თქვენი დახმარება მჭირდება.
მოკლედ მაქვს რაღაც ცვლადი , რომელიც იღებს მთელ რიცხვით მნიშვნელობებს . მე მინდა რომ დავაჯამო ყველა რიცხვი , რომელსაც მიიღებს ცვლადი 0 მნიშვნელობამდე .
ანუ , თუ მაგალითად მაქვს :
QUOTE
9,5,1,2,0
მინდა მივიღო 17 .

ვწერ შემდეგნაირად :
QUOTE
sum = 0
while int(input()) != 0:
          sum +=  int(input())
print (sum)

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

Posted by: INGATO 3 Jan 2018, 16:21
ჩაქუჩი

აბა ეს ნახე მეც დამწყებივარ მთალდ სასახელო კოდი ვერ გამომივიდა


user posted image

Posted by: ჩაქუჩი 3 Jan 2018, 16:45
INGATO
მეც ესე დავწერე სანამ ამ პოსტს ვნახავდი , როგორც ჩანს ცვლადი ციკლის შიგნით უნდა გამომეცხადებინა . up.gif

Posted by: user8855 4 Jan 2018, 10:51
რამე კურსი არაფერი იცით საქართველოში, python-ის?

Posted by: Definitely_Maybe 4 Jan 2018, 12:22
დავფიქსირდები..................

Posted by: yurmetal 4 Jan 2018, 12:24
ვუერთდები ამ თემას!!!

PHP'დან მინდა გადმოვიდე smile.gif

Posted by: ჩაქუჩი 4 Jan 2018, 12:56
yurmetal
Definitely_Maybe
user8855
INGATO
ამ https://snakify.org/ გადახედეთ . არის თეორია + უამრავი თასქი/თავსატეხი , რომლებიც იუთუბის ვიდეოტუტორიალებზე ბევრად ეფექტურია ჩემი აზრით . კურსი მოიცავს ძალიან ელემენტარულ საბაზისო ოპერაციებს , თუმცა საკმაოდ ჩადის სიღრმეებში , დასაწყისისთვის სწორედ ეს არის საჭირო .
აქ დავდოთ ხოლმე თასქები სადაც გავიჭედებით . ერთმანეთს ვასწავლოთ და ერთმანეთისგან ვისწავლოთ .
მოკლედ მოვქოქოთ ეს თემა vik.gif

Posted by: billy*jack 4 Jan 2018, 13:16
საღოლ,

ვიაქტიუროთ შეძლებისდაგვარად lam.gif

Posted by: user8855 5 Jan 2018, 10:51
ვინმე მცოდნემ კურსი გააკეთეთ რა

Posted by: testselenium 5 Jan 2018, 13:25
ტინგ გოუს სკრრრრრრრაჰ, (ტესტ ბოტ)

Posted by: mettalmag 5 Jan 2018, 14:08
სად შეიძლება ვიპოვო ვინმე ვინც იცის პითონი და შეასრულებს დავალებას და მიიღებს ამაში ფულს?!

Posted by: user8855 5 Jan 2018, 15:05
mettalmag
მე მყავს ნაცნობი და რა მიმართულებით იქნება დავალება?

Posted by: Lilith 5 Jan 2018, 20:19
ჩაქუჩი
up.gif ვაა, ეგ კარგი საიტია ნამდვილად. კარგს იზავთ მართლა თუ ცოტა უფრო მეტად იაქტიურებთ, მეც ნელნელა შემოგეშველებით, ეს ბოლო პერიოდი საერთოდ ვერ მოვიცალე, მაგრამ ეხლა ისევ მაქვს დრო და დავდებ ხოლმე სხვადასხვა მასალას.


billy*jack
CODE

n = int(input('enter a number: '))
while True:
   try:
       n = int(input('enter a number: '))
       continue
       if n == 'done' :
        break
       print ('Done!', 'sumn, total, average')
   except:
       print ('Invalid input')



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


ერთი კარგი და ჩემი ალბათ უსაყვარლესი ფუნქცია მსურს განვიხილოთ დღეს. ეს არის ე.წ. შემთხვევითი რიცხვების გენერატორი - random.

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

მოდულის კოდში გამოსაყენებლად გამოიყენება ბრძანება import.

კოდის მაგალითი და შემდეგ უკვე გავარჩიოთ რა რას აკეთებს:
CODE
import random

print(random.randint(0, 100000))


ანუ როგორც ხედავთ პირველი სტრიქონი გვაძლევს საშუალებას გამოვიყენოთ random მოდულში თავმოყრილი ფუნქციები. ფუნქციის გამოსაძახებლად ვწერთ ჯერ მოდულის სახელს და წერტილის შემდეგ საჭირო ფუნქციის დასახელებას. ჩვენს შემთხვევაში გამოვიყენეთ randint(a, b) ფუნქცია, რომელიც [a, b] დიაპაზონში გვიბრუნებს შემთხვევით მთელ რიცხვს. ანუ პროგრამის ყოველ გაშვებაზე კოდი დაგვიბეჭდავს სხვადასხვა რიცხვებს 0-სა და 100000-ს შორის.

ერთი ორი სიტყვა კვლავ import-ზე. თუკი ჩვენ გვჭირდება მხოლოდ ერთი ფუნქცია გარკვეული მოდულიდან, შეგვიძლია დავაიმპორტოთ მხოლოდ ეს ფუნქცია და ამ შემთხვევაში აღარ დაგვჭირდება ყოველ ჯერზე მოდულის დასახელების დაწერა ფუნქციის გამოსაძახებლად, მაგალითი:

CODE
from random import randint

print(randint(0, 100000))

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

კიდევ ერთი მარტივი მაგალითი, პროგრამა აგენერირებს შემთხვევით რიცხვებს 0-დან 100000-მდე დიაპაზონში და ბეჭდავს მიღებულ რიცხვებს. როგორც კი მიღებული რიცხვი ჩამოსცდება 10000-ს, პროგრამა დაასრულებს მუშაობას:
CODE
from random import randint

x = randint(0, 100000)
print(x)
while x > 10000:
   x = randint(0, 100000)
   print(x)

Posted by: ჩაქუჩი 5 Jan 2018, 22:28
Lilith
QUOTE
კარგს იზავთ მართლა თუ ცოტა უფრო მეტად იაქტიურებთ, მეც ნელნელა შემოგეშველებით, ეს ბოლო პერიოდი საერთოდ ვერ მოვიცალე, მაგრამ ეხლა ისევ მაქვს დრო და დავდებ ხოლმე სხვადასხვა მასალას.

up.gif
ძალიან კარგი იქნება თუ დაგვეხმარები .
აქვე დავდებ ჩემს პატარა ამოცანას .
მოკლედ მაქვს ცვლადი და წინასწარ მოცემული დადებითი მთელი რიცხვები , რომლებსაც ცვლადი მიიღებს რიგ-რიგობით . პირობითად ეს რიცხვები იყოს
QUOTE
1 , 7 , 9 , 0
რიცხვთა მიმდევრობა ყოველთვის მთავრდება 0 - ით .
ამოცანის პირობა მდგომარეობს შემდეგში : უნდა ვიპოვოთ უდიდესი რიცხვის ინდექსი , ანუ მისი რიგითობა მიმდევრობაში . ჩვენს შემთხვევაში 9 - ის ინდექსი არის 2 .
ვწერ შემდეგნაირად :
CODE
max = 0
element = -1
while element != 0 :
   element = int(input())
   if element > max:
       max = element
print(max)
# ჯერ ვიპოვე უდიდესი რიცხვი

ind = -1
while element != max :
   ind += 1
   element = int(input()) # როცა ციკლი აქ მიდის ,  რაღაც (EOFError)   ერორს მიგდებს  
print (ind)    


Posted by: iraklikairakli 7 Jan 2018, 00:10
ვავა რაკარგიაა გილოცავთ შობას უფლის მადლი არ მოგკლებოდეთ <3

Posted by: execution 7 Jan 2018, 00:19
ჩაქუჩი
წესით ცარიელ input ს თუ აძლევ მაგ დროს აგდებს EOF error ს

Posted by: ჩაქუჩი 8 Jan 2018, 09:55
execution
QUOTE
წესით ცარიელ input ს თუ აძლევ მაგ დროს აგდებს EOF error ს

ნამდვილად . როგორც მივხვდი, თვითონ საიტი რომელზე მაგ ამოცანას ვაკეთებ , არ ატრიალებს რიცხვებს მეორე ციკლში .
ამოცანა ერთი ციკლით იხსნება , მეორე არც არის საჭირო .
CODE
max = 0
element = -1
ind = -1
len = 1
while element != 0:
   element = int(input())
   if element > max:
       max = element
       ind = len
   len += 1  
print(ind)

Posted by: iraklikairakli 8 Jan 2018, 13:35
ბიჭებო მაქ ლისტი რაღაცა ხ=("სდსდსდს,სდსდსდსდსდსადა")
ამას ვსპლიტავ და რანდომით ვიღებ სიტყვებს და ისე როგორ ვქნა რომ მომხმარებეკმა შეიყვანოს რამდენი სიტყვის დაბეჭდა სურს?

* * *
QUOTE (iraklikairakli @ 8 Jan 2018, 13:35 )
ბიჭებო მაქ ლისტი რაღაცა ხ=("სდსდსდს,სდსდსდსდსდსადა")
ამას ვსპლიტავ და რანდომით ვიღებ სიტყვებს და ისე როგორ ვქნა რომ მომხმარებეკმა შეიყვანოს რამდენი სიტყვის დაბეჭდა სურს?

ვქენი ვისაც გინდათ
import random
x=("i am from georiga")
y=(x.split)()
k = input("რამდენ სიტყვიანი გინდათ? -")
for i in range(0,int(k)):
leqsi=y[1]
print(random.choice(y))

Posted by: hermes555 8 Jan 2018, 14:50
Python 3.6 ვერსიაზე ვერაფრით დავწერე ქართულად, გამოდის როგორც კითხვის ნიშნები. UTF-8-ს მხარდაჭერა როგორაა პითონში? რუსული იწერება ჩვეულებრივად.

გთხოვთ დამეხმაროთ.

კონკრეტულად tkinter entry იხილეთ სურათი

წინასწარ მადლობა

Posted by: ჩაქუჩი 21 Jan 2018, 18:36
პატარა სავარჯიშო თემის გაცოცხლებისთვის :
user posted image
გვაქვს ჭადრაკის ფიგურა - დედოფალი (ვინც არ იცით მისი მოძრაობები მწვანე ისრებს დააკვირდით) და მისი კოორდინატები დაფაზე , სურათის მიხედვით - (5:5), (a b c...-ს ნაცვლად წარმოიდგინეთ 1 2 3 და ა.შ.)
ვთქვათ მოცემულია ორი უჯრის კოორდინატები , რომლიდანაც პირველზე ზის დედოფალი , ხოლო მეორე უჯრა აღებულია შემთხვევით .
ჩვენი მიზანია გავიგოთ შეუძლია თუ არა დედოფალს პირველი უჯრიდან მეორეზე ერთი სვლით გადაადგილება , თუ შეუძლია დაპრინტეთ - 'YES' თუ არა - 'NO' .
პირველი უჯრის კოორდინატებია x1 , y1 , ხოლო მეორე უჯრის x2 , y2 .
Lilith
რეკურსიულ ფუნქციებზე რას გვეტყვი ? რაიმე მაგალითის მოყვანა თუ შეგიძლია , სადაც რეკურსიის გზით ამოხსნა for/while - ზე უმჯობესია?

Posted by: ჩანიძე 21 Jan 2018, 20:27
CODE
if(x1 == x2 or y1 == y2 or (x2-x1) == (y2-y1)):
   print("YES")
else:
   print("NO")

Posted by: ჩაქუჩი 21 Jan 2018, 23:51
ჩანიძე
up.gif
ისე დამაჯერებლად ამოხსენი , ცოტა გავართულოთ .
მოცემულია ცვლადი x , რომელიც იღებს მთელი რიცხვით მნიშვნელობებს .
უნდა დაადგინო არის თუ არა ეს რიცხვი ფიბონაჩის მიმდევრობიდან და თუ არის , დაპრინტე მისი ინდექსი , ხოლო თუ არ არის - 'NO' .
ფიბონაჩის მიმდევრობას აქვს შემდეგი სახე :
user posted image

მარტივად გამოითვლება - user posted image
9 -ის ფიბონაჩის რიცხვი არის 34 , 13 -ის 233 და ა.შ.
ანუ თუ ვთქვათ x == 610 , უნდა დაპრინტო '15' .
აბა მიდი idea.gif
ციკლის ოპერატორი დაგჭირდება wink.gif .

Posted by: ჩანიძე 22 Jan 2018, 00:26
CODE
n = int(input())
counter = 0;
fib0 = 0;
fib1 = 1;
while(fib0 < n):
 fibNext = fib0 + fib1;
 fib0 = fib1;
 fib1 = fibNext;
 counter += 1;

if fib0 == n:
 print("YES")
 print(counter)
else:
 print("NO")

Posted by: ჩაქუჩი 22 Jan 2018, 10:52
ჩანიძე
სწორია up.gif .

CODE
 fibNext = fib0 + fib1;
 fib0 = fib1;
 fib1 = fibNext;

ამის ნაცვლად შეგეძლო პირდაპირ დაგეწერა :
CODE
 fib0,fib1 = fib1 , fib0 + fib1;

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

შემდეგი ამოცანა :
გვაქვს მთელ რიცხვთა მიმდევრობა , რომელიც აუცილებლად მთავრდება 0-ით .
პირობითად ეს რიცხვები იყოს :
CODE
1
2
1
1
1
2
3
3
0

დაპრინტე მაქსიმალურად რაოდენობა , როცა ერთი და იგივე რიცხვი მეორდება მიყოლებით .
ანუ ჩვენს შემთხვევაში რიცხვი - 1 მიყოლებით მეორდება 3 - ჯერ და უნდა დაპრინტო 3 .

Posted by: ჩანიძე 22 Jan 2018, 10:59
QUOTE (ჩაქუჩი @ 22 Jan 2018, 10:52 )
ჩანიძე
სწორია up.gif .

CODE
 fibNext = fib0 + fib1;
 fib0 = fib1;
 fib1 = fibNext;

ამის ნაცვლად შეგეძლო პირდაპირ დაგეწერა :
CODE
 fib0,fib1 = fib1 , fib0 + fib1;

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


გავითვალისწინებ
ახლა ჯავას ვსწავლობ და ამოცანების პონტში შემოვიხედე
პითონის სინტაქსი კიდე უცებ მოვძებნე გუგლში lol.gif
ამასაც გავაკეთებ ლექციის მერე
* * *
user.gif
CODE
counter = 1
longest = 0
prev = 0

while(True):
   n = int(input())
   
   if (n == 0): break
   
   if (prev == n):
       counter+=1
   else:
       if(counter > longest):
           longest = counter
           counter = 1
   prev = n
   
print(longest)

* * *
ქაუნთერი ერთის ტოლი ელსის იფს გარეთ უნდა გახდეს ვგონებ ;დ

Posted by: ჩაქუჩი 23 Jan 2018, 00:07
ჩანიძე
მშვენიერი მცდელობაა , რაც მთავარია სწორი მიმართულებით წახვედი .
პატარა ჩასწორებები და მივიღებთ მუშა კოდს .
დავიწყოთ .
CODE
while(True):
  n = int(input())
 
  if (n == 0): break

ნაცვლად ზემოთ დაწერილისა , უნდა დავწეროთ :
CODE
while n != 0 :

შენს მიერ დაწერილი კოდის თანახმად , როცა n == 0 ციკლი ჩერდება , შესაბამისად აღარ სრულდება მის ქვემოთ მოცემული კოდი , მათ შორის კოდის ის ნაწილი , რომელიც counter - ს უტოლებს longest - ს .
ანუ თუ ვთქვათ გვექნება მიმდევრობა :
QUOTE
1
4
4
4
2
6
6
6
6
6
0

შენი კოდით დაიპრინტება 3 და არა 5 .

QUOTE
ქაუნთერი ერთის ტოლი ელსის იფს გარეთ უნდა გახდეს ვგონებ ;დ

ნამდვილად .
მოკლედ მივიღებთ :
CODE
counter = 1
longest = 0
prev = 0
n = -1 #  n გავუტოლე 0 - სგან განსხვავებულ რიცხვს, უბრალოდ იმის გამო რომ ციკლი დაიწყოს .

while n != 0:
  n = int(input())
  if (prev == n):
      counter+=1
  else:
      if counter > longest :
          longest = counter
      counter = 1
  prev = n
 
print(longest)



Posted by: Irakli2013 28 Jan 2018, 21:35
QUOTE (ჩაქუჩი @ 21 Jan 2018, 23:51 )
ჩანიძე
up.gif
ისე დამაჯერებლად ამოხსენი , ცოტა გავართულოთ .
მოცემულია ცვლადი x , რომელიც იღებს მთელი რიცხვით მნიშვნელობებს .
უნდა დაადგინო არის თუ არა ეს რიცხვი ფიბონაჩის მიმდევრობიდან და თუ არის , დაპრინტე მისი ინდექსი , ხოლო თუ არ არის - 'NO' .
ფიბონაჩის მიმდევრობას აქვს შემდეგი სახე :
user posted image

მარტივად გამოითვლება - user posted image
9 -ის ფიბონაჩის რიცხვი არის 34 , 13 -ის 233 და ა.შ.
ანუ თუ ვთქვათ x == 610 , უნდა დაპრინტო '15' .
აბა მიდი idea.gif
ციკლის ოპერატორი დაგჭირდება wink.gif .

რეკურსიით კეთდება ეს biggrin.gif

Posted by: ჩაქუჩი 28 Jan 2018, 23:08
Irakli2013
ციკლით ამოხსნილს რა დაუწუნე ? spy.gif

Posted by: user8855 31 Jan 2018, 17:29
Lilith

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

Posted by: INGATO 31 Jan 2018, 17:36
QUOTE (user8855 @ 31 Jan 2018, 17:29 )

არ არის საქართველოში პითონის კურსი და სწავლის მსურველი ბევრია

კურსი არ ვიცი მაგრამ ჩემს უნივერსიტეტში ასწავლიან პირველივე წილიდან პითონს.

Posted by: Irakli2013 31 Jan 2018, 20:21
ჩაქუჩი
QUOTE
ციკლით ამოხსნილს რა დაუწუნე ? 


არაფერი biggrin.gif უბრალოდ ფიბონაჩის რიცხვის გამოთვლას იყენებენ მაგალითად რეკურსიას რომ ასწავლიან

Posted by: ჩაქუჩი 31 Jan 2018, 21:41
user8855
რა კურსი გინდა , ადექი და დაიწყე სწავლა შენით . თუ მაინცდამაინც ფული გინდა იხადო ?

პატარა ამოცანა პითონცი :
გვაქვს ინგლისურ-ლათინური ლექსიკონი , ჩვენი მიზანია შევქმნათ ლათინურ-ინგლისური ლექსიკონი.
ანუ , თუ პირობითად გვაქვს :
QUOTE
greet - empfangen, willkommen
silicon - silicon
welcome - willkommen


უნდა მივიღოთ :
QUOTE
empfangen - greet
silicon - silicon
willkommen - greet, welcome

Posted by: Lilith 1 Feb 2018, 00:20
ჩაქუჩი
პირველ რიგში მადლობა იმისათვის რომ თემას პერიოდულად აცოცხლებ up.gif როგორც თავიდანვე დავწერე, პერიოდულად როცა საქმეები მიგროვდება იმდენ ყურადღებას ვეღარ ვუთმობ ხოლმე, მაგრამ როგორც კი თავისუფალი დრო გამოჩნდება ვეცდები მეტი და მეტი მასალა დავდო.

user8855
QUOTE
კურსი გააკეთე რა და მოვდივარ
* * *
რომელიმე სასწავლო ცენტრში თუ დაგითმობენ დროს და აუდიტორიას, შეიკრიბება ხალხი დარწმუნებული ვარ.
არ არის საქართველოში პითონის კურსი და სწავლის მსურველი ბევრია

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

ტაკს, გადავედით უშუალოდ საქმეზე:
QUOTE
რეკურსიულ ფუნქციებზე რას გვეტყვი ? რაიმე მაგალითის მოყვანა თუ შეგიძლია , სადაც რეკურსიის გზით ამოხსნა for/while - ზე უმჯობესია?

მოკლედ, ჯერ ძალიან მარტივ მაგალითს დავდებ, სადაც ორივე გზას განვიხილავთ, და შემდეგ უკვე ისეთ ამოცანას, რომელიც რეკურსიულად იხსნება.

1-დან N-მდე რიცხვების ჯამი/ფაქტორიალი:
CODE
def sum_of_n(n):                                                # არა-რეკურსიული ჯამი
   return sum([a for a in range(n+1)])


def sum_of_n_r(n):                                              # რეკურსიული ჯამი
   if n == 1:
       return 1
   else:
       return sum_of_n_r(n-1)+n
   pass


def factorial_of_n(n):                                          # არა-რეკურსიული ფაქტორიალი
   x = 1
   for a in range(1, n+1):
       x *= a
   return x


def factorial_of_n_r(n):                                        # რეკურსიული ფაქტორიალი
   if n == 1:
       return 1
   else:
       return factorial_of_n_r(n-1)*n
   pass


print('ჯამი:', sum_of_n(100))
print('ფაქტორიალი:', factorial_of_n(100))
print('რეკურსიული ჯამი:', sum_of_n_r(100))
print('რეკურსიული ფაქტორიალი:', factorial_of_n_r(100))


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

ხანოის კოშკები არის კლასიკური ამოცანა, რომელიც იხსნება რეკურსიის გამოყენებით (იხ. სურათი):
user posted image

გვაქვს სამი ღერძი. ერთერთზე ჩამოცმულია სხვადასხვა ზომის N ცალი რგოლი, რომლებიც ერთმანეთზე ზომის მიხედვით ისეა დალაგებული, რომ ნებისმიერ რგოლს ზემოდან მასზე მცირე ზომის რგოლი ადევს.

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

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

ამოცანა მდგომარეობს შემდეგში - სვლების რა მინიმალური რაოდენობაა საჭირო მთლიანი პირამიდის A ღერძიდან B ღერძზე გადასატანად?

სიმარტივისთვის ავიღოთ ის შემთხვევა როდესაც გვაქვს მხოლოდ 3 რგოლი და ზომების მიხედვით დავარქვათ პირობითად 1, 2 და 3.

მაშინ პირვანდელი მდგომარეობა შემდეგნაირად გამოიყურება:
a=[3, 2, 1] - ანუ რგოლები ერთმანეთზე დალაგებულია მარცხნიდან მარჯვნივ მიმდევრობით. სულ პირველი დევს 3-იანი, მას ზემოდან ადევს 2-იანი და ბოლოს 1-იანი.
b=[]
c=[]

პირველ სვლაზე ავიღეთ 1-იანი და გადავიტანეთ b ღერძზე, მივიღეთ:
a=[3, 2]
b=[1]
c=[]

მეორე სვლაზე ავიღეთ 2-იანი და გადავიტანეთ c-ზე:
a=[3]
b=[1]
c=[2]

#3 - 1-იანი ავიღეთ b-დან და გადავიტანეთ c-ზე:
a=[3]
b=[]
c=[2, 1]

#4 - 3-იანი გადავიტანეთ b-ზე:
a=[]
b=[3]
c=[2, 1]

#5 - 1-იანი გადავიტანეთ a-ზე:
a=[1]
b=[3]
c=[2]

#6 - 2-იანი გადაგვაქ b-ზე:
a=[1]
b=[3, 2]
c=[]

#7 - 1-იანი გადაგვაქ b-ზე:
a=[]
b=[3, 2, 1]
c=[]

როგორც ვხედავთ დაგვჭირდა 7 სვლა იმისათვის, რომ 3 რგოლი A ღერძიდან B ღერძზე გადაგვეტანა.

რაც შეეხება ამოხსნას, ვიდრე უშუალოდ კოდს შევეხებოდეთ ჯერ გავარჩიოთ როგორ ვხსნით ამ ამოცანას თეორიულად. დედუქციის დახმარებით შეგვიძლია ვთქვათ შემდეგი - თუკი ჩვენ მოვახერხეთ სულ ქვედა, ყველაზე დიდი რგოლის გარდა ყველა სხვა დანარჩენი რგოლის გადატანა ე.წ. "დამხმარე" ღერძზე (ანუ თუკი A-დან B-ზე უნდა გადავიტანოთ, ამ შემთხვევაში C ღერძი არის დამხმარე), მაშინ ჩვენ შეგვიძლია ეს ყველაზე დიდი რგოლი გადავიტანოთ დანიშნულების ღერძზე და ჩემდეგ დამხმარე ღერძიდან იგივე მოქმედებით გადმოვიტანოთ დანარჩენი რგოლები და დავადოთ ამ დიდ რგოლს.

რეკურსია ამ შემთხვევაში გამოიყენება სწორედ რომ იმ ზედა რგოლების დამხმარე ღერძზე და შემდეგ დანიშნულების ღერძზე გადასატანად. ჩვენ ვამბობთ რომ ის ზედა რგოლები ჩვენთვის იგივე პირამიდაა და დამხმარე ღერძი არის სინამდვილეში დანიშნულების ღერძი, და ფაქტიურად გვაქვს იგივე ამოცანა, ოღონდ ახალი, შედარებით მარტივი მოცემულობით - თუკი მთავარ ამოცანაში გვჭირდება N რგოლის გადატანა A-დან B-ზე, ამ ახალ ამოცანაში გვჭირდება N-1 რგოლის გადატანა A-დან C-ზე.

ანუ მთავარი ამოცანა დავიდა შემდეგზე:
სვლა #1 - N-1 რგოლის გადატანა A-დან C-ზე
სვლა #2 - ბოლო, ყველაზე დიდი რგოლის გადატან B-ზე
სვლა #3 - N-1 რგოლის გადმოტანა C-დან B-ზე

თავის მხვრივ #1 და #3 ამოცანები ისევ შეგვიძლია გავამარტივოთ:
#1:
#1.1: (N-1)-1 რგოლის გადატანა A-დან B-ზე,
#1.2: (N-1)-ე რგოლის (ამ შემთხვევაში ეს რგოლია ყველაზე დიდი) გადატანა A-დან C-ზე
#1.3: (N-1)-1 რგოლის გადატანა B-დან C-ზე
შემდეგ მთავარი ამოცანის მე-2 სვლა:
#2: მე-N ყველაზე დიდი რგოლის გადატან B-ზე
და მე-3 სვლა ანალოგიურად ჩაშლილი:
#1.1: (N-1)-1 რგოლის გადატანა C-დან A-ზე,
#1.2: (N-1)-ე რგოლის (ამ შემთხვევაში ეს რგოლია ყველაზე დიდი) გადატანა C-დან B-ზე
#1.3: (N-1)-1 რგოლის გადატანა A-დან B-ზე

და დანარჩენი სვლებიც უნდა ჩაიშალოს მანამდე, სანამ ხელში არ შეგვრჩება მხოლოდ 1 რგოლი.

კოდი გამოიყურება შემდეგნაირად:
CODE
def move_tower(move, n, a, b, c):
   res = 0
   if n == 1:
       print(move, a, '-->', b)
       res += 1
   else:
       res += move_tower(move+'.1', n-1, a, c, b)
       res += move_tower(move+'.2', 1, a, b, c)
       res += move_tower(move+'.3', n-1, c, b, a)

   return res


print('სულ', move_tower('#', 3, 'A', 'B', 'C'), 'სვლა')


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

Posted by: user8855 1 Feb 2018, 11:35
ჩაქუჩი
მეზარება ბრატცი ჩემით ჩაჯდომა
თან კურსს თავისი პლიუსები აქვს, საინტერესო ხალხი შეიძლება გაიცნო
ვინმე რომ გიხსნის უფრო მოკლე დროში სწავლობ ვიდრე შენ რომ გუგლავ

Posted by: Gateways 1 Feb 2018, 15:07
Lilith
რომელია ყველაზე კარგი IDE პითონისთვის? იუპიტერს ვიყენებ ეგრევე ბრაუზერში უშვებს და რაღაც არ მომწონს.. მაუსის კლიკები მიწევს და მეზიზღება ))

Posted by: ჩაქუჩი 1 Feb 2018, 15:25
Gateways
VIM is light weight, modular and fast and is best suited for programmers who love keyboards and only keyboards, no mouse use while coding.
შენნაირებისთვის ყოფილა და ცადე wink.gif .
Lilith
ძალიან დროული იყო შენი გამოჩენა . მადლობა პირიქით შენ რო დროს გვითმობ .
მაგალითს სამსახურის მერე ჩავუჯდები wink.gif .

Posted by: Gateways 1 Feb 2018, 15:33
ჩაქუჩი
QUOTE
for programmers who love keyboards and only keyboards, no mouse use while coding. შენნაირებისთვის ყოფილა და ცადე

ნამდვილად biggrin.gif ვცდი, მადლობა smile.gif

Posted by: Dirac 2 Feb 2018, 05:45
Gateways
რათქმაუნდა emacs ჯობია vim-ს, მაგრამ მის სწავლას ერთი წელი უნდა, თავისი პროგრამირების ენა აქვს. თუ მთლად უმაოსოდ არ გინდა მუშაობა, მაშინ sublime ან atom. პითონისთვის IDE-ს გამოყენების აზრს ვერ ვხედავ. IDE ჯავაში ან C++ში სასარგებლოა, მაგრამ პითონში ფაილების ცალცალკე კომპილაცია და მათი ერთმანეთთან დაკავშირება არ გიწევს.

Posted by: t-90 2 Feb 2018, 08:08

Dirac
QUOTE
რათქმაუნდა emacs ჯობია vim-ს, მაგრამ მის სწავლას ერთი წელი უნდა, თავისი პროგრამირების ენა აქვს. თუ მთლად უმაოსოდ არ გინდა მუშაობა, მაშინ sublime ან atom. პითონისთვის IDE-ს გამოყენების აზრს ვერ ვხედავ. IDE ჯავაში ან C++ში სასარგებლოა, მაგრამ პითონში ფაილების ცალცალკე კომპილაცია და მათი ერთმანეთთან დაკავშირება არ გიწევს.

ეგ იმიტომ რომ Vim არის ტექსტ ედიტორი (სხვათაშორის ფრიად კარგი, იაფი და მოსახერხებელი თან ყველა ლინუქსზეა)
emacs კიდე არის მონსტრი biggrin.gif ჩემი ერთI მეგობარია ყველაფერს მანდ აკეთებს დაჟე იმეილების შემოწმებებით, პრეზენტაციების მომზადებით და ა.შ.


Posted by: billy*jack 3 Feb 2018, 20:11
ჩაქუჩი

CODE
dictnr = {'greet' : 'empfangen', 'silicon' : 'silicon', 'welcome' : 'willkommen'}

rvrs = {y:x for x,y in dictnr.items()}

print (rvrs)


ნაწილობრივ გავაკეთე, მაგრამ ორი მნიშვნელობა ერთად როგორ გავაკეთო ?

greet - empfangen, willkommen < აი ეს

Posted by: აბიტურიენტი 3 Feb 2018, 20:18
ადამიანი IDE-ს რომ ითხოვს ვიმი რატომ უნდა ურჩიო mo.gif

Posted by: billy*jack 3 Feb 2018, 20:21
აბიტურიენტი

pycharm როგორია ?

Posted by: აბიტურიენტი 3 Feb 2018, 20:23
billy*jack
pycharm არ ვიცი მაგრამ ჯეტბრეინსის პროდუქტი ცუდი არ იქნება user.gif

Posted by: billy*jack 3 Feb 2018, 20:42
აბიტურიენტი

რავი ვინაიდან ნოვიჩოკი ვარ ინტერფეისის სიმარტივის კუთხით თუ შევაფასებ ზოგადად IDE-ს და მგონი ნორმალურია რა..

Gateways

სცადე აბა , ყოველშემთხვევაში მაუსის პრობლემას მოგიხსნის biggrin.gif

https://www.jetbrains.com/pycharm/


Posted by: Dirac 3 Feb 2018, 21:07
აბიტურიენტი
იმიტომ რომ მაუსის გამოყენება არ უნდა. ასევე პითონში IDE-ს გამოყენება სისულელეა (სამსახურში ვიყენებ მაგრამ იქ სხვა ალტერნატივა არაა), მძიმე და არაფრისმომცემია, ბევრად უკეთესია კარგი ტექსტ ედიტორი.

Posted by: ჩაქუჩი 3 Feb 2018, 21:21
billy*jack
QUOTE
ნაწილობრივ გავაკეთე, მაგრამ ორი მნიშვნელობა ერთად როგორ გავაკეთო ?

greet - empfangen, willkommen < აი ეს

ეგ ორი მნიშვნელობა არის მთავარი .
მე ჯერ ორგანზომილებიან ლისტში შევიტანე ეგ მონაცემები და მივიღე შემდეგი :
CODE
A = [['greet', 'empfangen', 'willkommen'], ['silicon',  'silicon'], ['welcome',  'willkommen']]

მხოლოდ ამის მერე დავიწყე სიტყვების დიქშენერში შეყრა და მათი "შემობრუნება" .
დააკვირდი A[i][0] არის ინგლისური მნიშვნელობა .
ბრმად რო არ აკეთო , ეგ სავარჯიშო https://snakify.org/lessons/dictionaries_dicts/problems/english_latin_dict/ წამოვიღე . ბრაუზერშივე შეგიძლია ნახო შენი კოდი რა შედეგს გაძლევს , უფრო მოსახერხებელია .


Posted by: Lilith 3 Feb 2018, 21:32
Dirac
QUOTE
მძიმე და არაფრისმომცემია, ბევრად უკეთესია კარგი ტექსტ ედიტორი.

რომელ IDE-ს იყენებთ სამსახურში? ჩემი თავი გამახსენდა ყველაზე მეტად notepad-ში როდესაც მიყვარდა HTML-ების აწყობა smile.gif

IDE-ს უამრავი ფუნქცია აქვს და თუ არ იყენებ რა თქმა უნდა კარგი ტექსტ ედიტორი ყოველთვის აჯობებს. როდესაც ცოტა დიდ პროექტზე გიწევს მუშაობა, გუნდთან ერთად ხომ მითუმეტეს, უკვე სხვა რაღაცეებზეც გიწევს ფიქრი. მაგალითად PyCharm-ში ჩაშენებულია https://www.python.org/dev/peps/pep-0008/ სტილის დაცვა, რომელიც არ არის აუცილებელი, მაგრამ თუ იცავ ეს კიდევ ერთი პლიუსია შენს უნარჩვევებს.

ასევე IDE-ს ჩაშენებული აქვს სხვადასხვა version control სისტემის მხარდაჭერა, რაც ასევე ძალიან მოსახერხებელია როდესაც გიწევს მუშაობა პროექტზე სადაც 10-ზე მეტი ფაილი გაქვს.

PyCharm-ს ასევე აქვს Debugging-ის მხარდაჭერა, ტექსტ-ედიტორი ამის საშუალებას ვერ მოგცემს.

P.S. თუ საიდუმლო არაა პითონზე რა სახის პროექტებზე მუშაობთ სამსახურში? smile.gif

Posted by: ჩაქუჩი 3 Feb 2018, 21:51
Lilith
QUOTE
P.S. თუ საიდუმლო არაა პითონზე რა სახის პროექტებზე მუშაობთ სამსახურში?

ERP სისტემის საპორტში ვმუშაობ და იქ , დაშენებულ ფუნქციებს ( რომელიც ძირითადი პროგრამის ნაწილი არაა და ყველა კლიენტს არ ჭირდება ) წერენ პითონზე .
ისე კი პროგრამა C# - ზეა დაწერილი .

Posted by: Dirac 3 Feb 2018, 22:46
Lilith
QUOTE
რომელ IDE-ს იყენებთ სამსახურში? ჩემი თავი გამახსენდა ყველაზე მეტად notepad-ში როდესაც მიყვარდა HTML-ების აწყობა


ჩემს სამსახურს თავისი IDE აქვს და პითონის თავისი პლატფორმა.

QUOTE
მაგალითად PyCharm-ში ჩაშენებულია PEP8 სტილის დაცვა, რომელიც არ არის აუცილებელი, მაგრამ თუ იცავ ეს კიდევ ერთი პლიუსია შენს უნარჩვევებს.


იმაქსზე მეყენა მსგავსი რამე. გუგლის სტილს იცავს. ნერვებლი მომიშალა და მოვაშორე.

QUOTE
PyCharm-ს ასევე აქვს Debugging-ის მხარდაჭერა, ტექსტ-ედიტორი ამის საშუალებას ვერ მოგცემს.


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

Posted by: nv86 5 Feb 2018, 20:46
ეხლა მოვრჩი მეორე წიგნს programming python
რამე პროექტი მომაფიქრებინეთ. ჩემით მიჭირს. სხვა პროგრამების კოდები ვარჩიო? მეზარება ქრაულერების წერა. მაილ სერვერი დავწერე. უფრო სწორად ამ წიგნში იყო მოყვანილი და გარჩეული. GUI-ც და CGI-იც.

ან იქნებ იცოდეთ რამე ახალი წიგნი. raspberry pi-ით ხო არ გავერთო?

Posted by: robox 5 Feb 2018, 23:38
nv86
chip-8 ს ემულატორი გააკეთე
აგერ დოკუმენტაცია http://devernay.free.fr/hacks/chip8/C8TECH10.HTM#0.0

აგერ რომებიც https://www.zophar.net/pdroms/chip8.html
საინტერესოა,თან ცოტა "რკინას მიუახლოვდები " smile.gif
user posted image

Posted by: nv86 6 Feb 2018, 19:03
robox
უი ეგ რა კარგი რამეა. ადრე რო იყო GNS ცისკოს როუტერებისთვის იგივე პონტია ვირთუალ მანქნაასავით?
მადლობა.

რამე წიგნსაც ხო ვერ მირჩევ. თუ დავანებო წიგნებს თავი და ვიპრაქტიკო? ძაან ლოუ ლეველზეც არმინდა ჯერ დავიდე ისედაც რთულია smile.gif ეს ემულატორი მისწრებაა. raspberry-საც დავითრევ არ არის ძვირი და რამე. თავის სენსორებით და დისფლეით.

Warning:
????

Posted by: Ruritania 6 Feb 2018, 20:02
მე ვიყენებ PyCharm-ს smile.gif
ძალიან მომწონს ჯეტბრაინსის პროდუქტები ზოგადად.
და მე პირადად ვფიქრობ რომ პროექტს გააჩნია (როდის შეიძლება გამოიყენო IDE და როდის არა). დაახლოებით იგივეა რაც Javascr1pt-ისთვის როდის შეიძლება გამოგადგეს WebStorm და როდის უბრალო ტექსტ ედიტორი.

სამსახურის პროექტებზე ყოველთვის IDE-ს ვიყენებ და ბევრად უფრო მიმარტივებს მუშაობას ვიდრე ტექსტ ედიტორი. თუნდაც იმით რომ refactoring სასწაულად მარტივია ნებისმიერი სახის.
ასევე, ახლად დაყენებული ბიბლიოთეკის ყველა მეთოდს ძალიან კარგად აღიქვამს ეგრევე. ტესტების task runner-ები ჩაშენებული აქვს, ისევე როგორც ტერმინალი.
PyCharm -ში რამე ბიბლიოთეკას თუ გამოიყენებ ისე რომ ჯერ არ გაქვს გადმოწერილი, ავტომატურად გთავაზობს გადმოწერას.

VSCode, Sublime, Atom - სამივე გამომიყენებია იგივე პროექტებზე და შედარებაც არ შეიძლება შესაძლებლობების მხრივ.

WebStorm-ს ვიყენებ JS-ისთვის და იგივე reducer-ების გადაკეთება არის უმარტივესი.
ასევე როდესაც რაღაცის import-ს ვაკეთებ, მაგალითად სადღაც, რომელიღაც ფაილში მაქვს getUsers ფუნქცია, შემიძლია ჩავწერო
CODE

import { getU

მერე Enter და ავტომატურად მიუწერს relative path-ს.

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

VIM vs EMACS რაც შეეხება, პასუხია - Spacemacs. Clojure-ის საწერად ვიყენებ და შეუდარებელია LISP ენებისთვის.

ზოგადად Vim აუცილებელია ჩემი აზრით პროგრამისტისთვის. ყველა ზემოთ ჩამოთვლილ ედიტორში / IDE -ში vim mode-ს ვიყენებ მე პირადად და ვეღარ წარმომიდგენია სტანდარტულ კლავიატურაზე წერა.

Posted by: Svani91 6 Feb 2018, 22:00
მე რატო უნდა ვიძრომიალო სორსში, დაუკვირდით ხალხო რას დებთ

Posted by: robox 6 Feb 2018, 22:20
QUOTE (nv86 @ 6 Feb 2018, 19:03 )
robox
უი ეგ რა კარგი რამეა. ადრე რო იყო GNS ცისკოს როუტერებისთვის იგივე პონტია ვირთუალ მანქნაასავით?
მადლობა.

რამე წიგნსაც ხო ვერ მირჩევ. თუ დავანებო წიგნებს თავი და ვიპრაქტიკო? ძაან ლოუ ლეველზეც არმინდა ჯერ დავიდე ისედაც რთულია smile.gif ეს ემულატორი მისწრებაა. raspberry-საც დავითრევ არ არის ძვირი და რამე. თავის სენსორებით და დისფლეით.


gns არ ვიცი რა არის მაგრამ chip8 ,თუ ვიკიპედიას დავუჯერებთ პატარა ინტერპრეტირებადი პროგრამირების ენაა(პატარა პითონია რა biggrin.gif),შენ კიდე ამ ენის შემსრულებელი გარემო უნდა შექმნა.

chip8 ემულატორებში hello world-ის დონეა,ამის მერე აკეთებენ nes,gameboy,ps1 და ასე შემდეგ ემულატორებს.

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

Posted by: Lilith 7 Feb 2018, 02:07
robox
გეთანხმები, მეც პრაქტიკა მირჩევნია. სიმართლე გითხრა ვერ ვიხსენებ რომელიმე ტექნოლოგია წიგნის დახმარებით მესწავლოს. კურსებიც რო გითხრა ჰა და ჰა ერთი SQL-ის კურსი მახსენდება წლების წინ გავიარე, მეტი არაფერი მაგონდება. დანარჩენი ყველაფერი ჩემით (საბაზისო ცოდნას თუ არ ჩავთვლით, რაც სკოლის პერიოდში ზოგად პროგრამირებას ეხებოდა).

მთავარია საინტერესო ამოცანა დაისახო და მიჰყვე სადამდეც შეგიძლია. მითუმეტეს დღევანდელ დღეს მილიონი API-ა გამოდებული არაფერი დიდი ამბავი რომ არ სჭირდება. ერთ-ერთი ამოცანა ბოლოს რაც გავაკეთე blockchain.info-დან ვიღებდი მონაცემებს და ჩემთვის ვინახავდი/ვამუშავებდი მერე ვებსაიტზე გამომქონდა ჩარტები.

თუ ეგეთი დონის ამოცანები გაინტერესებთ თქვით და გავაკეთოთ, თუ გინდათ ცალკე თემაში გავიტანოთ. ამოცანაც კი მაქვს მზად - ეროვნულის საიტიდან 2017 წლის კურსები ავიღოთ და ე.წ. regression analysis ჩავუტაროთ რეგიონში არსებულ ვალუტებს და დავადგინოთ არის თუ არა, და თუ არის რომელი მეზობელი ქვეყნის ვალუტებზეა ძირითადად ლარი დამოკიდებული. რთულად ჟღერს, მეც არ ვიცი ზუსტად რა როგორ უნდა გაკეთდეს, მაგრამ ამოცანა თუ არის ამოხსნაც მოიძებნება yes.gif

Posted by: nv86 7 Feb 2018, 13:46
Lilith
კარგი აზრია. რომელი აპი უნდა გამოვიყენოთ ამ გვერდს აქვს რამე აპი? წამოსაღებად? urllib, html.parser, beautifulSoup?
გრაფიკები არასდროს გამიკეთებია მაგრამ იქნება უამრავი ბიბლიოთეკა მაგისთვისაც? უი არა rrdtool თუ რაღაც ეგეთი არის.
GIT-ს არ იყენებთ? რეგრესიის ანალიზს როგორ აპირებ არ ვიცი.


მემგონი კორელაციური ანალიზი უნდა გაკეთდეს ჯერ. არ ვიცი მოკლედ მოფიქრება უნდა. რთული კიდე მართლა არაა ექსელი აკეთებს დაჟე მაგას ძალიან ჩვეულებრივად. ცვლადები შეგყავს და თვითონ აკეთებ. ნუ ეგრე მარტივადაც არაა მაგრამ რთული არაა ძალიან.

Posted by: ჩაქუჩი 7 Feb 2018, 20:26
მეგობრებო , ფუნქციის არგუმენტში ორწერტილი რას ნიშნავს ? ან ისარი spy.gif ?
CODE
def correct_sentence(text: str) -> str:

Posted by: Lilith 7 Feb 2018, 20:38
ჩაქუჩი
მითითებასავითაა თუ რა ტიპის პარამეტრია და რა ტიპის ობიექტს აბრუნებს მეთოდი:

CODE
def func(param: type) -> return_type


შედეგად იღებ ე.წ. Code Completion-ს პარამეტრებზე და ფუნქციის მიერ დაბრუნებულ ობიექტზე. ანუ პროგრამის მუშაობაზე არანაირი გავლენა არ აქვს, იმიტომ რომ არ გავალდებულებს ზუსტად იმ ტიპის პარამეტრი გადასცე, ან ზუსტად იმ ტიპის შედეგი დააბრუნო. მაგრამ ზოგადად კოდის წერას გიმარტივებს.

Posted by: ჩაქუჩი 7 Feb 2018, 21:22
Lilith
გასაგებია , მადლობა .

P.S.
CODE
def move_tower(move, n, a, b, c):
  res = 0
  if n == 1:
      print(move, a, '-->', b)
      res += 1
  else:
      res += move_tower(move+'.1', n-1, a, c, b)
      res += move_tower(move+'.2', 1, a, b, c)
      res += move_tower(move+'.3', n-1, c, b, a)

  return res


print('სულ', move_tower('#', 3, 'A', 'B', 'C'), 'სვლა')


სამ ხაზად დაწერილი 'res' - ები ძალიან მაბნევს , თან += ამ შემთხვევაში რას გულისხმობს ვერ ვხვდები.
მოკლედ იმდენად ვერ გავიგე , რო აზრიან კითხვასაც ვერ ვსვამ biggrin.gif .
როგორ არ ვეცადე ამ კოდში გავრკვეულიყავი , მარა არ გამომივიდა მაინც biggrin.gif , როგორც ჩანს ჩემთვის ზედმეტად რთულია ჯერ .
თვენახევარია რაც პითონს ვსწავლობ , ეს ჩემი პირველი დაპროგრამების ენაა .
დღეს https://snakify.org დავასრულე . ყველას გირჩევთ ვინც საერთოდ აზრზე არ ხართ , ძალიან მაგარი საიტია 0 - დან დასაწყებად .

Posted by: Lilith 7 Feb 2018, 21:29
ჩაქუჩი
QUOTE
სამ ხაზად დაწერილი 'res' - ები ძალიან მაბნევს , თან += ამ შემთხვევაში რას გულისხმობს ვერ ვხვდები.

ანუ move_tower(move, n, a, b, c) აბრუნებს რამდენი სვლა დასჭირდება n ცალი რგოლის გადატანას A-დან B-ზე.

res-ში ვითვლით სწორედ ამ სვლების რაოდენობას.

ანუ n რგოლის გადასატანად გვჭირდება (n-1 რგოლის დამხმარე ღერძზე გადასატანად საჭირო სვლების რაოდენობას) + 1 + (n-1 რგოლის დამხმარე ღერძიდან გადმოსატანად საჭიროდ სვლების რაოდენობა).

ეგ სამი ჩანაწერი სწორედ მაგას ითვლის:
პირველი ითვლის n-1 რგოლის გადასატანად რამდენი სვლა დაჭირდება,
მეორე 1 სვლა იმ ყველაზე დიდი რგოლის გადასატანად,
მესამე n-1 რგოლის გადმოტანა დამხმარე ღერძიდან.

Posted by: iraklikairakli 11 Feb 2018, 20:41
სალამი მეგობრებო, ყველაზე კარგი ამოცანები სად დევს smile.gif ? რაც შეიძლება ფუნქციებზე რომ იყოს ან რამე კარგი მასალა რომ გადავიკითხო კიდევ smile.gif

Posted by: ჩაქუჩი 3 Mar 2018, 22:41
ცოტა გამოცოცხლდით პითონცი smile.gif .
გვაქვს სტრინგი , რომელშიც არის ჩვეულებრივი ( ) , კვადრატული [ ] და ესეთი ფრჩხილები { } , ქართულად რა ქვია არ ვიცი .
ჩვენი მიზანია დავწეროთ ფუნქცია , რომელიც დააბრუნებს Trues - ს თუ ფრჩხილები სწორად არის დასმული , ხოლო წინააღმდეგ შემთხვევაში Falses - ს .
მაგალითად :
CODE
"((5+3)*2+1)" == True
"{[(3+1)+2]+}" == True
"(3+{1-1)}" == False
"[1+1]+(2*2)-{3/3}" == True
"(({[(((1)-2)+3)-3]/3}-3)" == False
"2+3" == True



Posted by: monty7 14 Mar 2018, 15:49
Lilith
გამარჯობა, ეს კვადრატული განტოლების კოდი პითონის 2.7 ვერსიაზე არ იმუშავებს ხო ?

ძაან მაგარი წამოწყებაა წარმატებები...

Posted by: MONTY 17 Apr 2018, 04:10

scrapy ვინ იცით კარგად ?
ჯინეტის ანალიზის გაკეთება მინდა ( სიტყვების და დომენების შეგროვება და ა.შ )
პირველი ამოცანა .ge დომენების შეგროვება და შემდეგ აქტიური .ge დომენების შეგროვება


Posted by: MONTY 19 Apr 2018, 04:37
scrapy ვერ ავამუშავე

ვინდოუსზე
დავაყენე პითონი 3.6 ვერსია
C:\p
დავაყენე scrapy
დავაყენე PyCharm

from და import ზე მაინტერესებს დეტალები ( პრობლემა არასწორი იმპორტი უნდა იყოს სავარაუდოდ )
ასევე ფაილების (ბიბლიოთეკების მდებარეობა სად უნდა იყოს და ედიტორში სწორად როგორ მივუთითო
import os ს მნიშვნელობაც

QUOTE
#!/usr/bin/env python

ეს რას ნიშნავს ? ლინუქსზე სჭირდება თუ ვინდოუსზეც საჭიროა ?


QUOTE
https://github.com/0xh3x/kacorpus/tree/master/forumge


ეს მინდა რო გამოვიყენო user.gif





Posted by: Roy 5 Feb 2019, 04:21
სალამი ხალხს

სამსახურში მქონდა ერთი ნამეტანი boring to do by hand დავალება და ეს სკრიპტი დავწერე.
დამწყები ვარ, 2 კვირის წინ დავიწყე.. გარტყმაში არ ვარ მთლად ვერ ვიტყვი მაგრამ მაინც ძალიან ბევრ რაღაცაში მაგრა ვიჭედები.
სკრიპტი არის მარტივი. ASA ფაირვოლისთვის უნდა შექმნას ობჯექტები. ობჯექტების დატისთვის კი იყენებს csv ფაილს.
მაგალითად
CODE

object network hostname01
host 192.168.1.1
object network hostname02
host 192.168.1.1

ჯერჯერობით მარტო 2 ფუნქცია მუშაობს.
როგორც ზევით ავღნიშნე, ეს სკრიპტი რო გაეშვას ცალკე csv ფაილია საჭირო, სადაც იქნება ASAზე დასამატებელი ობჯექტების დატა.. objectname,objectip,objectmask ... comma delimited.. მძიმით გამოყოფილი ანუ.
მუშაობს ყველაფერი და რა მიზნისთვისაც დავწერე იმ მიზანს ემსახურება და ასრულებს მშვენივრად. უბრალოდ თვითონ კოდის გაუმჯობესება მინდა რომ მაგალითად
თითქმის ერთიდაიგივე def არ მქონდეს ორჯერ.

def Host_Objects()
def Subnet_Objects()... ესენი. ეს ბოლო ჯერ კიდევ ძიების პროცესში მაქვს და არაა დასრულებული..
ამ ორ ფუნქციაში ფაქტიურად ერთიდაიგივეს ვაკეთებ ოღონდ სხვადასხვა ბრძანებებს ვაწყობ. დასრულებული არაათქო რო ვთქვი, განსხვავება ის იქნება მაგ ორ ფუნქციას შორის რომ საბნეტის ვალიდაცია მექნება IPს მაგივრად.

მოკლედ, აგერ კოდი და იქნება რამე მირჩიოთ.. ჩემი მთავარი მიზანი არის რომ ეს 2 თითქმის ერთნაირი def არ მქონდეს.

Posted by: C17H19NO3 22 Jul 2019, 14:37
Lilith
მშვენიერი წამოწყება რატომ გაჩერდა :/ საწყენია, ისეთი კარგად ხსნიდი..


Posted by: NinjaRacer 23 Jul 2019, 01:43
მართლაც რომ

smile.gif

user posted image

Posted by: C17H19NO3 23 Jul 2019, 09:56
NinjaRacer
რამე კარგი pdf მომე რა თუ გაქვს :/ ისეთი რომ მივყვე და მივყვე ..

ვიდეო კურსები არ მინდა, აი კარგად ახსნილი დეტალურად რა..


** აი ვერ ვხვდები მაგალითად import როდის უნდა გამოვიყენო, საიდან მივხვდე რომ მჭირდება ვთქათ import os, import math.....
(ინგლისურ ენაზე ვიგებ მაგრამ კარგად ვერა აშკარად)

** კიდევ მაინტერესებს განტოლება როგორ ამოვახსნევინო, მაგალითად 3x^2-7=5 აქ x პროგრამამ რომ იპოვოს პატარა მონახაზი მინდა მიდგომა რა.

user.gif user.gif

Posted by: NinjaRacer 23 Jul 2019, 12:17
C17H19NO3
ამაზე უკეთესს ვერაფერს ნახავ. მანდ წერია მოდულებზეც. კლასებზეც, დატა სტრუქტურებზეც. scoping and namespace-ებზეც. რაც ძალიან მნიშვნელოვანია.

https://docs.python.org/3/tutorial/index.html
ეს რთულია და ამაზე რამოდენიმეჯერ მიბრუნება მოგიწევს. მაგრამ აუცილებლად მიუბრუნდი. დამწყებისთვის არაა თლა.
თუ ეს ზედმეტად რთულია. მაშინ აგერ
https://www.youtube.com/watch?v=rfscVS0vtbw

თუ ესეც ამოგივა ყელში და დაგგრუზავს რა რთულიაო. CS50-ის ნებისმიერ ვიდეოს ჩაუჯექი გულს მოგიბრუნებს უკან.
არ არის აუცილებელი ერთ დღეში ქნა ეს ყველაფერი. დღეში 1-2 საათი ხარისხიანად ჯობია ჩაუჯდე. უფრო ეფექტურია.

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

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

ნელი პროგრესი გექნება და ამაზე არც უნდა იფიქრო ყველა ეგრეა. ყველას აქვს გონკები რო აი ვერ ვსავლობ ან ნელა ვსწავლობ და ა.შ ეს არის სრულიად ბუნებრივი და გასავლელი ეტაპი ყველასთვის.. აბსოლუტურად ყველა მცირე გამონაკლისების გარდა ეგრეა. პირველ ენას რომ ისწავლი კარგად. მერე სხვები ბევრად გაგიადვილდება. ზოგი ფიქრობს რომ C/C++ დაწყება ჯობია, მე არ ვფიქრობ ეგრე. ეგ შენი გადასაწყვეტია. მე პირადად სულ არ მჭირდება C/C++ ამ ეტაპზე. რო დამჭირდება არცეგ იქნება პრობლემა. დრო რომ მექნება აუცილებლად ჩავუჯდები. ცოტცოტას ვეპარები თავისუფალ დროს და ძალიან მომწონს.

Posted by: აბიტურიენტი 23 Jul 2019, 12:24
QUOTE
კიდევ მაინტერესებს განტოლება როგორ ამოვახსნევინო, მაგალითად 3x^2-7=5

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

Posted by: C17H19NO3 23 Jul 2019, 14:04
აბიტურიენტი
QUOTE
კვადრატული განტოლების ამოხსნა პირველივე პოსტში წერია.

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

აი რას ვამბობ 3x^2-7=5 ამას ფურცელზე გავაკეთებ უცბად კი ბატონო, პროგრამის ენაზე ვერ ვაკეთებ, პირველი პოსტი ვერ მეხმარება ამ საკითხში..

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

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

კი ეხლა ვუზივარ, მაგ ვიდეოს და CS50 ეხლა ვნახე რატომ არ შემხვდა აქამდე smile.gif კარგია ძალიან, მადლობა.

კიდევ pdf ვნახე და ნორმალურად მიყვება ტემპს..
პატარ პატარა კალკულაციებს ვაკეთებ, მე თვითონ ვამატებ რამე რუმეებს და ვაჩვევ ხელს smile.gif ნელ ნელა გამოვა რაღაც


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

პრიველი მაინც ეს მინდა.. import ის დროს საიდან ვხვდები რა მჭირდება



Posted by: Definitely_Maybe 23 Jul 2019, 14:43
C17H19NO3
QUOTE
ანუ მიდგომა მინდა რა.. ასეთ განტოლებას რომ ვხედავ მერე საიდან ვიწყებთ??


დაწერ დისკრიმინანტის კოდს.

თუ დისკრიმინანტი უარყოფითია > არ იხსნება განტოლება
თუ 0 ის ტოლია მაშინ ერთი ამონახსნი აქვს. დაწერ შესაბამის კოდს. დააბრუნებ/ამობეჭდავ პასუხს.
თუ 0ზე მეტია მაშინ 2 ამონახსნი აქვს. დაწერ შესაბამის კოდს. დააბრუნებ/ამობეჭდავ პასუხებს.

ისე მართლა მარტივადაა პირველ გვერდზე დაღეჭილი.
* * *
QUOTE
პრიველი მაინც ეს მინდა.. import ის დროს საიდან ვხვდები რა მჭირდება

თუ კოდის წერისას გჭირდება მაგალითად მათემატიკური ოპერაციები, ფესვის ამოღება მაშინ ჩატვირთავ შესაბამის ფუნქციას from math import sqrt (ფესვის ამოღება) ან from math import * (მგონი ასე იწერება თუ ყველაფრის ჩატვირთვა გინდა)

Posted by: C17H19NO3 23 Jul 2019, 16:33
Definitely_Maybe
QUOTE
დაწერ დისკრიმინანტის კოდს.

თუ დისკრიმინანტი უარყოფითია > არ იხსნება განტოლება
თუ 0 ის ტოლია მაშინ ერთი ამონახსნი აქვს. დაწერ შესაბამის კოდს. დააბრუნებ/ამობეჭდავ პასუხს.
თუ 0ზე მეტია მაშინ 2 ამონახსნი აქვს. დაწერ შესაბამის კოდს. დააბრუნებ/ამობეჭდავ პასუხებს.

ისე მართლა მარტივადაა პირველ გვერდზე დაღეჭილი.
* * *


ხოდა ჩემი პრობლემა მათემატიკაშია და არა კოდში და პირველ გვერდზე ახსნაში biggrin.gif \

ნუ ნელ ნელა ამოვქექავ ტვინს smile.gif



QUOTE
თუ კოდის წერისას გჭირდება მაგალითად მათემატიკური ოპერაციები, ფესვის ამოღება მაშინ ჩატვირთავ შესაბამის ფუნქციას from math import sqrt (ფესვის ამოღება) ან from math import * (მგონი ასე იწერება თუ ყველაფრის ჩატვირთვა გინდა)


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

https://docs.python.org/3/search.html?q=import აგერ თუნდაც საჩემოდ ვერ ვნახე საკმარისი ინფო

Posted by: Definitely_Maybe 23 Jul 2019, 17:07
C17H19NO3

აქაა ყველა მოდულების ჩამონათვალი, თავისი აქხსნებით. რო დააჭერ კიდე ჩამონათვალია ყველა ფუნქციების თუ კლასების რაც ამ მოდულებშია. მეც დამწყები ვარ თუმა ცოტა სხვანაირად ვუდგები. თუ რაღაც ოპერაცია მჭირდება, მაგალითად დამჭირდა კონკრეტულ რიცხვებს შორის რენდომ ციფრი მიანიჭოს ცვლადს. დავგუგლე და ვნახე თუ რომელი მოდულიდან რა უნდა ჩავტვირთო და ეგაა smile.gif

https://docs.python.org/3/py-modindex.html

QUOTE
ნუ ნელ ნელა ამოვქექავ ტვინს 

კი ეგ საჭიროა smile.gif

Posted by: Datvlas-vin-gtxovs 9 Jan 2020, 17:59
რამე სავარჯიშო გააძრე ადმინ up.gif

ბიჭები შემოვლენ და ამოხსნას დაწერენ

Posted by: აბიტურიენტი 9 Jan 2020, 18:46
QUOTE
რამე სავარჯიშო გააძრე ადმინ

კეპლერის მეთოდით ინტეგრალის მიახლოებითი მნიშვნელობა გამოთვალე. პირველ არგუმენტად გადაეცი ფუნქცია რომლის ინტეგრალსაც ვითვლით, შემდეგ ქვედა და ზედა ზღვრები. საკმარისად პატარა ინტერვალებისთვის https://wikimedia.org/api/rest_v1/media/math/render/svg/ff1e6d438c8e663ed8ab18d19b011371c24b3ac7 გამოიყენე.

Posted by: Datvlas-vin-gtxovs 9 Jan 2020, 19:14
გაკვეთილების თემაა და იქნებ ვინმეს გამოგადგეთ

გამეორებული რიცხვების წაშლა სიიდან (list)
CODE
# გვაქვს რიცხვების სია
# ვქმნით ცარიელ სიას, რომელშიც შევიტანთ უნიკალურ (არა'განმეორებად რიცხვებს ზედა სიიდან)
# for ციკლი ამოწმებს ყველა წევრს სიაში ricxvebi
# თუ რიცხვი არაა ახალ სიაში (marto'ში), მაშინ შეგვაქ

ricxvebi = [2, 1, 2, 5, 9, 5, 7, 20]
marto = []

for ricxvi in ricxvebi:
   if ricxvi not in marto:
       marto.append(ricxvi)

print(marto)
war.gif

Posted by: DoomDev 10 Jan 2020, 02:06
Datvlas-vin-gtxovs


CODE


list(set(ricxvebi))



CODE


list(dict.fromkeys(ricxvebi))



ისე filter,reduce,map ამ მეთოდების დახმარებით თუ ვინმე გააკეთებს საინტერესო იქნება

Posted by: NinjaRacer 10 Jan 2020, 08:12
აუ რამდენი ხანია არაფერი დამიწერია პითონში.

აი ჯანგოს რესტი როგორ მუშაობს. ტოესწ ობიექტების სერიალიზაცია.
ადვილი ძალიან smile.gif რო დაუკვირდე მთლიანი ფრეიმვორკი პრიმიტიულია ძალიან.
https://www.django-rest-framework.org/api-guide/serializers/

Posted by: Datvlas-vin-gtxovs 10 Jan 2020, 11:31
NinjaRacer
ჯანგო უფრო ჯავასკრიპია თუ PHP ?


DoomDev
filter,reduce,map თუ გავიგე, ვეცდები ახსნაც დავწერო up.gif

Posted by: C17H19NO3 10 Jan 2020, 18:53
NinjaRacer
რაღაც დამიწერე Kite ის მსგავსი და ვეღარ ვნახე ეგ პოსტი,

Kite დავაყენე Sublime Text თან ინტერგირებულია, მაგრამ ხანდახან შუა მონაკვეთში მითიშავს ედიტორს
* * *
მათემატიკური ამბავ ია ალბათ

==================================================
What is the result of this code?
fib = {1: 1, 2: 1, 3: 2, 4: 3}
print(fib.get(4, 0) + fib.get(7, 5))
-----------------------------------------------------------------
ახსნა:
fib.get(4,0) will give 3.
fib.get(7,5) will give 5 because 7 is not in dictionary.
so result 3+5=8
==================================================

5 საიდან მოვიდა??

Posted by: Datvlas-vin-gtxovs 11 Jan 2020, 10:56
C17H19NO3
მგონი ფიბონაჩის თემაა
ყოველი მომდევნო რიცხვი მისი წინა ორი რიცხვის ჯამის ტოლია

user posted image

Posted by: _wol_ 11 Jan 2020, 13:15

QUOTE

==================================================
What is the result of this code?
fib = {1: 1, 2: 1, 3: 2, 4: 3}
print(fib.get(4, 0) + fib.get(7, 5))
-----------------------------------------------------------------
ახსნა:
fib.get(4,0) will give 3.
fib.get(7,5) will give 5 because 7 is not in dictionary.
so result 3+5=8
==================================================

5 საიდან მოვიდა??


შეცდომაა ალბათ

Datvlas-vin-gtxovs
QUOTE
ჯანგო უფრო ჯავასკრიპია თუ PHP ?


Python-ია მთლიანად

თუმცა ჯავასკიპტის გამოყენებაც შეგიძლია

Posted by: DoomDev 11 Jan 2020, 23:33
CODE
fib.get(7,5) will give 5 because 7 is not in dictionary.


ეხლა გადავხედე მაგ მეთოდს სწორად აბრუნებს 5 -ს

პირველ პარამეტრად იღებს key ს ანუ 7 ს
მსგავსი key არ არის მაგ dictionary-ში
და აბრუნებს 5

ეგრედწოდებული დეფაულტ ვალიუსავით არის რა
თუ ვერ იპოვა key დააბრუნებს მეორე პარამეტრად რაც აქვს
თუ მარტო key აქვს და ვერ მოძებნა მსგავსი key დააბრუნებს None ს

Posted by: Datvlas-vin-gtxovs 13 Jan 2020, 10:07
CODE
def nisiebisRveuli(letters: List) -> None:

-> None: რას აკეთებს?

Posted by: DoomDev 15 Jan 2020, 03:23
Datvlas-vin-gtxovs

ერთ-ერთი data type არის
სხვა ენებს თუ იცნობ მაგალითად ჯს
იგივეა რაც null

Posted by: NinjaRacer 15 Jan 2020, 03:42
Datvlas-vin-gtxovs
ტაიპსკრიპტიც ისწავლე. ტაიპსკრიპტი გავს ჯავასკრიპტს მაგრამ დატას განსაზღვრავ წინასწარ. პითონს არ აქვს ეგ აქვს ანოტაციები რომელიც უბრალოდ სიტაქსური მარილია(სინტაქს შუგა)

ამას უბრალოდ რომ მიყვე მზა კლასებს იყენებ და გამობდის  პეისტბინ.ქომის მსგავსი რაღარაც. შეგიძლია პითონის კოდი ჩააპეისტო და მერე წამოიღო.
https://www.django-rest-framework.org/tutorial/1-serialization/

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

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

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

https://www.typescr1ptlang.org/docs/handbook/typescr1pt-in-5-minutes.html

+ კლასების და პუბლიქ პრავეტ ინტერფეისების მხარდაჭერაცააქვს. ჯავას პონტში.
ინტერფეისებიც სიშარპივით. მოკლედ ფრანკენშტეინაა. სწავლა ღირს ნამდვილად.

ამდენი რო ვიბოდიალე არცერთი არ ვიცი სრულყოფილად. მაგრამ ჩემთვის ეგ ტრაგედი არაა. პითონი მაინც ყველას მირჩევნია smile.gif მივაწვეთ პითონს

Posted by: Datvlas-vin-gtxovs 15 Jan 2020, 10:52
DoomDev
QUOTE
იგივეა რაც null

გასაგებია
მარა რატო ეს
QUOTE
CODE
def nisiebisRveuli(letters: List) -> None:

და არა ეს
QUOTE
CODE
def nisiebisRveuli(letters: List):


NinjaRacer
Machine Learning მინდა მარა ჯერ შორია
ტოტენჰემივით ვარ gigi.gif როცა არც კარგი ხარ და არც ცუდი

ეხლა რაღაც ელემენტარულ თამაშებს ვწერ
'პროექტებს' facepalm.gif

პითონი ჩვენი არსობისა old.gif

Posted by: DoomDev 15 Jan 2020, 13:08
Datvlas-vin-gtxovs

typed ენებთან არ გქონია საერთოდ შეხება?
ეგ signature ამბობს რომ ფუნქცია იღებს ერთ არგუმენტს
letters -ს და მისი დატა თაიფი უნდა იყოს List
თუ სხვა თაიფის დატას გადასცემ დაგაერორებს
და -> None ნიშნავს რომ შეიძლება ეგ თაიპ დააბრუნოს
თუ არ ვცდები კარგად არ ვიცნობ პითონცებს
თაიფსქრიპტში იგივე იქნება -> void
რაც ნიშნავს რომ შეიძლება nებისმიერი ტიპი დააბრუნოს
და ფუნქციას აქვს side effect ი(უფრო კომპეტენტური გეტყვის ალბათ)

თაიფედ ენების აზრიც ეგ არის თაიფსკრიპტი ახსენეთ ზევით
უბრალოდე ხელსაწყოა რა და სინტაქსი
კომპილერი გაიძულებს სწორი კოდი წერო ბოლოს ისევ ჯავასკრიპტში გადაკატავდება ეგ კოდი
იგივეა elm ი ეგეც ტაიპედ ენაა და ჯს ში კომპილირდება
იგივე clojure ფრონტზე ჯა ში კომპილირდება
ფრონტე ძირითადად ეგრეა რა ჯს ბევრი ხარვეზი აქვს ყველა თანხმდება
მაგრამ არსებობს უამრავი ენა რომელიც ამის გამოსწორების საშუალებას იძლევა რაც ზევით ვახსენე და კიდე არის უამრავი ენები

ფრონტს თუ მიყვები sveltejs ზე მიდი მომავალია
მაგრად დაუბაბანა სხვა ფრეიმვორკებს popcorn.gif
სორი offtopic ისთვის

Posted by: Datvlas-vin-gtxovs 15 Jan 2020, 22:46
კაი ჯიგრული 9 სავარჯიშო
https://codingbat.com/python/Warmup-2

DoomDev
up.gif



Posted by: Datvlas-vin-gtxovs 22 Jan 2020, 12:39
პითონცი

Try და
Except ს
აქ რამე პრაქტიკული გამოყენება?

მგონი უბრალოდ შეცდომის ახსნაა up.gif და მეტი არაფერი

Posted by: Definitely_Maybe 23 Jan 2020, 15:14
Datvlas-vin-gtxovs
თუ გინიდა input -ით მომხმარებლისგან მიიღო მხოლოდ ციფრები, except ში დააყენებ რომ სტრინგის შემთხვევაში პროგრამამ რაღაც რეაგირება მოახდინოს. შედეგად პროგრამა ერორს არ ამოაგდებს.

მე ასე მივხვდი smile.gif

Posted by: Lilith 24 Jan 2020, 07:01

გუშინ გადავაწყდი ამ ვიდეოს, არადა საკმაოდ ძველია და რაღაცეები აღარაა ისე როგორც ვიდეოში ხსნის, მაგრამ მაინც ღირს საყურებლად up.gif როგორც იტყვიან ხოლმე - highly recommended smile.gif

Posted by: Definitely_Maybe 25 Jan 2020, 00:16
Lilith
მადლობა საჭირო ვიდეოა. ვისიამოვნე.

ჩემი მოუცლელობიდან გამომდინარე უკვე მე-3 ჩავუჯექი პითონს და ამჯერად ვაპირებ გავიდე ბოლომდე და არ შევეშვა. ყოველ ჯერზე ეს ობიექტები მიშ₾ის ნერვებს. ბოლომდე ვერ გავიაზრე და დაზეპირება არ მინდა. უფრო ეს ინგლისური ტერმინები მირევს. instance of a class. method. კიდე ეს ინიტ კონსტრუქტორი. ინტუიციით კი ვხვდები მაგრამ კარგი ახსნა სადმე ჰომ არ მოგეპოვებათ? smile.gif
მადლობა.

ბევრი მეუბნება გაატარე ნელ ნელა დაამუღამებო მაგრამ მე მირჩევნია ბოლომდე გავშიფრო რა რას აკეთებს, არ მიყვარს გაუგებრობაში ყოფნა smile.gif

Posted by: Lilith 25 Jan 2020, 00:34
Definitely_Maybe
ეგ ზოგადად OOP (Object Oriented Programming) თემაა, მთლად პითონს ნუ დაუკავშირებ. აგერ ამ ვიდეოებს უყურე, ბევრი არაა და ძალიან გასაგებადაა მაგალითების(პითონზე) დონეზე ახსნილი:

ნაწილი I
» სპოილერის ნახვისთვის დააწკაპუნეთ აქ «

ნაწილი II
» სპოილერის ნახვისთვის დააწკაპუნეთ აქ «

ნაწილი III
» სპოილერის ნახვისთვის დააწკაპუნეთ აქ «

ნაწილი IV
» სპოილერის ნახვისთვის დააწკაპუნეთ აქ «

ნაწილი V
» სპოილერის ნახვისთვის დააწკაპუნეთ აქ «

ნაწილი VI
» სპოილერის ნახვისთვის დააწკაპუნეთ აქ «

ესეც ბონუსი
» სპოილერის ნახვისთვის დააწკაპუნეთ აქ «



Posted by: Definitely_Maybe 25 Jan 2020, 12:51
Lilith
მადლობა. II ნაწილზე ცოტა გავჭედე. დავუბრუნდები კიდევ smile.gif
ბონუსმა გაასწორა smile.gif

Posted by: პითონი 31 Mar 2020, 11:27
age1 = 12
age2 = 18
age1%age2
12
age2%age1
6

ეს ვერ გავიგე...

ანუ ეს % რას შვრება?

Posted by: Definitely_Maybe 31 Mar 2020, 11:52
პითონი
QUOTE
ანუ ეს % რას შვრება?

ეგ აბრუნებს ნაშთს. როდესაც 18%12 -ზე ნაშთი არის 6. მაგრამ 12%18 ის შემთხვევაში რადგან 12<18 ამიტომ აბრუნდებს 12-ს.


Posted by: პითონი 31 Mar 2020, 13:26
Definitely_Maybe
გასაგებია.
მადლობა დიდი

Posted by: Svani91 5 Apr 2020, 07:32



Posted by: Freestyle 14 Apr 2020, 15:13
Svani91
კარგად ხსნის რაღაცეებს მაგრამ ზოგში ძაან ავიჭერი, ალბათ ცემი ინგლისურის ბრალია sad.gif

Posted by: Svani91 15 Apr 2020, 03:37


დაწერე რაში და ერთად გავარჩიოთ

Posted by: CheshireCatt 7 Jun 2020, 11:08
სადღესასწაულო ცენტრის აქცია მდგომარეობს შემდეგში: 29%-იანი ფასდაკლებით სარგებლობს მომხმარებელი, რომელსაც 29 თებერვალს შეუსრულდა 29 წელი (ოქროს დაბადების დღე). დაწერეთ პროგრამა, რომელიც კლავიატურიდან მითითებული თარიღისთვის, განსაზღვრავს ეკუთვნის თუ არა ფასდაკლება კონკრეტულ მომხმარებელს.

რას იტყვით?

Posted by: Definitely_Maybe 7 Jun 2020, 16:22
CheshireCatt

ინებე smile.gif

CODE

from datetime import datetime
now=datetime.now()

def customer29():
   newCustomer=int(input('if your birthday is FEB.29, enter your bith date year '))
   if now.year-newCustomer==29:
       print ("you've got discount 29%")
   else:
       print (f'no discount, your age is {now.year-newCustomer} ' )

customer29()


Posted by: CheshireCatt 7 Jun 2020, 21:23
Definitely_Maybe
ხოო ასე გაცილებით ჭკვიანურია, გაიხარე <3

* * *
ა) შექმენით ექიმის კლასი, რომელიც შეიცავს დაფარულ ველებს: პირად ნომერს და დაბადების თარიღს, ხოლო ღია ველებია: გვარი, სახელი, სქესი, ექიმის ასაკი (გამოითვლება დაბადების თარიღის მიხედვით), განყოფილების დასახელება, თანამდებობა, საავადმყოფოს დასახელება, სამუშაო სტაჟი.
ბ) გადატვირთეთ __str__ მეთოდი.
ამაზე რას იტყვით?
ღია/დაფარული ველების განმარტებასაც თუ მოაყოლებთ მთლად უკეთესი lam.gif

Posted by: Definitely_Maybe 8 Jun 2020, 10:14
CheshireCatt
საიდან ეს დავალებები?

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

Posted by: Dirac 15 Jun 2020, 19:36
QUOTE (CheshireCatt @ 7 Jun 2020, 21:23 )
Definitely_Maybe
ხოო ასე გაცილებით ჭკვიანურია, გაიხარე <3

* * *
ა) შექმენით ექიმის კლასი, რომელიც შეიცავს დაფარულ ველებს: პირად ნომერს და დაბადების თარიღს, ხოლო ღია ველებია: გვარი, სახელი, სქესი, ექიმის ასაკი (გამოითვლება დაბადების თარიღის მიხედვით), განყოფილების დასახელება, თანამდებობა, საავადმყოფოს დასახელება, სამუშაო სტაჟი.
ბ) გადატვირთეთ __str__ მეთოდი.
ამაზე რას იტყვით?
ღია/დაფარული ველების განმარტებასაც თუ მოაყოლებთ მთლად უკეთესი lam.gif

ღია და დაფარული ალბათ public და private არის. პითონში ყველაფერი არის public. ამიტომ ეს დავალება უაზრობაა. მიღებულია რომ თუ ცვლადი private-ად მიგაჩნია, წინ_ დაუწერო,
მაგალითად
self._tanamdeboba
მაგრამ კლასის გარედან ამაზე წვდომა მაინც გაქვს და სინამდვილეში არაა private.

Posted by: Definitely_Maybe 16 Jun 2020, 16:49
Dirac
https://www.tutorialsteacher.com/python/private-and-protected-access-modifiers-in-python?fbclid=IwAR2Ww61Ndz9xZY4zLsNjJDrmyV2-ZtbHfTlh09WwCOs-_57l-SOOAR2qizQ

თუ ამ სტატიას დავუჯერებთ _ ნიშნავს დაცულს, და __ ნიშნავს დახურულს. თუმცა პირველად გავიგე არსად შემხვედრია ჯერ.
CODE

self._salary=sal # protected attribute
self.__salary=sal # private attribute

Posted by: ტყნაჩო 16 Jun 2020, 16:59
Python-ის სწავლა 0-დან
: Definitely_Maybe

Posted by: Definitely_Maybe 16 Jun 2020, 19:54
ტყნაჩო
?...................................................

Posted by: Datvlas-vin-gtxovs 30 Jun 2020, 14:38
Machine Learning ს ვინ სწავლობთ? რამე ცოდნა გაგვიზიარეთ

Posted by: CooL_ 11 Jul 2020, 11:03
პითონი რა ენაა ან რაში გამოიყენება საერთოდ, ჯავასკრიპტს გავს ხო რაღაც?
C#, javascr1pt და Html/css ის სწავლის პროცესში ვარ(მგონი დავამთავრე უკვე) და ვფიქრობ შემდეგში რა ვისწავლო lam.gif

Posted by: Dirac 16 Jul 2020, 20:06
CooL_
პითონი რა ენაა და უმაგრესი ენაა. ჯავასკრიპტი არ ვიცი, მაგრამ პითონის სინტაქსი არის უმარტივესი, თითქოს ფსევდოკოდია. გამოიყენება ყველაფერში. მე ადრე ფიზიკაში ვიყენებდი, ახლა ფინანსებში და მაშინ ლერნინგში. ვებშიც გამოიყენება. მონაცემებთან მუშაობისთვის, სტატისტიკური ანალიზისთვის ნომერ პირველი ენაა. ერთადერთი ნაკლი აქვს რომ ნელია, მაგრამ ეგ დიდი პრობლემა არაა თუ სწორად იყენებ. მაგალითად მაშინ ლენრინგის ბიბლიოთეკების რთულად დასათვლელი ნაწილი დაწერილია C++ში. პითონი გამოიყენება როგორც ინტერფეისი. პითონში აგებ ნიურალ ნეთვორკს, იძახებ ბიბლიოთეკებს და მთლიანობაში ძალიან სწრაფი გამოდის.

Posted by: CooL_ 19 Jul 2020, 02:30
Dirac
მადლობა ვრცელი ახსნისთვის smile.gif
ანუ ღირს სწავლა,
ჯერ C++ მინდა ვისწავლო და პითონს მერე ჩავუჯდები ))

Posted by: Dirac 7 Sep 2020, 03:56
კაი ვიდეოა გენერატორზე

Posted by: GeorgeSword 15 Oct 2020, 17:23
QUOTE
https://www.jetbrains.com/pycharm/download (Community ვერსია, უფასო)



ვერ ვაინსტალირებ ჩემს მაკზე
იმიჯი დაზიანებულიაო მიწერს გახსნას როცა ვცდილობ

ვერავინ დამეხმარებით pycharm ის ინსტალაციაში?


Posted by: გიორგი XII 15 Oct 2020, 18:00
QUOTE
ანუ ღირს სწავლა,


დასაქმებისთვის ნაკლებად

Posted by: Lilith 15 Oct 2020, 19:28
GeorgeSword
მაკი არასოდეს მქონია sad.gif

აი ეს ვიდეო ვიპოვე უცბად, იქნებ დაგეხმაროს რამეში

Posted by: GeorgeSword 15 Oct 2020, 21:15
Lilith

მადლობა გამოხმაურებისთვის smile.gif

გადმოწერილ dmg ფაილს საერთოდ ვერ ხსნის, დაზიანებულიაო მიწერს
არადა ოფიციალური საიტიდან ვიწერ
აზრზე არ ვარ მუშა ფაილი როგორ დავითრიო რომელსაც გახსნის
პაითონის ტუტორიალებს ჩავუჯექი, დაინტერესებული ვარ და სავარჯიშოდ მინდოდა ჩემთვის sad.gif


ძაან კაი თემაა რისპექტ up.gif

Posted by: გიორგი XII 15 Oct 2020, 21:32
GeorgeSword
QUOTE
გადმოწერილ dmg ფაილს საერთოდ ვერ ხსნის, დაზიანებულიაო მიწერს
არადა ოფიციალური საიტიდან ვიწერ
აზრზე არ ვარ მუშა ფაილი როგორ დავითრიო რომელსაც გახსნის
პაითონის ტუტორიალებს ჩავუჯექი, დაინტერესებული ვარ და სავარჯიშოდ მინდოდა ჩემთვის


safe mode თი ჩატვირთე აბა OS და ისე ცადე გახსნა.
სიერას ჩვევია ეგეთი პრობლემები, თუ არ ქნა ბოლო გაჩერეება რეინსტალია OS_ის.

Posted by: GeorgeSword 15 Oct 2020, 22:02
გიორგი XII


yosemite მაქვს :დ

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

დაჟე ეკლიპსიც ვცადე , კი დავაინსტალირე მაგრამ გახსნით ვერ გავხსენი, virtual java პრობლემა ამოაგდო
მერე ჯავაც (ვერსია 15 მგონი) დავააფდეითე მაინც ვერ გახსნა
პაითონის ფორუმზე ერთი წერდა ბოლო ვერსია წაშალეთ და რაღაცა 8 ნომერი ჯავა დააყენეთო და გახსნისო
მაგ 8 ნომერი ჯავას გასახსნელად ორაკლმა მომთხოვა ავტორიზაცია უკვე, მაშინ როცა 15 ვერსიაზე არ მოუთხოვია
და მოკლედ ასე რა
ყველა ფეხის ნაბიჯზე დაბრკოლებები დამხვდა :დ

pycharm ის მსგავსი რამე კარგი IDE ხომ არ გეგულებათ იქნებ ის დავაინსტალირო მაკზე?
ეკლიპსის გარდა

სპაიდერი ვცადო ვითომ? თუ ეგ ძაან advanced დეველოპერებისთვისაა?

Posted by: გიორგი XII 15 Oct 2020, 22:17
GeorgeSword

მე გირჩევ რომ MS Code დააყენო

ექსტენშენს დააყენებ და ინტერპრეტერსაც


უამრავი ექსტენშენები აქვს ძალიან მაგარი რამეა


ეს გამოიყენე სახელმძღვანელოდ:

Posted by: GeorgeSword 15 Oct 2020, 22:56
გიორგი XII

ოკეეი

MS code არის IDE?

აზრზე არ ვარ, პირველად მაქვს შეხება :დ

Posted by: dinamosfan 15 Oct 2020, 23:05
კაი თემაა წარმატებები ყველას
მაგრამ ვინც აზრზე არაა პროგრამირების იმისათვის წარმოუდგენელია ისწავლოს რას წერთ
ან რატო ან რა არის ))
ან რომ დაწერ რა გამოდის

Posted by: გიორგი XII 15 Oct 2020, 23:05
GeorgeSword
QUOTE
MS code არის IDE?

აზრზე არ ვარ, პირველად მაქვს შეხება :დ


Visual studio არის ფულლ IDE ლინკი : https://visualstudio.microsoft.com/
ძალიან ძლიერი სოფტია, (ნებისმიერი სინტაქსზე შეგიძლია იმუშავო მათ შორის pythonზე.)

community ვერსია აქვს მხოლოდ უფასო და ასევე არის ექსკლუზიურად ვინდოუსისთვის. .NET Framework ში სამუშაოდ არის შექმნილი. Azure . ASP.NET და სხვადასხვა პლატფორმებზე პროექტებს ასაწყობად.


Visual Studio code ანუ რაც გითხარი ეგ არის უფრო code editor და ასევე დებაგერი. კოდის კოფმორტულად საწერად და დებაგინგისთვის 2020წელს შეუდარებელი ედითორია.
შეგიძლია ჩააშენო უამრავი ექსთენშენი რაც ძალიან აადვილებს მუშაობის პროცესს.

Posted by: GeorgeSword 15 Oct 2020, 23:37
გიორგი XII


QUOTE
2020წელს შეუდარებელი ედითორია.


ხო ძაან მაგარი რამე ჩანს

დავაინსტალირე , ექსტენშენებშიც პაითონი დავამატე მაგრამ ცოტა დავიბენი , სავარჯიშო კოდის დაწერა მინდა და გაშვება და შემდეგი ნაბიჯი რა უნდა გავაკეთო პაითონში სამუშაოდ ?
პაითონ 3 იც დაყენებული მაქვს
მაკი მაქვს თან რაც ალბათ ართულებს ხომ? facepalm.gif

user posted image

აჰა, მაკზე აცრილია როგორც ვვარაუდობდი smile.gif

Posted by: გიორგი XII 16 Oct 2020, 13:41
GeorgeSword

რა მალე ნებდები კაცოოუ givi.gif

სხვა ინტერპრეტერი გამოიყენე და ეგაა. ტერმინალში გადადი და მანდ მიხვდები ასარჩევადაა


10 წუთიდან ნახე

ინტერპრეტერი არის რითიც შენი დაწერილი კოდი outputs აკეთებს

Posted by: Dirac 16 Oct 2020, 15:37
ვიჟუალ სტუდიო არის უშველებელი ნაგავი. სამსახურში მიწევს ყოველდღიურად გამოყენება. პატიოსანი ხალხი იყენებს ატომს (დამწყებები), იმაქსს (ჭკვიანი ხალხი რომლებსაც თითების გაწელვა პიანისტებივით შეუძლიათ), ვიმს (ჭკვიანი ხალხი რომლებმაც იმაქსზე ბეჭდვისას თითები მოიტეხეს).

Posted by: GeorgeSword 16 Oct 2020, 17:14
გიორგი XII


ვინდოუსზე დავაყენე pycharm ბოლოს და მუშაობს
დამტანჯა მაკმა :დ

მერე მაკზეც ვიზამ რამეს, ჯერ სავარჯიშოდ მინდა მაინც smile.gif
* * *



დამწყებებისთვის მშვენიერი ლექციათა კურსია
ვეცნობი ნელნელა

Posted by: გიორგი XII 16 Oct 2020, 17:31
GeorgeSword

შენ პონტში სწავლობ თუ მუშაობა გინდა?

Posted by: GeorgeSword 16 Oct 2020, 20:17
გიორგი XII

QUOTE
შენ პონტში სწავლობ თუ მუშაობა გინდა?


პრინციპში ორივე
phd ხარისხი მაქვს ფიზიკაში და პოსტდოკის ვაკანსიაზე ძაან გამომადგება პაითონი კონკურენციის ამბავში
, ექსპერიმენტული მონაცემების დამუშავებისთვის და არამარტო, მშვენიერი კოდების დაწერა შეიძლება smile.gif
გარდა ამისა თუ ძაან შევედი მუღამში და ალღო ავუღე დამოუკიდებელ დეველოპერადაც შეიძლება მომავალში
გააჩნია მოკლედ, როდესმე უნდა დამეწყო და მეც დავიწყე smile.gif
სჯობს გვიან ვიდრე არასდროს

Posted by: Lilith 16 Oct 2020, 20:36
სამომავლოდ თუკი ვინმეს გაუჭირდება ლოკალურად პითონის გამართვა თავის IDE-თი შეუძლია ონლაინ წეროს კოდი, პატარა მაგალითებისთვის IDE-ალური ვარიანტია givi.gif

https://repl.it/languages/python3

GeorgeSword
წარმატებები, რაიმე საინტერესო ამოცანები თუ გექნება გაგვიზიარე, ერთად გავარჩიოთ smile.gif

Posted by: GeorgeSword 16 Oct 2020, 20:53
გიორგი XII
QUOTE
სხვა ინტერპრეტერი გამოიყენე და ეგაა. ტერმინალში გადადი და მანდ მიხვდები ასარჩევადაა


10 წუთიდან ნახე


ვცადე და მაკზეც გამომივიდა ვიჟუალ სტუდიო bis.gif
pycharm ვერ დავაყენე მხოლოდ

Lilith

მადლობა
ჯერ მაგ ლეველამდე მივიდე საამოცანოდ რომ მქონდეს საქმე და დავდებ აუცილებლად :დ

Posted by: Dirac 17 Oct 2020, 00:08
QUOTE (GeorgeSword @ 15 Oct 2020, 23:37 )
გიორგი XII


QUOTE
2020წელს შეუდარებელი ედითორია.


ხო ძაან მაგარი რამე ჩანს

დავაინსტალირე , ექსტენშენებშიც პაითონი დავამატე მაგრამ ცოტა დავიბენი , სავარჯიშო კოდის დაწერა მინდა და გაშვება და შემდეგი ნაბიჯი რა უნდა გავაკეთო პაითონში სამუშაოდ ?
პაითონ 3 იც დაყენებული მაქვს
მაკი მაქვს თან რაც ალბათ ართულებს ხომ? facepalm.gif

user posted image

აჰა, მაკზე აცრილია როგორც ვვარაუდობდი smile.gif

მაკზე მე brew-თი ჩავწერდი პითონს, მაგრამ anaconda უფრო ადვილია. ასევე გჭირდება pip პაკიჯების დასამატებლად, ალბათ ანაკონდას მოყვება. მერე ქმნი virtual enviroment-ს, ძალიან მნიშვნელოვანია და არ უნდა გამოტოვო. ვირტუალურ ენვაიერმენთს ქმნი ტერმინალზე conda create --name myenv
ააქტიურებ conda activate myenv. სანამ პიპით რამეს ჩაწერ, ყოველთვის გააქტიურე ენვაიერმენთი რომელშიც გინდა ჩაწერა.

პაიჩარმის გახსნის მერე ქმნი პროექტს. File-> New Project
მანდვე Project Interpreter, რომელშიც უთითებ შენი ენვაერემენთის პათს.
Project Interpreter-ის ბოლოში აჭერ ხრახნილს, გამოხტება ახალი ფანჯარა და უთითებ base interpreter-ს, მაგრამ ეს ბოლო არ მახსოვს საჭიროა თუ არა. შეიძლება ავტომატურად ხდება.

კიდე, პატარა პროექტებისთვის და ნოუთბუკების შესაქმნელად, ეს ძალიან კარგია.
https://colab.research.google.com/

Posted by: GeorgeSword 17 Oct 2020, 10:26
Dirac
QUOTE
პაიჩარმის გახსნის მერე



პაიჩარმს საერთოდ ვერ ვხსნი
გადმოწერის მერე დაზიანებულიაო მიწერს
არადა ვინდოუსზე თავისუფლად დავაინსტალირე და პაითონშიც დავიწყე ვარჯიში

მაკი არის სისხლის გასაშრობად მოგონილი smile.gif)

Posted by: გიორგი XII 17 Oct 2020, 16:07
GeorgeSword

წარმატებები შენთვის არ უნდა იყოს პრობლემა არაფერი yes.gif up.gif

Posted by: Datvlas-vin-gtxovs 18 Oct 2020, 12:11
CODE
def datvla():

 x = int(input('Sheiyvanet Ricxvi: '))
 moq = input('Airchiet Moqmedeba + - / * an ** : ')
 
 #თუ მოქმედება არასწორადაა არჩეული  
 moqmedebebi = ['+', '-', '*', '/', '**']
 while moq not in moqmedebebi:
   moq = input('Airchiet Moqmedeba + - / * an ** : ')
   
 y = int(input('Sheiyvanet Meore Ricxvi: '))

 p = 'Pasuxi ='
 if moq == '+':
   print(p, x+y)
 elif moq == '-':
   print(p, x-y)
 elif moq == '*':
   print(p, x*y)
 elif moq == '/':
   print(p, x/y)
 elif moq == '**':
   print(p, x**y)
 
 else:
   pass

datvla()

მახსოვს, ერთერთი პირველი დავალება იყო კალკულატორის დაწერა up.gif

Posted by: lepori 18 Oct 2020, 14:42
GeorgeSword
ჩემი აზრით, შეთვის ოპტიმალური დასაწყისია>> Matplotlib
ორიჯინში და მათლაბში რა გრაფიკიც ამიგია, ავდექი და მოცალეობის ჟამს პითონში ავაგე biggrin.gif

მერე ავტომატურად გიწევს ნამფაი, საიფაი და ეგეთების დაძახებაც
ფიტირებები და რამე >> თავისთავდ

თან იმას აკეთებ რაც იცი, თან გარემოსაც ეჩვევი, ენასაც და რო რამე უცებ დაისწავლი სხვა რამეებსაც smile.gif


Posted by: GeorgeSword 18 Oct 2020, 16:30
გიორგი XII


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


lepori
QUOTE
Matplotlib


ეს პაითონის ბიბლიოთეკაა ხომ? სპეც ფუნქციებით ალბათ გრაფიკებისთვის და აშ?
დატა ფაილების იმპორტი და მერე დამუშავებას უნდა ჩავუჯდე
იქამდე ბაზისურ რაღაცეებს ვამუღამებ, ანი ბანის დონეზე, ფუნქციები, ცვლადები , ლისტები ,ციკლები და აშ რის გარეშეც წარმოუდგენელია ნაბიჯის გადადგმა პაითონში და ზოგადად პროგრამირებაში

Posted by: lepori 18 Oct 2020, 19:16
GeorgeSword
QUOTE
ეს პაითონის ბიბლიოთეკაა ხომ? სპეც ფუნქციებით ალბათ გრაფიკებისთვის და აშ?

yes.gif yes.gif
მატლაბში თუ გიმუშავია მსგავს რამეებზე ადვილად გადაეწყობი


QUOTE
იქამდე ბაზისურ რაღაცეებს ვამუღამებ, ანი ბანის დონეზე, ფუნქციები, ცვლადები , ლისტები ,ციკლები და აშ რის გარეშეც წარმოუდგენელია ნაბიჯის გადადგმა პაითონში და ზოგადად პროგრამირებაში

აგი თავისთავად ..

Posted by: GeorgeSword 18 Oct 2020, 22:09
lepori
QUOTE
მატლაბში თუ გიმუშავია მსგავს რამეებზე ადვილად გადაეწყობი


ძაან ლაითად მიმუშავია

ორიჯინში ვაკეთებდი ძირითადად :დ facepalm.gif

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

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

Posted by: გიორგი XII 18 Oct 2020, 22:34
QUOTE
ბიჭო წარმოიდგინე ფიზიკოსი რომ ხარ და კარგი პროგრამისტი ერთდროულად , იმენა კანფეტია, შანსი არაა რამე მაგარ სამსახურს ვერ გაარტყა :დ


10 000+
თვეში

Posted by: lepori 19 Oct 2020, 10:36
GeorgeSword
QUOTE
ნუ აი სამუშაოს სპეციფიკიდან გსმომდინარე, არ მქონია შეხება ერთდროულად ასობით და ათასობით მონაცემებთან, გარდა ბიმთაიმებისა რა დროსაც პაითონის კოდს ვიყენებდით რომელიც სხვისი დაწერილი იყო და უბრალოდ ამ კოდის უზერი ვიყავი მე :დ


მეც ბიმთაიმებმა მიმაბრუნეს მატლაბისკენ, ჩემს ბიმლაინზე მატლაბს იყენებდნენ
თურე ისე ორიჯინს არ გავცდებოდი biggrin.gif



Posted by: C17H19NO3 19 Oct 2020, 11:44
CODE
#!/bin/bash


REQ_ARGS=1
ALL_ARGS=$#


if [ $ALL_ARGS != $REQ_ARGS ]; then
       echo " ***** Create Execution File Fast *****"
       echo "  ** Usage: ./mksh.sh filename.sh or filename.py"
       echo "  ** Goodbye."
       exit 1
fi

if [ -n $1 ]; then
       echo "$1"
       touch $1
       echo "created $1"
       chmod +x $1
       echo "chmod +x $1 done!"
fi

filename="$1"
whichbash=$(which bash)
whichpython3=$(which python3)
expands=$( echo $filename |  cut -d"." -f 2 )

while [ -n $filename ]; do
       if [ $expands = "sh" ]; then
               echo '#!'${whichbash} > $filename
       fi
       if [ $expands = "py" ]; then
               echo '#!'${whichpython3} > $filename
       fi
       break
done



თქვენ გახარებას ეს პითონზე შეგიძლიათ დამიწეროთ?

Posted by: GeorgeSword 19 Oct 2020, 11:57
აჰა აი ერთი ამოცანა მომივიდა თავში, და განვიხილოთ

მოკლედ გვაქვს რაღაც ტექსტი :

QUOTE
სადოქტორო ნაშრომი
ეს არის ტექსტის ნიმუში სადაც ვახდენთ ციტირებების ავტომატურ გადანომრვას [1] ეს არის ტექსტის ნიმუში სადაც ვახდენთ ციტირებების ავტომატურ გადანომრვას [2] ეს არის ტექსტის ნიმუში სადაც ვახდენთ ციტირებების ავტომატურ გადანომრვას[3] ეს არის ტექსტის ნიმუში სადაც ვახდენთ ციტირებების ავტომატურ გადანომრვას [4]ეს არის ტექსტის ნიმუში სადაც ვახდენთ ციტირებების ავტომატურ გადანომრვას [5] ეს არის ტექსტის ნიმუში სადაც ვახდენთ ციტირებების ავტომატურ გადანომრვას [6] ეს არის ტექსტის ნიმუში სადაც ვახდენთ ციტირებების ავტომატურ გადანომრვას [7] ეს არის ტექსტის ნიმუში სადაც ვახდენთ ციტირებების ავტომატურ გადანომრვას [8]ეს არის ტექსტის ნიმუში სადაც ვახდენთ ციტირებების ავტომატურ გადანომრვას [9] ეს არის ტექსტის ნიმუში სადაც ვახდენთ ციტირებების ავტომატურ გადანომრვას [10]ეს არის ტექსტის ნიმუში სადაც ვახდენთ ციტირებების ავტომატურ გადანომრვას ეს არის ტექსტის ნიმუში სადაც ვახდენთ ციტირებების ავტომატურ გადანომრვას

ბიბილიოგრაფია:
[1] სტატიის სახელი 1
[2] სტატიის სახელი 2
[3] სტატიის სახელი 3
[4] და აშ ...
[5]  ...
[6]  ...
[7]
[8] ...
[9] ...
[10] .....


ამოცანა მდგომარეობს შემდეგში, ტექსტის აკრეფვის პროცესში შეიძლება დაგვჭირდეს ახალი ციტირებების მოყვანა მაგალითად სადღაც შუაში ან ნებისმიერ ადგილას, ამ შემთხვევაში შუაში გავაკეთებ უფრო თვალსაჩინო რომ იყოს ,
მინდა პაითონის ისეთი კოდი რომელიც ამოიცნობს [] კვადრატულ ფრჩხილებში მოთავსებულ ნომერს და ავტომატურად გადანომრავს ზრდადობით 1 და 11 მდე უკვე, ასევე ბიბლიოგრაფიაში დაამატოს და იქაც გადანომროს როგორც ეს ქვემოთაა საბოლოო შედეგში :

QUOTE
სადოქტორო ნაშრომი
ეს არის ტექსტის ნიმუში სადაც ვახდენთ ციტირებების ავტომატურ გადანომრვას [1] ეს არის ტექსტის ნიმუში სადაც ვახდენთ ციტირებების ავტომატურ გადანომრვას [2] ეს არის ტექსტის ნიმუში სადაც ვახდენთ ციტირებების ავტომატურ გადანომრვას[3] ეს არის ტექსტის ნიმუში სადაც ვახდენთ ციტირებების ავტომატურ გადანომრვას [4]ეს არის ტექსტის ნიმუში სადაც ვახდენთ ციტირებების ავტომატურ გადანომრვას [5] დავამატე ახალი სტატიის ციტირება აქ, ანუ 5-ის მერე 6-ით, პროგრამამ ავტომატურად გადანომრა ამის შემდგომი ციფრები კვადრატულ ფრჩხილებში: ..ძველი 6'' გახდა 7, 7 გახდა 8 , 8 გახდა 9 და აშ [6]ეს არის ტექსტის ნიმუში სადაც ვახდენთ ციტირებების ავტომატურ გადანომრვას [7] ეს არის ტექსტის ნიმუში სადაც ვახდენთ ციტირებების ავტომატურ გადანომრვას [8] ეს არის ტექსტის ნიმუში სადაც ვახდენთ ციტირებების ავტომატურ გადანომრვას [9]ეს არის ტექსტის ნიმუში სადაც ვახდენთ ციტირებების ავტომატურ გადანომრვას [10] ეს არის ტექსტის ნიმუში სადაც ვახდენთ ციტირებების ავტომატურ გადანომრვას [11]ეს არის ტექსტის ნიმუში სადაც ვახდენთ ციტირებების ავტომატურ გადანომრვას ეს არის ტექსტის ნიმუში სადაც ვახდენთ ციტირებების ავტომატურ გადანომრვას

ბიბილიოგრაფია:
[1] სტატიის სახელი 1
[2] სტატიის სახელი 2
[3] სტატიის სახელი 3
[4] და აშ ...
[5]  ...
[6] პროგრამამ გადანომრა 5- ის მერე და ნომრიდან გამომდინარე იცის რომ უნდა დაამატოს აქ, სადაც მერე უკვე ხელით ჩავწერ სტატიის სახელს
[7]  ...
[8]
[9] ...
[10] ...
[11] .....



თუ ძაან საჩალიჩოა, ბიბილიოგრაფიამდე რაც წერია მხოლოდ იქ რომ გადანომროს ახალი სტატიები [] -ში მოთავსებული ნომრების მიხედვით , ანუ ბიბლიოგრაფიაში გადანომრვის და ახალი სიმბოლოს ჩამატების გარეშე, მგონი ეს უფრო მარტივი მაგალითი იქნება გასარჩევად

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

Posted by: არწივი9 19 Oct 2020, 18:01
გაუმარჯოს ხალხს smile.gif
მე Python-ის შესწავლა ერთი წლის წინ დავიწყე, ვიდეოგაკვეთილებით, წიგნებით, ლექციებსაც ვესწრებოდი თავისუფალი მსმენელის რანგში და ცოტათ აზრზე მოვედი და აი ახლა განვაახლე. მე რაკი პროგრამისტი არ ვარ ამიტომ ამ ენის შესწავლა მჭირდება გარკვეული მიზნისათვის მხოლოდ (გამოთვლითი ნეირომეცნიერება).
აი ამწამს ასეთი შეკითხვა მაქვს:
ვწერთ ასეთ რამეს:
'kai nu gaaxure'.split() და გამოდის ასეთი რამე:
['kai', 'nu', 'gaaxure']
ანუ ჯერ ტექსტი დავწერეთ 'kai nu gaaxure' და მერე ოპერატორი split მივუწერეთ და გამოვიდა შედეგი, ეს გავიგე.

ახლა ამას რომ ვწერ:
', '.join(['aeee', 'uiiiiiii', 'ooooooh']) ეს შეაერთებს ამეებს და გამოდის:
'aeee, uiiiiiii, ooooooh'

ჩემი შეკითხვა ისაა რომ პირველ შემთხვევაში რატომ იწერება ჯერ დასამუშავებელი ტექსტი და მერე ოპერატორი (თუ რაცაა) და მეორეში პირიქით რატომაა? სადაა ლოგიკა? მოქმედების თანამიმდევრობა ამ ენას როგორი აქვს ასეთ შემთხვევებში? rolleyes.gif მე თვითოეული ფუნქციის/ოპერატორის შემთხვევაში ზეპირად უნდა დავიმახსოვრო რომელი სად იწერება და რა თანამიმდევრობით? ცოტა მოუხერხებელია boli.gif

Posted by: Dirac 20 Oct 2020, 01:17
არწივი9
ელემენტარულია ვატსონ. სპლითიც და ჯოინიც არის სტრინგის ფუნქცია. მარცნივ უნდა იყოს სტრინგი, მარჯვნივ სტრინგი ან სხვა რამე. პირველ შემთხვევაშიც და მეორეშიც მარცხნივ არის სტრინგი. '.' ესე სტრინგია. პირველ შემთხვევაში მარჯვნივაც სტრინგია, მაგრამ მეორე შემთხვევაში სტრინგების ლისტი. უფრო წესიერად გაიგო, უნდა ნახო როგორ მუშაობს კლასი.

დაახლოებით ასეთი რაღაცა იქნება
CODE

class str(object):
    def split(self):
         blablabla
 
   def join(self, stringebis_listi):
        blabla




self არის მაცხვინ მდებარე სტრინგი. სტრინგების ლისტი მარცხნივ ვერ იქნება, იმიტომ რომ ლისტი სტრინგი არაა.

Posted by: GeorgeSword 22 Oct 2020, 13:56
ჩემს ამოცანაზე რაღაც მიმართულება მაინც მსტყორცნეთ , რაღაც სინტაქსი დანარჩენს ვეცდები ვიდეო ტუტორიალებში აღმოვაჩინო smile.gif

ანუ მინდა ისეთი ალგორითმი სადაც ტექსტში "[int]" - იპოვის ამ სტრინგს, როგორც ობიექტს, ხოლო ამ ობიექტის ქვე-ობიექტად წაიკითხავს მთელ int რიცხვს მასში და დაალაგებს ამ რიცხვს ზრდადობით ყველგან ტექსტში

რაღაც დისკუსიის დონეზე იქნებ წამოვწიოთ ეს ამოცანა smile.gif war.gif

Posted by: Dirac 22 Oct 2020, 21:45
GeorgeSword
regex ნახე
import re

Posted by: GeorgeSword 23 Oct 2020, 00:01
Dirac
QUOTE
regex ნახე
import re



ოკ up.gif



.............................................

Posted by: Liebermann 24 Oct 2020, 13:45
საინტერესოა, ჩავუჯდები up.gif

Posted by: GeorgeSword 25 Oct 2020, 15:36
CODE
import re

pattern = re.compile(r'\[[0-9]+,\d{2}]|\[[0-9]+,\d{3}]|\[\d{2} +,\d{3}]|\[[0-9]]|\[\d{3} +,\d{3}]|\[\d+,\d]|\[\d{2}]|\[\d{3}]')

with open('JP.txt', 'r') as f:
   contents = f.read()
matches = pattern.finditer(contents)

for match in matches:
       print(match)


რაც მე ამაზე ვიჩალიჩე :დ,
ეჭვი მაქვს უფრო გამარტივებაც შეიძლება მაგრამ მთავარია მუშაობს biggrin.gif
წვალებაში საკმაოდ ბევრს სწავლობს ისე ადამიანი და ასწორებს

მოკლე რეზიუმე ამ ალგორითმის შესახებ : გახსნის txt ფაილს და ტექსტში მყოფ [2] კვადრატულ ფრჩხილებში მოთავსებულ ციფრებს გამოიტანს მაგ: [2] , ასევე თუ მძიმითაა გამოყოფილი მაგ: [1,23] ასევე გამოიტანს იგივე პრინციპით [1,23] დანარჩენ ციფრებს დააიგნორებს რაც კვადრატული ფრჩხილების მიღმაა.

მაქსიმუმ 3 ნიშნა ციფრები ავიღე [] ფრჩხილებში, ანუ სულ შესაძლო 12 კომბინაცია დგება:
1 ნიშნა ციფრი -[7] (ციფრი 7 პირობითადაა აღებული ყველგან, ცხადი რომ იყოს უფრო)
2 ნიშნა ციფრი -[77]
3 ნიშნა ციფრი - [777]
+ ასევე შესაძლო კომბინაციები იმ შემთხვევაში თუ მძიმითაა გამოყოფილი ეს ციფრები კვადრატულ ფრჩხილებში:
1-1 - [7,7]
1-2 - [7,77]
1-3 - [7,777]
2-1 - [77,7]
2-2 და აშ
2-3
3-1
3-2
3-3

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

მთავარია ალგორითმი უკვე აღიქვამს მხოლოდ და მხოლოდ იმ ციფრებს რომელიც კვადრატულ [ ] ფრჩხილებში არის მოთავსებული
ახლა ჩემი შემდეგი მიზანია და ამოცანაა რამენაირად ეს სტრინგი-ციფრები მთელ რიცხვებად ვაქციო და ზრდადობით დავალაგო ტექსტში და ეგაა smile.gif war.gif
* * *
CODE
import re

text = '''The transport of electric current in a metal is associated with the movement of electrons. In a normal conductor, there are frequent collisions between the conduction electrons with each other and with the crystal ions which causes a finite resistance and a loss of their kinetic energy that gets transformed into heat. In a superconductor (SC), below the superconducting transition temperature, Tc, the electrons are forming Cooper pairs that consist of two electrons that typically have opposite spin and momentum (+k, ↑) and (-k ↓) and thus in the ground state have zero spin (S=0) and momentum (K=0). These Cooper pairs are Bosons that condense into a single quantum state which develops a macroscopic phase coherence over the entire sample and enables a loss free current flow with zero electric resistance.
This superconducting 9 order and its long-range coherence can be suppressed by various ways.  The most common approach is to increase the temperature above Tc to restore the normal metallic state with individual electrons. Likewise, superconductivity can be destroyed at low temperature (T<<Tc) by applying a large magnetic field that either forces a parallel orientation of the electron spins (Pauli-limit) [2] or leads to large orbital currents (orbital limit) [3] that both break up the Cooper pairs. Such a pair breaking can also occur in magnetic superconductors due to the exchange interaction with the intrinsic magnetic moments. In general, the relationship between superconductivity and a competing magnetic order can be quite complex. For the case of a ferromagnetic order there is usually a strong suppression of SC except for very few materials for which the Cooper pairs can avoid the magnetic pair-breaking by forming a spin-triplet state [4]. For antiferromagnetic or incommensurate spin orders, the relationship with SC can be quite 2 complex and even cooperative. A prominent example is CeCoIn5 for which the magnetism coexists with superconductivity and disappears at the same time as the sample is heated or placed in a large magnetic field .
[12,1].m blabla 7, blabla7. "blablabla98 and etc"'''

pattern = re.compile(r'\[[0-9]+,\d{2}]|\[[0-9]+,\d{3}]|\[\d{2} +,\d{3}]|\[[0-9]]|\[\d{3} +,\d{3}]|\[\d+,\d]|\[\d{2}]|\[\d{3}]')


matches = pattern.finditer(text)

for match in matches:
       print(match)


ან ასეც შეიძლება სავარჯიშოდ, ნებისმიერი ტექსტი რომ ჩავსვათ კოდი მუშაობს და კვადრატული ფრჩხილების მიღმა ციფრებს აიგნორებს , დამატჩავს მხოლოდ მის შიფნით ციფრებს და თუ მძიმითაა გამოყოფილი მათაც დამატჩავს smile.gif

Posted by: Datvlas-vin-gtxovs 5 Nov 2020, 08:08
ფაქტორიალების ჯამი
CODE
n = int(input('Sheiyvanet Ricxvi: '))

jami = 0
faqt = 1

for i in range(1, n+1):
 faqt *= i
 jami += faqt

print(faqt)
print(jami)

Posted by: GeorgeSword 9 Jul 2021, 10:47
ეს თემა ამოვწიოთ



............

Posted by: Dirac 12 Jul 2021, 06:14
დამწყებ პითონისტებს ვურჩევ სპაიდერი გამოიყენონ. ბევრი წვალება არ უნდა, პირდაპირ გამზადებულია ყველაფერი. მათლაბი ან R Studio-ს მსგავსია. ჯუპიტერ ნოუთბუკის პლაგინიც აქვს.

Posted by: lepori 17 Jul 2021, 08:45
QUOTE (Dirac)
დამწყებ პითონისტებს ვურჩევ სპაიდერი გამოიყენონ. ბევრი წვალება არ უნდა, პირდაპირ გამზადებულია ყველაფერი. მათლაბი ან R Studio-ს მსგავსია. ჯუპიტერ ნოუთბუკის პლაგინიც აქვს.


სპაიდერ ვცადე და ვერ დავუმუღამე
პაიჩარმს უფრო მივეჩვიე
არადა, მატლაბის გამოცდილებით თითქოს უფრო უნდა მომერგო

შეიძლება მაშინ ძაან დამწყები ვიყავი და იმიტომ
ახლა რო ვცადო ალბათ უფრო გავერკვევი smile.gif


ისე, რამე განსაკურთრებული უპირატესობა აქვს თუ რატომ გვირჩევ სპაიდერს?
* * *
GeorgeSword
QUOTE
ეს თემა ამოვწიოთ

რას შვები, დაამხეცე პითონი?


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

Posted by: GeorgeSword 17 Jul 2021, 10:30
lepori


ბიჭო რავი დიდი პაუზა გამომივიდა პაითონში და ეხლა თავიდან მიწევს გახსენება

უკვე ბევრად მაღალ დონეზე მესმის რაღაცეები ვიდრე თავიდან როგორც დამწყებს

ტუტორიალებს ვუყურებ ისევ

პრაქტიკაში მინდა ვცადო მაგრამ არ ვიცი ეგეთი კურსი ვაბშე არის თუ არა

ჯანგოსთან კომბინაციაში ვებ დეველოპმენტის კუთხით ვისურვებდი პრაქტიკის გავლას

Posted by: Essiittaaa 18 Jul 2021, 21:58
GeorgeSword
QUOTE
პრაქტიკაში მინდა ვცადო მაგრამ არ ვიცი ეგეთი კურსი ვაბშე არის თუ არა

ჯანგოსთან კომბინაციაში ვებ დეველოპმენტის კუთხით ვისურვებდი პრაქტიკის გავლას


თუ პითონის პრაქტიკა გინდა www.codewars.com
ჯანგო ისედაც შეგიძლია დაწერო https://www.youtube.com/watch?v=SIyxjRJ8VNY&list=PLsyeobzWxl7r2ukVgTqIQcl-1T0C2mzau

Posted by: GeorgeSword 19 Jul 2021, 08:29
Essiittaaa

up.gif


CS Dojo(არხი) ხსნის კიდევ მაგრად, დამწყებებისთვის (და მგონი არამარტო) აქვს მაგარი ტუტორიალები
https://youtube.com/playlist?list=PLBZBJbE_rGRWeh5mIBhD-hhDwSEDxogDg


*******

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

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

2. მოხვდეს ისეთ წრეში სადაც კარგი გადმოცემის უნარები ექნებათ მის კოლეგებს

3. იქნებიან პროფესიონალი კარგი დონის პროგრამისტები

4. ექნებათ ისეთი მრავალფეროვანი და მაღალი დონის შეკვეთები სადაც ეს ჩვენი სტაჟიორი ტიპი განვითარდება პროფესიულად

პარალელურ რეჟიმში ყოველდღიურად რომ უნდა იმეცადინოს , ლექციებს უყუროს, აკეთოს სავარჯიშოები და აშ ეგ თავისთავად

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

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

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

პს. ჩემს ირგვლივ ვისაც ვიცნობ ან ვიცნობდი პროგრამისტებს ,აძინოჩკას' ნიღბებით მოძრაობენ რო აი თავისით ისწავლა ვითომ ბავშვობიდან მოზგი ტიპია და თან სოციალურად დისტანცირებულის იმიჯით :დდ
უკვე აღარ მჯერა ეს რაც უფრო ჩავიხედე სფეროში
ხმამაღლა არ ლაპარაკობენ ამაზე და არ ვიცი რატომ
old.gif

Posted by: levan88 19 Jul 2021, 10:05
GeorgeSword

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

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

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

შეიძლება ეს პროცესი უსასრულოდ გაგრძელდეს, ვერასოდეს ვერ იტყვი რომ ვსო აი მე უკვე ვისწავლე
მაგას ვერც კომპანიაში მოხვედრის შემდეგ იტყვი , უმეტესს შემთხვევაში კომპანიები ერთი მიმართულებით მუშაობენ და შენც იმ მიმართულებით ვითარდები
სულ რო განვითარების პიკს მიაღწიო კომპანიაში , რეალურად პაითონის მაქსიმუმ 15 % იცი მაინც

გარდა ამისა აუცილებელია გესმოდეს ინგლისური ენა , საერთოდ პროგრამირების სწავლის დაწყებამდე ადამიანმა ჯერ ინგლისური უნდა ისწავლოს მე ასე ვფიქრობ .

უნდა იკითხო დოკუმენტაცია , ვიდეოებს რო უყურებ პარალელურად შენც უნდა იმუშაო , ცვლილელები შეიტანო კოდში , კითხვები უნდა გაგიჩნდეს და პასუხები მოიძიო
როდესაც Google , You tube და Stack Overflow არსებობს ძალიან მეეჭვება ვინმე პიროვნებამ უფრო სრული პასუხი გაგცეს რაიმე კითხვაზე .
სხვათაშორის საძიებო სისტემების სწორი გამოყენება , კარგი პროგრამისტის აუცილებელი და განუყოფელი შესაძლებლობაა .

მოკლედ თუ იშრომებ ნადმვილად შესაძლებელია ,,აძინოჩკაში" ისწავლო და სადაც არ უნდა მოხვდე
მაინც ,,აძინოჩკაში" უნდა ისწავლო .

უბრალოდ რაც შენ თქვი მაღალი ანაზღაურება სტიმულია და ალბათ მაგიტომ მიდიან პროგრამირებაშიო , ძალიან სამწუხარო სიმართლეა .
სამწუხარო იმიტომ , რომ დამიჯერე 80 % ზე მეტს არ აქვს გაანალიზებული რას კიდებს ხელს და რამხელა შრომა უნდა ჩადოს .
თუნდაც უნივერსიტეტებში ძალიან ცუდი სიტუაციაა , ხალხი ისე ამთავრებს OOP ძირითადი პრინციპებიც კი არ იციან .
და თვითნასწავლების სიამაყის მიზეზი ის კი არაა რომ თვითნასწავლები არიან , ის არის რომ იციან რამხელა შრომა ჩადეს თავიანთ საქმეში .

მოკლედ შრომა არავის უნდა , კარგი სამსახური , ფული და გუგუნი კი ყველას smile.gif

Posted by: GeorgeSword 19 Jul 2021, 11:32
levan88


სიზარმაცე არც განიხილება, მით უმეტეს პროგრამირებაში, შანსი 0 აქვს ზარმაცს
მე სხვა რამეს ვამბობ

QUOTE
ახლა ასე შეხედე , ვის რათ უნდიხარ კარგ წრეში ? როდესაც კონკურენცია ამხელაა ბაზარზე .


რავი რამოდენიმე მიზეზი შეიძლება იყოს:

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

QUOTE
მოკლედ თუ იშრომებ ნადმვილად შესაძლებელია ,,აძინოჩკაში" ისწავლო და სადაც არ უნდა მოხვდე
მაინც ,,აძინოჩკაში" უნდა ისწავლო .


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



QUOTE
უბრალოდ რაც შენ თქვი მაღალი ანაზღაურება სტიმულია და ალბათ მაგიტომ მიდიან პროგრამირებაშიო , ძალიან სამწუხარო სიმართლეა .
სამწუხარო იმიტომ , რომ დამიჯერე 80 % ზე მეტს არ აქვს გაანალიზებული რას კიდებს ხელს და რამხელა შრომა უნდა ჩადოს .


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

QUOTE
მოკლედ შრომა არავის უნდა , კარგი სამსახური , ფული და გუგუნი კი ყველას


ნაკლები ინფუთით დიდი აუთფუთი ყველას უნდა და ეს დაჟე კანონზომიერიცაა
ბუნებაც მასეა მოწყობილი ატომის დონეზე, ცდილობს ეგერგეტიკული მინიმუმის მდგომარეობა დაიკავოს if not in excited state
რიგში რომ ველოდებით ვცდილობთ სკამზე ჩამოვჯდეთ დავისვენოთ
კოდს როცა წერს პროგრამისტი არ მგონია მარტივ გადაწყვეტას არ ცდილობდეს ამოცანის და ამით შრომის შემსუბუქებას

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


Posted by: levan88 19 Jul 2021, 12:47
GeorgeSword

მოდი ცოტა დავკონკრეტდეთ მაშინ biggrin.gif

აი რა ცოდნაზეა საუბარი რასაც შენით ვერ მიიღებ და თვლი რომ რომელიმე კარგ კომპანიას შეუძლია მოგცეს .
ან პროგრამირების რა მიმართულებას მიყვები ? ანუ სად შეგექმნა პრობლემა თუ ზოგადად დაწერე

Posted by: GeorgeSword 19 Jul 2021, 13:29
levan88


ოკ დავკონკრეტდეთ

მე ვარ დამწყები, ანუ პაითონს ვამუღამებ
არ ვარ პროგრამისტი ჯერ, თუმცა მაქვს ინტერესი გავხდე
ბექგრაუნდი მაქვს ექსპერიმენტული ფიზიკის, დოქტორის ხარისხი
ამას იმიტომ ვაკონკრეტებ რომ ჩემთვის ძალიან უცხო არაა ეს სფერო, ანუ კოდს რომ ვხედავ არ მაჟრიალებს :დ

გამოვთქვი უბრალოდ ზოგადი აზრი რომ აბსოლუტურად დამოუკიდებლად ნასწავლი ეგრევე ვერ იქნება იმ დონეზე მომზადებული მივიდეს და გააკეთოს საქმე დამოუკიდებლად, შეკვეთა აიღოს და აშ, იქამდე სანამ სტაჟირებასავით არ გაივლის კარგ გუნდში. ამ მოსაზრებაზე 100% არ ვდებ თავს, შეიძლება ყოველთვის არც ხდებოდეს ასე, თუმცა უფრო აქეთკენ ვიხრები, ინტუიციურად ასე ვგრძნობ

კონკრეტულად ვებ დეველოპმენტში ვთქვად
ან თუნდაც იყოს კომპანიის რაღაც შიდა დაკვეთა და აშ

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

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

Posted by: levan88 20 Jul 2021, 14:23
GeorgeSword

ალბათ პიროვნებიდან გამომდინარეა მაშინ , მაგრამ დამიჯერე შესაძლებელია ადამიანი მარტო ჩაუჯდე და საკმაოდ განვითარდე
პროგრამირებაში მსგავსი რამ საკმაოდ პოპულარული და ნაცადი მეთოდია (და ბავშვობიდან მოზგაობაც ნადმვილად არ ჭირდება biggrin.gif )
საკმაოდ ბევრი საიტია სადაც შეგიძლია ივარჯიშო სხვადასხვა პროექტებზე ან თუნდაც გატესტო რამდენად კარგია შენი კოდი .

უბრალოდ ყველა კომპანიას თავისი მიდგომა აქვს , შეიძლება შენ საკმაო ცოდნა გაგაჩნდეს მაგრამ ინტეგრაცია მაინც გაგიჭირდეს (დრო დაგჭირდეს).

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

გეთანხმები დამწყებისთვის ბევრად კარგია გუნდში მოხვდეს , მაგრამ ცოტა რთული გზითაც შეიძლება წასვლა
და მინიმუმ ჯუნიორის საფეხურამდე მიხვიდე შენით (რაც საკმაოდ გაგიზრდის კარგ გუნდში მოხვედრის შანსს)

P.S. ჯუნიორ დეველოპერი "სტაჟიორი" არ არის . ჯუნიორს შეუძლია ამოცანის ამოხსნა და პროექტზე მუშაობა .
მაგრამ უმეტესს შემთხვევაში მის კოდს ოტპიმიზაცია ჭირდება ან რაიმე მხრივ არის დასახვეწი

Posted by: GeorgeSword 20 Jul 2021, 17:39
levan88


იქნებ თავად გაგეზიარრბინა 0 - დან როგორ დაიწყე და როგორ იშოვე პირველი სამსახური
რა ეტაპის მერე გაგიჩნდა თვითრწმენა რომ გაგეყიდა ასე ვთქვად საკუთარი ცოდნა და გამოგეტანა გარეთ? ან გეცადა სამსახურის შოვნა და როგორი იყო შენი პირველი ნაბიჯები ამ სფეროში აი როცა უკვე რეალურ ამოცანების წინაშე დადექი?

თუ საიდუმლო არაა რა თქმა უნდა smile.gif


Posted by: lepori 20 Jul 2021, 18:29
GeorgeSword
QUOTE
ბიჭო რავი დიდი პაუზა გამომივიდა პაითონში და ეხლა თავიდან მიწევს გახსენება

უკვე ბევრად მაღალ დონეზე მესმის რაღაცეები ვიდრე თავიდან როგორც დამწყებს

ტუტორიალებს ვუყურებ ისევ

პრაქტიკაში მინდა ვცადო მაგრამ არ ვიცი ეგეთი კურსი ვაბშე არის თუ არა

ჯანგოსთან კომბინაციაში ვებ დეველოპმენტის კუთხით ვისურვებდი პრაქტიკის გავლას


შენც ჩემსავით ყოფილხარ
კი მოვიგონე რაღაც ამოცანები და ჩემთვის ვჩალიჩბდი მაგრამ
ალგ-ალაგ დიდი პაუზები მაქვს და მერე სულ მავიწყდება და თავიდან ვსწავლობ biggrin.gif



Posted by: levan88 20 Jul 2021, 21:40
GeorgeSword

დავიწყებ იმით , რომ ერთი წლის წინ ფუნქციაში return მნიშვნელობაც არ მესმოდა .

დაახლოებით ერთი წლის წინ დავიწყე . html / css შემდგომ native JS , ამის შემდეგ php , Laravel ზე გადავედი .
თამამად ვიტყვი დაახლოებით 8-9 თვეში ჯუნიორის შესაძლებლობებს ვცდებოდი .
და ხო ამ პერიოდში Oracle mysql შესწავლა მომიწია კიდე

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

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

Html/ Css JS Youtube ს დახმარებით შევისწავლე , Freecodecamp , Udemy კურსები .
Laravel ზეც Udemy კურსები დამეხმარა და დოკუმენტაცია , რომელიც "დაღეჭილია" ისეა ახსნილი . Laravel.com ზე


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

და ხო მოტივაციისთვის ზოგისთვის ეს ყველაფერი 25 წლის ასაკში დავიწყე .


Posted by: Not_Bono 20 Jul 2021, 21:52
levan88
QUOTE
რაღაცის გატესტვის სურვილით არაერთხელ ავმდგარვარ შუაღამეს


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

რეები მაქვს გამოვლილი, ღმერთო facepalm.gif

Posted by: levan88 20 Jul 2021, 22:04
Not_Bono

კი ბატონო , ასევე . რამდენჯერ მინატრია მეთქი არსებობდეს რაიმე ნორმალური IDE ტელეფონისთვის .

Laravel ის გამო დომენიც კი მაქვს ნაყიდი , რათა მენახა რეალურად რა როგორ ხდებოდა .

Posted by: GeorgeSword 21 Jul 2021, 17:03
levan88


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

ჩემს ირგვლივ არავინაა სწორი მიმართულება მაინც რომ მომცეს პროგრამირებაში, მაგრამ არ ვეპუები მაინც....თან 36 წლის ვარ biggrin.gif
რავი იმედს ვიტოვებ იქნებ გამეხსნას იღბლიანი პორტალი და პროფესიონალების წრეში აღმოვჩნდე
უნდა მივაწვე, თან აზარტში შევდივარ და მაინტერესებს რაც უფრო ვსწავლობ

Posted by: levan88 21 Jul 2021, 18:52
GeorgeSword

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

ჩემი რჩევა იქნება ჯერ გადაწყვიტო რა გინდა , ანუ რა მიმართულებით გინდა განვითარება .
თუ Web Development გაინტერესებს , ყველა ვარიანტში html/css JS დაიწყე .

html/css დაახლოებით 1 თვეში დაფარავ ძირითად საკითხებს . ძირითადად რაც მახსენდება არის : ატრიბუტები , თაგები , display პარამეტრები (Flex უფრო , Grid გამოტოვო შეგიძლია საწყის ეტაპზე ჩემი აზრით ) ასევე responsive და ანიმაციებზე ტყუილად ნუ დახარჯავ დიდ დროს , თუ Front არ გაინტერესებს მაინც და მაინც .

ამის მერე JS ზე როცა გადახვალ ნელნელა ბევრ რამეს შენით გატესტავ და მოიგონებ . თან https://www.w3schools.com/ ზე ყველა მეთოდი საკმაოდ კარგადაა აღწერილი .
ცოტა რო გაერკვევი მერე პაითონსაც ბევრად მარტივი თვალით შეხედავ .


Posted by: GeorgeSword 21 Jul 2021, 21:58
levan88


მადლობა რჩევებისთვის

პაითონს ვაწვები და მერე გადავალ JS ში
რაღაც ბაზისის დონეზე მაქვს უკვე : ციკლები, ლისტები, ფუნქციები , კლასები, კონსტრუქტორი და აშ
ადვილ ამოცანებს ვართმევ ხოლმე თავს მაგრამ რთულებს ვერა ჯერ, ვუყურებ ხოლმე ვიდეოებს და ისე მოიხელთებენ ხოლმე ხანდახან , მიკვირს მე რატომ ვერ შევძელი თქო smile.gif) რავი არ ვნებდები მაინც
html/css -ის არ მეშინია რო რამე, ვფიქრობ მაგას მალევე ვისწავლი

რაც შეეხება სფეროს, აი აზრზე არ ვარ მართლა სად მინდა
სადაც გავქაჩავ ალბათ იქ მინდა თუმცა აზრზე არ ვარ სად უფრო გამომივა
ეხლა კიდე ისე გამარტივდა web development ში თუ მხოლოდ საიტების გამართვა/დიზაინი მოიაზრება, მაგალითად wix ზე ჩემით ავაწყე საიტი შარშან ისე რომ საერთოდ არც ერთ ენაში არ მქონია წარმოდგენა
ანუ შედარებით მარტივ საიტს ვგულისხმობ რა თქმა უნდა
ამიტ იმის თქმა მინდა რომ უდიდესი კონკურენციაა ალბათ მაგ სფეროში, ნებისმიერ ოდნავ სმარტ ტიპსაც შეუძლია ააწყოს ნორმალური საიტი ყოველგვარი კოდის გარეშე და დაზოგოს თანხა რასაც პროგრამისტს გადაუხდიდა
აქედან გამომდინარე ვფიქრობ ხომ არ ჯობია რაიმე სფეციფიკურ სფეროში წავიდე-მაგალითად თუნდაც ისევ ჩემ სფეროში ფიზიკაში ფიზიკური ინფორმატიკით, ფიზიკური პროცესების მოდელირება სიტყვაზე ან მონაცემთა ანალიზი და აშ. იქ სადაც ასეთი მზა შაბლონები არ იდება და ვერ იდება ასე ბაზარზე
პაითონი ზოგადად მაგრად მეხმარება პროგრამირების ნიუანსებში ჩასაწვდომად გამომდინარე მისი უმარტივესი სინტაქსიდან და მგონი ყველაზე ახლოს ეგაა ადამიანურ ენასთან smile.gif


Posted by: Dirac 21 Jul 2021, 23:08
GeorgeSword
ფიზიკა თუ იცი მაშინ machine learning/data science-ს მიაწექი. გააჩნია სად ცხოვრობ. ამერიკაში თუ ხარ, დატა საიენსში თავზე საყრელადაა სამსახურები. საიტების აწყობა ფიზიკოსის საქმე არაა. ჰუმანიტარები უკეთ გააკეთებენ.

Posted by: levan88 22 Jul 2021, 00:08
machine learning/data science მარტო შესწავლა ძალიან გაუჭირდება და მითუმეტეს კარგ გუნდში მოხვედრა საერთოდ .
გარდა იმისა რომ ფიზიკა აუცილებელია ,(უფრო მათემატიკა, სტატისტიკა , ანალიზი ...) საკმაოდ სიღრმისეული სწავლა გჭირდება პროგრამირების , ალგორითმების , კომპიუტერის არქიტექტურის და ა.შ
უნდა იცოდე C , C++ , Java რომელთა მუშაობის სტრუქტურა თითქმის რადიკალურად განსხვავდება პაითონისგან .
თან საქართველოში ეგ სფერო მკვდარია და არც ევოპაში გამოირჩევა პოპულარობით . სწორედ აღნიშნეს მხოლოდ ამერიკაში თუ წაგადგება

კი ძალიან მაგარი განხრაა და სავარაუდოდ ერთი დღე ვერ მოიწყენ შენი საქმის კეთებაში მაგრამ სერიოზული მუშაობა გჭირდება და ასევე
რეპეტიტორები საკმაოდ ძლიერი (რაც გულისხმობს დიდ ხარჯებს და მრავალ წელს)

საიტების აწყობა კი ორი განხრით იყოფა თუ არ იცი : Front და Back რომელსაც მეეჭვება მაღალ დონეზე ჰუმანიტარმა გაქაჩოს .

შენ რასაც ამბობ აწყობაში Front მოიაზრება . მაგალითად მთელი Facebook როგორც გამოიყურება Front ის მხარეა
მაგრამ როგორც მუშაობს Back , ანუ სიტყვაც გეუბნეა უკანა მხარეს რაც ხდება და ვერ ხედავ . (რამხელა განსხვავებაა ხვდები ალბათ )

"იმენა" ფიზიკის ცოდნა ალბათ Game Development გამოგადგება , არ ვიცი როგორ სფეროა არ მქონია შეხება .

არ გეგონოს მოტივაციას გიგდებ , რეალურად ამ სფეროში მეც machine learning გამო მოვედი , მაგრამ ჯერ სხვა საფეხურებია გასავლელი .
მაგრამ რაიმე ისეთით დაიწყე რო განვითარება შედარებით "ადვილად" შეძლო .
გარდა ამისა შეგიძლია დაძებნო ეს თემა და საკმაოდ ბევრგან გადააწყდები რომ Back End Developer ის სკილები საკმაოდ კარგი წინაპირობაა
machine learning ში გადასასვლელად .

Posted by: Dirac 22 Jul 2021, 03:14
levan88
პირიქითაა, მაშინ ლერნინგში და დატა საიენსში პროგრამირების ღმა ცოდნა არაა საჭირო. ჩემი თანამშრომლებიდან ერთმა ორაკლში დაიწყო მუშაობა, მეორემ ამაზონში. არცერთი არ იყო სერიოზული პროგრამისტი. მეთოდები იმ დონეზე უნდა იცოდე რომ გესმოდეს როდის რა უნდა გამოიყენო. მთავარია მონაცემების წინასწარ დამუშავება სანამ რომელიმე მეთოდს გამოიყენებ (გრაფიკები უნდა ააგო, ინტუიციურად უნდა გაიაზრო ამოცანა). მეცნიერულ კვლევასავითაა და ამიტომაა ფიზიკოსისთვის უფრო ადვილი. ძირითადად პითონი უნდა გესოდეს კარგად. C++ში ძირითადი ბიბლიოთეკები უკვე დაწერილია და მცირე შანსია რომ რამის ფუნდამენტრად შეცვლა მოგიწიოს. ინტერნეტში რესურსები ოხრად ყრია.
რაც მინახავს ერთერთი საუკეთესო კურსია ნიურალ ნეთვორკზე.
https://www.coursera.org/learn/intro-to-deep-learning/home/welcome
udacity, udemy-ზეც ყრია კურსები.
კონკრეტული პროექტები აქ შეგიძლიათ ნახოთ.
https://www.kaggle.com/
ქაგლზე ერთხელ დავიწყე რაღაცა ფიზიკის პროექტის გაკეთება (მაგნიტური მომენტის დათვლა იყო საჭირო თუ იცი ატომების მდებარეობები), მერე ახალ სამსახურში მომიწია გადასვლა და დავიკიდე. ახლა რაღაცა დავიწყე ჩემთვის გასართობად ნიურალ ნეთვორკის გამოყენებით.

https://www.deeplearningbook.org/
https://d2l.ai/index.html

Posted by: GeorgeSword 22 Jul 2021, 11:41
Dirac

მოკლედ ნაბიჯ ნაბიჯ მივყვები ბაზისს და მერე ვნახოთ

ისე levan88-ს აზრს ვიზიარებ , ჯობია ალბათ ვებ დეველოპმენტით დაწყება
მაშინ ლერნინგი გაცილებით კომპლექსურად მეჩვენება ინტუიციურად, მიუხედავად იმისა არ ვიცი როგორ მუშაობს

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

Posted by: GeorgeSword 23 Jul 2021, 13:20
ტიპი რა მხეცია war.gif



Posted by: levan88 23 Jul 2021, 19:53
GeorgeSword

არც ისე სასწაული რამე გააკეთა როგორც ახლა შენ გგონია smile.gif biggrin.gif

ეს ნახე მართლა , ლექტორია თან ერთ-ერთ უნივერსიტეტში , ბევრი რამის გაგებაში საკმაოდ დაგეხმარება

https://www.youtube.com/watch?v=ijZSdmWb2t8&list=PLbZtgfvYfOp1s7Ej83hV2gN87rnLbzAIe

Posted by: GeorgeSword 24 Jul 2021, 09:33
levan88


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

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

https://youtube.com/playlist?list=PLWKjhJtqVAbkmRvnFmOd4KhDdlK1oIq23


და ეს ინთერმედიეით კურსიც ძაან კაია :

https://youtu.be/HGOBQPFzWKo



CS Dojo ს არხიც მაქვს გამოწერილი
გენიალურად ხსნის ეს ბიჭი, რთულ რაღაცეებს უმარტივესად შლის და აწვდის აუდიტორიას

https://youtube.com/c/CSDojo

Posted by: GeorgeSword 30 Jul 2021, 20:28
რამე ამოცანები დავდოთ

არ გავაპასიუროთ ეს კარგი თემა

მოდი მე დავდებ ადვილს:

გვაქვს ორი თანაბარი რაოდენობის ელემენტებიანი მთელი რიცხვების ლისტი პირობითად
a=[2, 3, 25, 7, 8]

და

b=[34, 5, 7, 9, 17]
დაწერეთ კოდი რომელიც გამოიტანს ახალ c ლისტს შედგენილს a და b ლისტების ჯამისა შემდეგი პირობით:
a-ლისტის პირველი წევრი + b-ლისტის პირველი წევრი= c-ლისტის პირველ წევრი:
c[0]=a[0]+b[0]

ასევე მეორე წევრზეც c[1]=a[1]+b[1]

ანუ c=[2+34, 3+5, 25+7, 7+9, 8+17]=[36, 8, 32, 16, 25]

ანუ
მოცემულია a=[1,2.....n]
b=[1,2.....n]
კოდმა უნდა გამოიტანოს:
c=[a[0]+b[0], a[1]+b[1],.......a[n-1]+b[n-1]]

ე.ი c=[2,4,6,8.......2n]

რიცხვები 1,2.....და აშ პირობითადაა აღებული, ნებისმიერ მთელ რიცხვებზე რომ იმუშავოს კოდმა

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

აბა იმედია არ ჩავძირავთ თემას wink.gif

Posted by: george993 30 Jul 2021, 21:30
QUOTE
კიდევ ერთი დამატებითი პირობა ჩავდოთ რომ სახალისო იყოს, კოდი რაც შეიძლება კომპაქტურად უნდა იყოს ჩაწერილი

ზუსტად სამ ხაზში დავწერე Go-ში. აბა პითონში უფრო მოკლედ თუ დაწერთ ყველაზე მარტივ ენას ვინც ეძახის biggrin.gif და მერე ჩემ კოდს დავდებ


Posted by: აბიტურიენტი 30 Jul 2021, 22:00
CODE

c = [a + b for (a, b) in zip(a,b)]

Posted by: GeorgeSword 30 Jul 2021, 23:33
george993

დადე აბა
საინტერესოა


აბიტურიენტი

მაგ კოდში ორი რამ ვერ გავიგე

1. a+b ანუ ეგრევე ერთ ლისტს უმატებ მეორეს?

2.a და b ხომ ლისტებია ხოდა for (a,b) in zip(a,b)
ანუ ლისტებითვე a,b იტერაციას როგორ ვაკეთებთ a,b ლისტებშივე?
როგორც აქამდე მხვდებოდა ყველგან i & j ანუ 2 დამატებითი ცვლადით არ ხდებოდა ლისტების იტერაცია?

მაგალითად for i in a და for j in b == for(i,j) in zip(a,b) , ესეც ხომ სწორი ჩანაწერი იქნებოდა?



ეს ვერ გავიგე და იქნებ ახსნა


მე ასე დავწერდი:

CODE

a=[1,2,3,4]
b=[5,6,7,8]
c=[ ]
for (i,j) in zip(a,b):
   if i==j:
       return c.append[a[i]+b[j]]
print(c)



ახალი ნასწავლი მაქვს და რავი ძაან არ დამცხოთ ))
დამუღამების პროცესში ვარ
თან მობით ვწერ და კოდი არ შემიმოწმებია მუშაობს თუ არა
not sure )))

Posted by: აბიტურიენტი 30 Jul 2021, 23:47
GeorgeSword
კომპრეჰენსიას ვუკეთებთ zip(a, b) -ს მოცემულ სიას, რომელიც არის ტუპლებისგან შემდგარი: [(a0, b0), (a1, b1) ... (an, bn)]
თითოეულ ელემენტზე გადავლისას დესტრუქტურიზაციას ვახდენთ ტუპლის in (a, b) რის შემდეგაც იქმნება ცვლადები a და b, რომლებიც ფარავენ (variable shadowing) გარეთა სკოუპში არსებულ იგივე სახელების ცვლადებს(a და b ლისტებს), და ენიჭებათ ტუპლის შემადგენელი მნიშვნელობები. შემდეგ უბრალოდ ვკრებთ ორ რიცხვს a + b.
QUOTE
for i in a და for j in b == for(i,j) in zip(a,b)

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

Posted by: GeorgeSword 31 Jul 2021, 03:01
აბიტურიენტი
QUOTE
თითოეულ ელემენტზე გადავლისას დესტრუქტურიზაციას ვახდენთ ტუპლის in (a, b) რის შემდეგაც იქმნება ცვლადები a და b, რომლებიც ფარავენ (variable shadowing) გარეთა სკოუპში არსებულ იგივე სახელების ცვლადებს(a და b ლისტებს), და ენიჭებათ ტუპლის შემადგენელი მნიშვნელობები. შემდეგ უბრალოდ ვკრებთ ორ რიცხვს a + b.


სიმართლე გითხრა ეს ტერმინები პირველად გავიგე მაგ. variable shadowing

ანუ ეს ტუპლები რატომ ფარავენ იგივე სახელების ცვლადებს(ლისტებს)?
ანუ ფაქტიურად როცა წერ for(a,b) აქ a და b ში ლისტები ჯერ არ იგულისხმება, არამედ რაღაც ცვლადები რომელიც გადაფარავს ამ ლისტებს? სწორად გავიგე თუ სხვაგან გავიჭერი?

Posted by: აბიტურიენტი 31 Jul 2021, 09:30
QUOTE
ანუ ფაქტიურად როცა წერ for(a,b) აქ a და b ში ლისტები ჯერ არ იგულისხმება, არამედ რაღაც ცვლადები რომელიც გადაფარავს ამ ლისტებს?

კი. მანდვე იქმნება a და b ცვლადები დესტრუქტურიზებით.

Posted by: GeorgeSword 1 Aug 2021, 19:06
აბიტურიენტი


მადლობა

ჩემ კოდს შეგიძლია გადახედო?
ამ მეთოდით ვცდილობ და სადღაც შეცდომას ვუშვებ down1.gif


CODE
a=[1,2,3,4]
b=[5,6,7,8]
c=[ ]
for (i,j) in zip(a,b):
  if i==j:
      c.append[a[i]+b[j]]
print(c)



მოკლედ ვიცი უაზრობას ვწერ, i და j გამოიტანს რიცხვებს ლისტებში sad.gif ანუ დაიკიდე ეს კოდი

ანუ საბოლოო მიზანია ასეთი მეთოდით შევყარო ც ლისტში და არ გამოვა ხომ? c.append[a[i]+b[j]]

Posted by: აბიტურიენტი 1 Aug 2021, 19:31
QUOTE
ანუ საბოლოო მიზანია ასეთი მეთოდით შევყარო ც ლისტში და არ გამოვა ხომ? c.append[a[i]+b[j]]

შეგიძლია დაწერო c.append(i + j), i და j უკვე ის რიცხვებია რომლებიც გინდა ამოიღო.
თუ საჭიროა ინდექსი შეგიძლია while ლუპი გამოიყენო, ან enumerate.

Posted by: lepori 1 Aug 2021, 19:45
GeorgeSword
მე ესე ვქენი>>>

a=[1,2,3,4]
b=[5,6,7,8]
c=[]

for i in range (0, len (a)):
c.append( a[i] + b[i])

Posted by: GeorgeSword 1 Aug 2021, 22:20
აბიტურიენტი
lepori

გაიხარეთ ჯიგრები ხართ up.gif


რამე ამოცანები დადეთ არ გინდათ?

Posted by: Dirac 3 Aug 2021, 06:00
QUOTE (george993 @ 30 Jul 2021, 21:30 )
QUOTE
კიდევ ერთი დამატებითი პირობა ჩავდოთ რომ სახალისო იყოს, კოდი რაც შეიძლება კომპაქტურად უნდა იყოს ჩაწერილი

ზუსტად სამ ხაზში დავწერე Go-ში. აბა პითონში უფრო მოკლედ თუ დაწერთ ყველაზე მარტივ ენას ვინც ეძახის biggrin.gif და მერე ჩემ კოდს დავდებ

აგერ ერთ ხაზში დაგიწერა biggrin.gif
აბიტურიენტი
QUOTE
c = [a + b for (a, b) in zip(a,b)]


აგერ კიდო მეორე ვერსია
c = list(np.array(a) + np.array(b))

თუ სისწრაფე გადარდებს, numpy უნდა გამოიყენო. თუ მათემატიკური ოპერაციები გაქვს, დიდ ერეიზე მოქმედებები, ნამპაით ვექტორიზაცია უნდა მოახდინო, ანუ ციკლის ნაცვლიად np.dot(a, b), a+b და ეგეთები. numpy c-ზე არის დაწერილი, დაფრინავს.
* * *
lepori
QUOTE
სპაიდერ ვცადე და ვერ დავუმუღამე
პაიჩარმს უფრო მივეჩვიე
არადა, მატლაბის გამოცდილებით თითქოს უფრო უნდა მომერგო

შეიძლება მაშინ ძაან დამწყები ვიყავი და იმიტომ
ახლა რო ვცადო ალბათ უფრო გავერკვევი smile.gif


ისე, რამე განსაკურთრებული უპირატესობა აქვს თუ რატომ გვირჩევ სპაიდერს?


ის უპირატესობა აქვს რომ ჩართავ და ეგრევე დაწერ კოდს რამე სეთინგების გარეშე.

Posted by: GeorgeSword 18 Aug 2021, 07:09
ერთი შეკითხვა მაქვს

კლასის შექმნას აზრი თუ აქვს კონსტრუქტორის გარეშე
თუ გსმენიათ ან თავად გქონიათ ასეთი პრაქტიკა?
მე პირადად ვერ წარმომიდგენია თუ ეს კლასი სხვა კლასის ქვეკლასი არაა რომელშიაც უკვე არის კონსტრუქტორი

თქვენ რას იტყვით?

Posted by: Dirac 19 Aug 2021, 06:33
GeorgeSword
QUOTE
კლასის შექმნას აზრი თუ აქვს კონსტრუქტორის გარეშე

კი
QUOTE
თუ გსმენიათ ან თავად გქონიათ ასეთი პრაქტიკა?

კი. ხშირად ვწერ ასეთ კოდს
CODE

Class Settings:
   SAXELI = "ბიძინა"
   GVARI = "ივანოვ"

დიქშიონარიც იგივეს იზამდა, მაგრამ მე კლასი მირჩევნია.

ასევე, staticmethod დეკორატორს თუ ვიყენებ.
https://pythonbasics.org/static-method/
ამ შემთხვევაში კლასი არის უბრალოდ მსგავსი ფუნქციების ერთობლიობა.

Posted by: GeorgeSword 20 Aug 2021, 09:44
Dirac
QUOTE
დიქშიონარიც იგივეს იზამდა, მაგრამ მე კლასი მირჩევნია.



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


QUOTE
ასევე, staticmethod დეკორატორს თუ ვიყენებ.

აუ ესენი უნდა გადავიმეორო, სულ მავიწყდება :დ , სტატიკმეთოდ კლასმეთოდ დეკორატორები

Posted by: levan88 20 Aug 2021, 15:58
GeorgeSword

data = [1,2,3,4]

result = [i for i in data] - ტრიალდება ციკლი და თითოეულ i ინახავს ლისტში . შედეგი გექნება [1,2,3,4]
result = [i+2 for i in data] - ამ შემთხვევაში i+2 შეინახავს თითოეულ ელემენტად , შედეგი გექნება [3,4,5,6]
result = [data[i] for i in range(0,len(data))] - აი ამ მაგალითადანაც მიხვდები

მარტივ ენაზე ესეა რა biggrin.gif

უფრო გასაგებად რო ამოვხნათ ზედა ამოცანა :


a=[1,2,3,4]
b=[5,6,7,8]
c = {}

for i in range(0,len(a)):
c[a[i]] = b[i]

d = [i+j for i,j in c.items()] - .items() tuple სახით დაგიბრუნებს Dictionary_ს key,value მაგალითად : [ (key,value), (key,value) ]

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

Posted by: GeorgeSword 21 Aug 2021, 10:36
levan88

QUOTE
d = [i+j for i,j in c.items()]


ანუ რამდენადაც მივხვდი

ასეთ რაღაცას დააბრუნებს -d= [(1+5), (2+6), (3+7), (4+8)]

ანუ ჯერ დიქშიონარიში დააწყვილე ქი:ველიუ წყვილებად 1:5, 2:6 და აშ.. და მერე ცარიელ ლისტში იმ წყვილების ჯამი შეყარე იტერაციით :
i+j
იმედია სწორად მივხვდი, არ შემიმოწმებია კოდი

Posted by: levan88 21 Aug 2021, 10:53
GeorgeSword

კი სწორედ გაიგე . items() ფუნქცია რას აკეთებს გადახედე თუ არ იცი საკმაოდ მარტივი და გამოსადეგარია .

ერთ ხაზიან For ს რაც შეეხება , ზუსტად ამას აკეთებს :

d = [ ]
for i,j in c.items():
d.append( i + j )

Posted by: GeorgeSword 22 Aug 2021, 16:48
levan88

რა მაგის პასუხია და მოკლედ ცოტა სხვა ტიპის შეკითხვა, ოფტოპიკია ^^
თუ რამე მასალა მოგეპოვება უფრო ვიდეო ტუტორიალები რამე გამოსადეგი ძაან დამეხმარება რა , ლაკონური ჯობია :დ

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

ჩემი კითხვა მდგომარეობს იმაში ზოგადად ადვილად ხდება სინქრონიზაცია შენს ლოკალურ რეპოზიტორსა და გიტჰაბს შორის

ანუ უფრო მარტივად :

VS Code ზე ვთქვათ შევიტანე ცვლილება კოდში, მინდა რომ სინქრონიზაცია გავუკეთო გიტჰაბის რეპოზიტორზე(ალბათ git ტერმინალიდან კომანდებით) ამ ახალ კოდს და შემდეგ იმედია ამ განახლებულ ინფორმაციას უკვე ჰეროკუს(ჰოსტინგის პლატფორმა ამ შემთხვევაში) ჰოსტინგზეც უნდა განაახლოს ავტომატურად, რადგან ჰეროკუ ხომ თავისთავად გიტჰაბიდან მიიღებს განახლებულ ვერსიას კოდისას (იმედია).

ეს ყველაფერი რომ გავაკეთო ძაან საჩალიჩოა? ანუ სინქრონიზაცია ამ ყველაფრის ? :დდ


პირველად ვაკეთებ :უსერ:

Posted by: c2h5oh 22 Aug 2021, 18:53
GeorgeSword
არაფერი ჩალიჩი არუნდა. ჰეროკუ თვითონ უყურებტ როპოზიტორიას და ყველა კომიტზე ანახლებს. ვაბშე არაფერი არგინდა პროსტა დაფუჩე ცვლილება და ვსო

თუ ეგეთი რამის გაკეთება custom სერვერზე მოგინდება git hooks ქვია

Posted by: levan88 22 Aug 2021, 18:59
GeorgeSword

აუ უბრალოდ vs code გინდა მიაბა Git ს ?

ჰეროკუს Automatic Deploys ფუნქცია აქვს , რომელიც ყოველ ახალ push ზე თავად ანახლებს . (თუ სწორედ მახსოვს )


https://www.youtube.com/watch?v=3Tn58KQvWtU - წესით გითის და ვსკოდის ურთიობის მოგვარებაში უნდა დაგეხმაროს .


VS Code დიდი მომხმარებელი არ ვარ ზოგადად , IntelliJ პროდუქტთან მიწევს ძირითადად შეხება .

Posted by: GeorgeSword 22 Aug 2021, 23:04
c2h5oh
levan88

მოკლედ გავერკვიე ვიეს კოდის სინქრონიზაციის თემა გითზე

ძაან ადვილი ყოფილა და მეკიდე უფრო ძნელი მეგონა :დ

მადლობა ენივეი smile.gif

მოკლედ ამ ჯახირობაში ისიც გამოვარკვიე რომ ნუბი როცა ხარ ამ საქმეში ჰეროკუზე გაცილებით ადვილად მიაბავ github რეპოზიტორიას ვიდრე bitbucket-ისას, რადგან bitbucket-ზე პაიპლაინებით ხდება და კაროჩე საჩალიჩო თემაა
ხოლო როცა github რეპოზიტორიას აბავ ჰეროკუზე, ავტომატურად ჰეროკუ გთავაზობს ამას, ჩაშენებულივით აქვს, ჯასთ შენი github- უსერნეიმი და რეპოზიტორიის სახელი უნდა ჩააგდო და ეგრევე მიაბავ ^^

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


ცვეტში მეც მაგ ვიდეოს ვუყურე სანამ დამილინკავდი და ტიპი იმენნა იდეალურად ხსნის :დ
ყოველგვარი რაღაც ზედმეტი გარტულებების გარეშე

ზოგს რა უაზრო ახსნა აქვს, ცალკე მაგასთან მიწევს ჭიდილი :დ facepalm.gif

Posted by: levan88 22 Aug 2021, 23:29
GeorgeSword


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

https://www.youtube.com/watch?v=SC2XzQ-tKKQ

Posted by: GeorgeSword 24 Aug 2021, 15:53
levan88

მადლობა smile.gif

ცოტა კიდე გავაოფებ თემას და გკითხავ ვებ დეველოპმენტს როგორ ხედავ ზოგადად?
არსებობს უამრავი შაბლონები, უამრავი მზა ფუნქციონალით, სიმართლე რომ ვთქვა დიდათ ეს არ მიწყობს ხელს მოტივაციაში
ანუ რომ ვიცი რომ სიტყვაზე 5 წუთში სტატიკური საიტისთვის ავაწყობ მაგარ საიტს , რატომ უნდა ვიწვალო საათები ამისთვის from the scratch?
არა უნდა იცოდეს ადამიანმა ყველა პონტში ხელით დაწერა მაგრამ მე უკვე შემდგომ ვიძახი რა, პატარა შეკვეთებზე რავი დავიჯერო სულ ხელით უწერენ ხოლმე 0-დან?
უფრო ეჭვი მაქვს შაბლონს იღებენ (ან თავისას ან სხვისას) + მოდიფიკაციას გაუკეთებენ და ვუალააა - მარტივი საიტიც მზადაა ))))))

ისიც ვიცი რომ ვებ დეველოპმენტი ვითარდება და ფეხის აწყობაა საჭირო, უამრავი ინსტრუმენტებით და აშ.
არსებობს კიდევ უამრავი to be customised ტასქი რომელიც არ მოიპოვება ასეთ შაბლონურ საიტებზე, ასევე აღარ ვსაუბრობ დინამიურ საიტებზე სადაც უკვე რთულდება ამოცანები და აი მანდ შაბლონები დიდი შანსია აღარ გამოგადგეს, realtime databases and etc.... მილიონი სიტუაციაა მოკლედ სადაც უკვე ჭირდებათ სქილების მქონე პროგრამისტი და არა შაბლონისტი :დ

ისე რომელი მიმართულებით მუშაობ?

Posted by: პითონი 24 Aug 2021, 17:45
QUOTE (GeorgeSword)
ეჭვი მაქვს შაბლონს იღებენ (ან თავისას ან სხვისას) + მოდიფიკაციას გაუკეთებენ და ვუალააა - მარტივი საიტიც მზადაა ))))))

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

Posted by: GeorgeSword 24 Aug 2021, 18:05
პითონი


QUOTE
მთავარია იცოდე კოდის გარჩევა, რომ ცვლილება შეიტანო თუ საჭიროა.


კი ეგ თავისთავად

ალბათ არსებობს სიტუაციები რომ გადაკეთებას იმდენი ჩალიჩი უნდა ჯობია თავად დაწერო ნულიდან და ბარემ მოირგო როგორც გინდა

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

Posted by: პითონი 24 Aug 2021, 19:17
GeorgeSword
QUOTE
შენც გაქვს შეხება დეველოპმენტთან?

მოყვარულის დონეზე.

Posted by: levan88 24 Aug 2021, 20:39
GeorgeSword

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

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

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

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

Posted by: GeorgeSword 24 Aug 2021, 21:10
levan88
QUOTE
რა ეტაპზე ხარ ახლა ? შეგიძლია საიტის გადინამიურება ?



React ს ვსწავლობ, ანუ ფრონტისკენ მიჭირავს გეზი
რაც ფრონტში მეზარება ესაა css html მარქაფის კარგად სწავლაზე დროის ხარჯვა, ასე მგონია მაგას ბოლოსკენ მოვიტოვებ ან მარქაფისტები ცალკე ჯგუფია და აკეთებენ ან უბრალოდ როცა დამჭირდება მოვიძიებ ინფოს გუგლში და მერე დავუთმობ დროს

ანუ ფუნქციონალზე მაქვს აქცენტი აღებული რათქმა უნდა ოღონდ ფრონტის ჭრილში
ბექი არასოდეს მიცდია, საიდანღაც უნდა დამეწყო და ფრონტიდან დავიწყე
დინამიურობამდე მიკლია ბევრი ალბათ, 1 კვირაა რაც რეაქტი დავიწყე, ნელნელა მოვდივარ აზრზე რა ფუნქციონალი როგორ მუშაობს ფრონტში

firebase realtime databases მაქვს გასარჩევი რეაქტში, რაღაც პროექტისთვის მჭირდება

მიუხედავად იმისა რომ ვებ დეველოპმენტში გადავდგი ნაბიჯი თან რაღაც პონტში გული მწყდება პაითონზე, დატა საინსში(ფიზიკის უფრო) ადვილად ვიშოვიდი მომენტ სამსახურს ვიდრე დეველოპმენტში, მაგრამ ნუ რაცაა ესაა ...აქ შემიძლია რეალური საიტები ავაწყო ხოლო დატა საინსში ასე ჩემთვის ვერ ვივარჯიშებ თუ არ ამიყვანეს ჯგუფში რეალისტურ ამოცანებზე და ეხლა ისეთი დროა კორონა და აშ ფულ ტაიმ ჯობის პოვნა ჭირს
ალბათ ამიტომაც დეველოპმენტისკენ ავიღე გეზი....მერე ვნახოთ

Posted by: პითონი 24 Aug 2021, 22:52
ვინ რისთვის სწავლობთ პითონს?

ანუ რა განხრით გინდათ წასვლა და რატომ?

Posted by: levan88 25 Aug 2021, 16:03
პითონი

მიკროსერვისებისთვის ვსწავლობ Flask .

GeorgeSword

https://youtu.be/YeyFwT1Dgbw

შენს წინა კითხვაზე პასუხი biggrin.gif

Posted by: GeorgeSword 25 Aug 2021, 18:29
levan88


აი ეგაა რა :დ



......

Posted by: lepori 21 Feb 2022, 15:25
https://www.facebook.com/groups/994676704761136/?hoisted_section_header_type=recently_seen&multi_permalinks=994769178085222

გადაინტერესებთ

პითონის ბითქემფის ფბ ჯგუფი

Posted by: NinjaRacer 22 Feb 2022, 10:37
რა კარგია რომ არ დამეზარა ამ ენის სწავლა რამდენ რამეში გამომადგა.

Posted by: lepori 30 Apr 2022, 12:21
https://www.facebook.com/groups/954514315243520
დაინტერესებულთათვის, კაი ჯგუფი ჩანს smile.gif
Python4Beginners

Posted by: Number 26 May 2022, 16:28
ხომ არ იცით პითონის IDLE-ში როგორ გამოვატანინო ქართული ფონტი? ლათინურად მუშაობს მხოლოდ და ქართულს რომ ვწერ ფაილში კითხვის ნიშნებად აჩენს... ამ დროს საბლაიმ ტექსტიც დაყენებული მაქვს ამავე კომპზე და მანდ ჩვეულებრივად შეგიძლია ქართულადაც დაწერო. მადლიობააა

Posted by: Juventino 30 Jul 2022, 12:57
+++++++++++++++++++++++++++++
+++++++++++++++++++
დავფიქსირდე

Posted by: Datvlas-vin-gtxovs 16 Aug 2022, 18:17
ჯიგრული სავარჯიშოები

https://codingbat.com/python

Posted by: gigaloz 19 Aug 2022, 19:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Posted by: Dirac 10 Sep 2022, 04:28
ამ კაცს აქვს კარგი ვიდეოები, დიზაინ პატერნზე, როგორ დაწერო კარგი კოდი.

Posted by: Freestyle 10 Sep 2022, 22:05
რამე დისქორდ სერვერები არ გაქვტ სადაც ერთად გადიხართ, სწავლობთ? ბევრად მარტივია რამდენიმე კაცი როცა იკრიბება

Posted by: lepori 22 Apr 2023, 14:35
https://www.facebook.com/quantoricom/posts/pfbid02b1ufB1UdBpr8UtwmMoiB6dz2nQo6obTqHmPuhNcqnWzsQwhH4u4rM2eehjdMMYU2l

Quantori is happy to announce Quantori Python School!
.
.
.
.
Python School Road Map:
• Start: May, 2023
• Online classes twice a week in late afternoon time
• Course duration: 3 months
• The best students will join Quantori team as junior Python devs
• Training language: English
As a student you will be able to:
• Structure and deepen your knowledge of Python and its ecosystem
• Improve your code, master the best practices and cool language features
• Learn how to create autotests, master the basics of data processing, learn how to write asynchronous python code
• Improve your understanding of OOP
Requirements:
• Upper-intermediate English or higher
• Able to plan, efficiently organize time, and multitask
Nice to have
• Expertise in data science/QA/analytics or other programming languages
Fill out the application form by May 1 to apply, link in bio.

Posted by: lepori 18 Jun 2023, 06:39
ამოცანა:
გვაქვს რაღაც სიტყვა (string)
ეს სიტყვა უდნა გავყოთ შუაზე და ჯერ მეორე ნახევარი დავწეროთ მერე პირველი
მაგალითად:
CODE
in: lepori
out: orilep


თუ კენტია შუა ასო პირველნახვარს მიყვება:
CODE
in: forum
out: umfor



....
if-else გამოყენებით ვიხიმანდრე რაღაც:
» სპოილერის ნახვისთვის დააწკაპუნეთ აქ «



მაგრამ
გვაქვს შეზღუდვა
დავწეროთ პროგრამა რომელიც ამას გააკეთებს იფელსეების გარეშე
მაგას ვეღარ ვშვრავ

Posted by: აბიტურიენტი 18 Jun 2023, 07:44
თუ შუა ასო პირველ ნახევარს მიყვება ესე იგი მეორე ნახევრის სიგრძე უნდა გამოთვალო და ბოლოდან მაგ ინდექსზე გადაჭრა სტრინგი
» სპოილერის ნახვისთვის დააწკაპუნეთ აქ «

Posted by: Link 7 Mar 2024, 15:00
lepori
s = "lepori"
middle_index = (len(s) + 1) // 2
output = s[middle_index:] + s[:middle_index] # orilep


ხო , ვიცი, ვიცი, ძალიან დიდიხნის პოსტია მაგრამ... მაინც ვცადე.


პითონი
QUOTE
ვინ რისთვის სწავლობთ პითონს?

ეეჰ. წვალებ-წვალებით sms gateway დავწერე რომ კონკრეტულმა სოფტმა
რომელსაც არ აქვს custom API (ჩაშენებული აქვს ბილაინის თუ რაღაცის აპი მხოლოდ) შეძლოს სმსოფისი ან სენდერ.ge –თი სმს დაგზავნოს.
მერე დავუმატე ეს დაგზავნა ტელეგრამზეც.
მინდა ვაცაპი და ვაიბერი მაგრამ ბიზნეს account-ები არ მაქვს.


ახლა დავამთავრე raspberry elevator access system : )) ფრონტით და ბექით, მაგიტომ შემოვიხედე აქ.
რასპზეა rfif+id reader-ი, რელე და lcd
ბარათის დადებისას flflფლასკს ეკითხება ჩაიხედოს მონგოში მოძებნოს ბარათი
ის აბრუნებს პასუხს (თავისი ბალანსით ბარათზე)
აღებს რელეს და გამოაქვს lcd -ზე ბალანსი რამდენი დარჩა. აჭრის 10 თეთრს (პირობითად)
შესაბამისად თუ ეგეთი ბარათი არაა, ეკრანზე გამოაქვს ერორი.
ნუ თუ ანგარიშზე არაა, გამოაქვს შესაბამისი
ამასობაში არა-აქტიურ მდგომარეობაში ინახავს ყველა მიდებული ბარათის ნომერს.
რომ თუ მოგვიანებით დამატება მომიწევს, დროის მიხედვით შევძლო იდენტიფიცირება.


ფრონტზე ბარათების დამატება, წაშლა, გათიშვა, დაჯგუფება (ჯგუფის ყველა ბარათი იყენებს მთავარი ბარათის ანგარიშს) , ხელით "ბალანსის" დამატება, ნომრების, ტელეგრამების etc etc etc
და ცოტა რომ დარჩება ანგარიშზე დაუგზავნის სმს-ს შეავსეო. ან ტელეგრამზე. (ეს უკვე წინა "პროექტის" გამოცდილებით)
რამდენიმე დღეში ლიფტში დავაყენებ.


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


მაგის მერე სახის ამოცნობა პაწაწინა კამერით. რომ ამოიცნობს ვინმეს ჩამოაჭრას ის პირობითი 10 თეთრი და
ლიფტის ამგზავროს. ეს yolo (v5, v8, v9), არაა მაინცდამაინც რთული.



იდეებს რა ვუყო-ო facepalm.gif


ძალიან კი მინდა, მაგრამ ძალიან ვწვალობ, იმაზე მეტად ვიდრე საჭიროა...აშკარად.
არ მესმის ადამიანები ამხელა ინფორმაციას როგორ იმახსოვრებენ
ან მეორე ვარიანტია, ასაკმა მაინც თავისი ქნა.
ან მესამე ვარიანტია - დებილი ვარ და ვერ ვიმახსოვრებ.
ნებისმიერ შემთხვევაში – ჩემ ჭიას ვახარებ რა user.gif

შენ? biggrin.gif

Posted by: Roofus 11 Mar 2024, 23:02
Link
https://payze.io/en
https://pocketbase.io/

ბანკს რომ თხოვო დარიცხვის სმს-ში დანიშნულებაც მოაყოლონ და ეგ გაპარსო?)

Posted by: Link 12 Mar 2024, 15:13
Roofus
alk.gif 2kiss.gif

QUOTE
What do I need to become your client?
In Georgia, you must have a legal entity and an active bank account in TBC or Bank of Georgia.


აი დავაყენებ შაბათს yes.gif
იმუშაოს ერთი 2 თვე ხელით შეყვანილი "ბალანსებით" და მერე მგონი იურიდიული პირი არის ამხანაგობა. თუ არა და დავრეგისტრირდები იურიდიულ პირად.



სმს- კიდე.. არა ბანკმა არამგონია დანინUშლება მოაყოლოს ჩარიცხვაში user.gif
მოიცა, შენ გულისხმობ gprs gsm module -ი პირდაპირ ჩავუყენო raspberry-ს თავის ქართული ნომრით და სმს-რომ მიიღებს გაპარსოს?


უი .. არ ჭირდება დანიშნულება სახელი გვარი ჩანს rolleyes.gif
მაგრამ ახლა როგორ მეზარება კიდევ ერთი მოდული

გახსოვს ეს? ))))
user posted image



p.s. ეს payze მომწონს. მგონი ყველაზე მარტივი იქნება.
ვოტ ,, ტყუილად არ დამიპოსტავს up.gif up.gif Thank you !


თან ლოკალური მონგო მიხედავს ლოკალურ ამბებს. (რეპლიკა)
main-ი მიხედავს ბალანსებს და გვერდზე კორპუსში რომ ჩავურთო , ან კიდე სადმე სხვაგან, ერთი გადახდის სისტემა main-იდან მიხედავს ყველა რეპლიკას და დაუ-აპდეიტებს ბალანსებს user.gif

მაგარია up.gif

Posted by: Roofus 13 Mar 2024, 09:27
Link
QUOTE
მოიცა, შენ გულისხმობ gprs gsm module -ი პირდაპირ ჩავუყენო raspberry-ს თავის ქართული ნომრით და სმს-რომ მიიღებს გაპარსოს?

კი
QUOTE
გახსოვს ეს? ))))

მახსოვს კი ყველაფერი smile.gif და მიხარია რომ პროგრესი გაქვს! smile.gif

QUOTE
ვოტ ,, ტყუილად არ დამიპოსტავს   Thank you !

Welcome!

alk.gif

Posted by: DidYouSeenMyMouse 17 Mar 2024, 16:57
ოდესმე რამეში პითონი გამოადგება კაცს??

Posted by: lepori 18 Mar 2024, 11:45
QUOTE
ოდესმე რამეში პითონი გამოადგება კაცს??

არაფრის მაქნისია
სულ სძინავს
2 კვირაში ერთხელ 1 თაგვს გადასანსლავს და ისევ დაიძინებს

გამოუსადეგარია yes.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)