Learning Python - step by step

هنا توجد كل المواضيع المتعلقة بالبرمجيات المفتوحة المصدر

المشرف: Karam

Learning Python - step by step

مشاركة غير مقروءةبواسطة Karam » الخميس فبراير 03, 2011 12:15 am

البرنامج (1) بلغة بايثون

اسم الملف:
hello.py

الوظيفة:
اظهار عبارة "Hello World"

الكود:
CODE: تحديد الكل
#!/usr/bin/env python

print "Hello World"


الشرح:
السطر الأول:
CODE: تحديد الكل
#!/usr/bin/env python


هو عبارة عن أمرّ للـ shell والهدف منه تحديد المفسّر الذي نريد تفسير الكود عن طريقه
بمعنى آخر : إذا كان لدينا Python2.5 و Python2.6 و Python3.1
فإن السطر الذي كتبناه سيؤدي إلى إختيار المفسّر الإفتراضي لـبايثون وهو Python2.6
ويمكن استبدال ذلك السطر عندما نريد استعمال مفسرات أخرى .. مثلاً لنستخدم Python3.1 نكتب:
CODE: تحديد الكل
#!/usr/bin/env python3.1


السطر الثاني:
CODE: تحديد الكل
print "Hello World"

تابع Print يقوم بطباعة الـ Objects المررة إليه
أنا بتنفس حرية .. ما تقطع عني الهوى
صورة العضو الشخصية
Karam
مشرف منتدى البرمجيات المفتوحة المصدر
مشرف منتدى البرمجيات المفتوحة المصدر
 
مشاركات: 2039
اشترك في: الخميس أكتوبر 01, 2009 2:50 pm
مكان: Stadt Ilmenau, Thuringen, Germa
الجتس: ذكر
الشهادة الثانوية: Syria
الجامعة: Damascus
الكلية: ITE
المرحلة الدراسية: السنة الرابعة
الاختصاص: شبكات و نظم

Re: Learning Python - step by step

مشاركة غير مقروءةبواسطة Karam » الخميس فبراير 03, 2011 12:45 am

print Function


آلية عمل print :

القاعدة الأولى والأهم في لغة Python هي أنّ كلّ الأشياء عبارة عن classes وobjects أي Pure OOP

وهذه القاعدة هي أساس عمل التابع print حيث يقوم بالخطوات التالية :
بفرض أنّ لدينا السطر التالي (حيث obj هو غرض ما)
CODE: تحديد الكل
print obj


الخطوة الأولى:

يقوم بالوصول إلى ما يدعى بـ special method تدعى __repr__ وهيّ موجودة في كل صفوف لغة python .. حتى في الصفوف الـ abstract هي موجودة بشكل افتراضي إنّ لم نقم بالتعديل عليها
وعمل هذه الـ method هو تحويل القيمة الخاصة للغرض إلى string
كمثال :
بالنسبة للـ (int) لدينا: 2 هي "2"
بالنسبة للـ (float) لدينا: 1.12 هي "1.12"
بالنسبة للـ (str) لدينا: "hello" هي "hello"
بالنسبة للـ (Abstract) لدينا: obj فإنه يصبح عبارة عن string يدل على اسم الـ class الذي ينتمي له الغرض وعنوان ذلك الغرض في الذاكرة مثلاً (الغرض a من الصف A يكون "<__main__.A instance at 0x0000000002AF2B08>")

الخطوة الثانية:

بعد أن حصل على string format للـ object يقوم باستدعاء وحدات الإخراج الموجودة في module sys
وهي موجود في stdout class
وفيها توابع الإظهار output المعيارية .. وأقصد بالمعيارية (لا تستطيع طباعة Abstract classes)
يعني تقوم بإظهار المعطيات البسيطة مثل int و str و float
وهذا مثال على هذه التوابع :
CODE: تحديد الكل
import sys
sys.stdout.write("hello\n")
sys.stdout.write(12)


فيقوم التابع print بتمرير القمة الخاصة للـ object على شكل string لهذا التابع المعياري (طبعاً اعتماداً على __repr__ فهي التي أعطتنا القيمة الخاصة للـ object على شكل string)

الخطوة الثالثة:

تقوم بطباعة سطر جديد "n\"
أنا بتنفس حرية .. ما تقطع عني الهوى
صورة العضو الشخصية
Karam
مشرف منتدى البرمجيات المفتوحة المصدر
مشرف منتدى البرمجيات المفتوحة المصدر
 
مشاركات: 2039
اشترك في: الخميس أكتوبر 01, 2009 2:50 pm
مكان: Stadt Ilmenau, Thuringen, Germa
الجتس: ذكر
الشهادة الثانوية: Syria
الجامعة: Damascus
الكلية: ITE
المرحلة الدراسية: السنة الرابعة
الاختصاص: شبكات و نظم

Re: Learning Python - step by step

مشاركة غير مقروءةبواسطة Karam » الخميس فبراير 03, 2011 11:44 am

String Format


بمكننا تمثيل الـ string في python بأحد شكلين :
  • إما بين double quote ( " )
    مثال: "Hello"
  • أو بين single quote ( ' )
    مثال: 'Hello'

لكن لا نستطيع كتابة string بهذا الشكل : "Hello'
هذا يؤدي إلى SyntaxError: EOL while scanning string literal


يوجد تقنية Triple Quote في لغة Python تسهّل عمليّة تعريف string من عدّة أسطر .. أقصد بالـ string من عدّة أسطر وجود المحرف 'n\' مرة واحدة على الأقل

كمثال: (لو أردت أنّ أكتب الأسطر التالية)
ABCDE
ABCD
ABC
AB
A


إذا أردنا استعمال التريقة التقليدية فنقوم بتنفيذ الكود التالي :
CODE: تحديد الكل
S = "ABCDE\nABCD\nABC\nAB\nA"

print S


ولكن باستخدام تقنية Triple Quote نقوم بكتابة الكود التالي :
CODE: تحديد الكل
S = """ABCDE
ABCD
ABC
AB
A"""

print S


هذا يوفّر الكثير من العناء في إظهار بعض الـرسومات (عن طريق المحارف) المعقدة

مثلاً هذه رسمة لشجرة الاستدعاءات العودية لـ fibonacci (لاحظ السهولة في تمثيل الـ string)
CODE: تحديد الكل
fib = '''
                                 fib(5)
                                __/\\__
                             __/      \\__
                          __/            \\__
                       __/                  \\__
                      /                        \\
                  fib(4)                      fib(3)
                 __/\\__                      __/\\__
              __/      \\__                __/      \\__
             /            \\              /            \\
          fib(3)         fib(2)         fib(2)         fib(1)
         __/\\__           |\\___          |\\_______
      __/      \\__        |    \\___      |        \\
     /            \\       |        \\     fib(1)   fib(0)
   fib(2)        fib(1)   fib(1)    \\
    |\\_______                       fib(0)
    |        \\
   fib(1)   fib(0)

'''
print fib


يكون الخرج بالشكل التالي

صورة
أنا بتنفس حرية .. ما تقطع عني الهوى
صورة العضو الشخصية
Karam
مشرف منتدى البرمجيات المفتوحة المصدر
مشرف منتدى البرمجيات المفتوحة المصدر
 
مشاركات: 2039
اشترك في: الخميس أكتوبر 01, 2009 2:50 pm
مكان: Stadt Ilmenau, Thuringen, Germa
الجتس: ذكر
الشهادة الثانوية: Syria
الجامعة: Damascus
الكلية: ITE
المرحلة الدراسية: السنة الرابعة
الاختصاص: شبكات و نظم

Re: Learning Python - step by step

مشاركة غير مقروءةبواسطة Karam » الخميس فبراير 03, 2011 5:57 pm

Physical Line vs Logical Line


هذا المفهو الجديد الذي لم نعتد عليه في دراساتنا السابقة .. الأسطر الفيزيائية والأسطر المنطقية ..
ماالمقصود بفيزيائي ومنطقي ؟!؟

إليكم هذا المثال

إذا كان لدينا جملة ولتكن : Hi every buddy. Nice to see you
من الواضح أنها عبارة عن حملتين الأولى Hi every buddy والثانية Nice to see you
  • يمكنني كتابة تلك الجملتين على سطر واحد أي:
    Hi every buddy. Nice to see you
  • ويمكنني كتابتها على سطرين أي:
    Hi every buddy
    Nice to see you

وفي كلتا الحالتين تكون العبارة مؤلفة من جملتين إنّ كتبناها على سطر واحد أو اثنين أو حتى 100 سطر

دعونا نُسقط المفاهيم المطروحة على أمثلة برمجية كي تتضح الصورة أكثر :
مثال (بلغة Pascal مشان يفهم الفكرة الكلّ):
سأطرح عبارة برمجية مؤلفة من سطرين منطقيين
  • السطر الأول: هو رأس الحلقة for
  • السطر الثاني: هو أمر الطباعة write

ومؤلف من 4 أسطر فيزيائية

CODE: تحديد الكل
for i:=1 to 10 do
begin
    write( i );
end;


سأقوم بكتابة نفس السطرين المنطقيين ولكن من خلال سطر فيزيائي واحد
CODE: تحديد الكل
for i:=1 to 10 do    write( i );




طريقة استخدام هذه التقنية في لغة Python

إليكم هذا السطر المنطقي وهو عبار عن سطر فيزيائي واحد
CODE: تحديد الكل
print (1 + 9) * 7


سنقسّمه إلى سطرين فيزيائيين
CODE: تحديد الكل
print (1 + 9)\
           * 7


دعونا نقسّمه إلى 7 أسطر فيزيائية :eek:
CODE: تحديد الكل
print (\
      1\
      +\
      9\
      )\
      *\
      7


مممم .. هذا يعني أننا استطعنا كتابة السطر المنطقي الواحد في n سطر فيزيائي .. وذلك عن طريق محرف الهروب ( \ ) الذي يصل بين سطرين فيزيائيين
أنا بتنفس حرية .. ما تقطع عني الهوى
صورة العضو الشخصية
Karam
مشرف منتدى البرمجيات المفتوحة المصدر
مشرف منتدى البرمجيات المفتوحة المصدر
 
مشاركات: 2039
اشترك في: الخميس أكتوبر 01, 2009 2:50 pm
مكان: Stadt Ilmenau, Thuringen, Germa
الجتس: ذكر
الشهادة الثانوية: Syria
الجامعة: Damascus
الكلية: ITE
المرحلة الدراسية: السنة الرابعة
الاختصاص: شبكات و نظم

Re: Learning Python - step by step

مشاركة غير مقروءةبواسطة Karam » الخميس فبراير 03, 2011 6:30 pm

String's Format methods


يوجد لدينا تابعين هاميّن جداً للتحكّم بمحتوى الـ string
  • الأولى: format method
  • الثانية: mod operator

أولاً: format method

شكلها:
CODE: تحديد الكل
obj.format(rep1, rep2, ...)


آليّة عملها:
تقوم بالبحث عن الأقواس المتوسط التي تحوي أرقام طبيعية موجبة مثل {1} أو {5} أو {0} أو ... وتقوم باستبدالها بالوسائط المُمررة إلى format على الترتيب

مثال:
CODE: تحديد الكل
obj = "Hello {0},it's {1} {2}"
print obj

الخرج (قبل استخدام format) كالتالي
Hello {0},it's {1} {2}


سنستخدم الآن format :
CODE: تحديد الكل
obj = "Hello {0},it's {1} {2}"
obj = obj.format("Man", 3, "February")
print obj


الخرج (بعد استخدامformat) كالتالي
Hello Man,it's 3 February



ثانياً: mod operator

هي تقنية بسيطة جداً وموجودة في أغلب اللغات الأخرى
لها نفس عمل format لكنّها مقيّدة بالأنماط البسيطة ( int, float, str )
  • d% تستبدل int
  • %f تستبدل float
  • %s تستبدل str

لنأخذ نفس المثال السابق

CODE: تحديد الكل
obj = "Hello %s, it's %d %s"
print obj


الخرج (قبل استخدام %) كالتالي
Hello %s, it's %d %s

سنستخدم الآن % :

CODE: تحديد الكل
obj = "Hello %s, it's %d %s"
obj = obj % ("Man", 3, "February")
print obj


الخرج (بعد استخدام %) كالتالي
Hello Man,it's 3 February
أنا بتنفس حرية .. ما تقطع عني الهوى
صورة العضو الشخصية
Karam
مشرف منتدى البرمجيات المفتوحة المصدر
مشرف منتدى البرمجيات المفتوحة المصدر
 
مشاركات: 2039
اشترك في: الخميس أكتوبر 01, 2009 2:50 pm
مكان: Stadt Ilmenau, Thuringen, Germa
الجتس: ذكر
الشهادة الثانوية: Syria
الجامعة: Damascus
الكلية: ITE
المرحلة الدراسية: السنة الرابعة
الاختصاص: شبكات و نظم

Re: Learning Python - step by step

مشاركة غير مقروءةبواسطة Karam » الخميس فبراير 03, 2011 7:19 pm

Defining Simple Objects


سنتعلّم الآن كيفيّة تعريف object من class في لغة Python
بشكل عام الطريقة العامة هي:
( )obj = aClass

لكن استثناءاً فقط من أجل السهولة .. يوجد طرق أسرع لتعريف objects من الأنماط الأساسية فقط .. أما بقيّة الأنماط الـ Abstract فلا يتمّ تعيرفها إلّا بالشكل العام


int Class :: Integer Numbers


مثال: (تعريف متحوّل x يحوي قيمة integer)

CODE: تحديد الكل
x = 12


العمليّات على هذا النمط
add :
CODE: تحديد الكل
x = 12
y = -3

z = x + y


sub:
CODE: تحديد الكل
x = 12
y = -3

z = x - y


mul:
CODE: تحديد الكل
x = 12
y = -3

z = x * y


div:
CODE: تحديد الكل
x = 12
y = -3

z = x / y


mod:
CODE: تحديد الكل
x = 12
y = -3

z = x % y


power :
CODE: تحديد الكل
x = 12
y = -3

z = x ** y


and :
CODE: تحديد الكل
x = 12
y = -3

z = x & y
z = x and y


or :
CODE: تحديد الكل
x = 12
y = -3

z = x | y
z = x or y


xor :
CODE: تحديد الكل
x = 12
y = -3

z = x ^ y


right-to-left shift :
CODE: تحديد الكل
x = 12
y = 2

z = x >> y


left-to-right shift :
CODE: تحديد الكل
x = 12
y = 2

z = x << y




float Class :: [Float Numbers


مثال: (تعريف متحوّل x يحوي قيمة float)

CODE: تحديد الكل
x = 1.2


العمليّات على هذا النمط
add :
CODE: تحديد الكل
x = 1.2
y = 1.3

z = x + y


sub:
CODE: تحديد الكل
x = 1.2
y = 1.3

z = x - y


mul:
CODE: تحديد الكل
x = 1.2
y = 1.3

z = x * y


div:
CODE: تحديد الكل
x = 1.2
y = 1.3

z = x / y


mod:
CODE: تحديد الكل
x = 1.2
y = 1.3

z = x % y


power :
CODE: تحديد الكل
x = 1.2
y = 1.3

z = x ** y




str Class :: Array of Char


وهو أهمّ الأنماط على الإطلاق ..
مثال: (تعريف متحوّل x يحوي قيمة str)
CODE: تحديد الكل
x = "bla bla bla"
x = 'bla bla bla'
x = """bla bla bla"""
x = '''bla bla bla'''


العمليّات على الـ string :
add :
CODE: تحديد الكل
x = "bla"
y = "bla"

z = x + y


mul:
CODE: تحديد الكل
x = "bla"

z = 4 * x
z = x + x + x + x


mod:
CODE: تحديد الكل
x = "%d + %f = %f"

z = x %(12, 1.1, 12 + 1.1)



ويوجد الكثيـــــــــــر من التوابع التي تجعل الـ string أكثر ديناميكية والتحكّم به بشكل ممتع جداً .. وسأقوم بذكرها بشكلّ معمّق فيما بعد
أنا بتنفس حرية .. ما تقطع عني الهوى
صورة العضو الشخصية
Karam
مشرف منتدى البرمجيات المفتوحة المصدر
مشرف منتدى البرمجيات المفتوحة المصدر
 
مشاركات: 2039
اشترك في: الخميس أكتوبر 01, 2009 2:50 pm
مكان: Stadt Ilmenau, Thuringen, Germa
الجتس: ذكر
الشهادة الثانوية: Syria
الجامعة: Damascus
الكلية: ITE
المرحلة الدراسية: السنة الرابعة
الاختصاص: شبكات و نظم

Re: Learning Python - step by step

مشاركة غير مقروءةبواسطة Karam » الخميس فبراير 03, 2011 7:34 pm

Comments in Python


طريقة كتابة التعليقات تعتمد على محرف الـ ( # ) الذي يعتبر كل ما خلفه في نفس السطر hint

أمثلة:
CODE: تحديد الكل
#I'm a comment


CODE: تحديد الكل
x = 1 #I'm a comment


CODE: تحديد الكل
for i in (1, 2, 3): #define a loop
    j = str(i) #convert (i) to string
    print j #output (j)
أنا بتنفس حرية .. ما تقطع عني الهوى
صورة العضو الشخصية
Karam
مشرف منتدى البرمجيات المفتوحة المصدر
مشرف منتدى البرمجيات المفتوحة المصدر
 
مشاركات: 2039
اشترك في: الخميس أكتوبر 01, 2009 2:50 pm
مكان: Stadt Ilmenau, Thuringen, Germa
الجتس: ذكر
الشهادة الثانوية: Syria
الجامعة: Damascus
الكلية: ITE
المرحلة الدراسية: السنة الرابعة
الاختصاص: شبكات و نظم

Re: Learning Python - step by step

مشاركة غير مقروءةبواسطة Karam » الخميس فبراير 03, 2011 7:53 pm

Indentation Rule in Python


أكثرّ مايميّز لغة Python من ناحية الـ syntax هي عدم وجود الأقواس والـ begin و الـ end وعبارات تحديد الـ scopes
فهي تعتمد على تقنية حديثة قريبة جداً من التصوّر البشري .. بعنى آخر تشبه تماماً الكتابة الخوارزمية pseudo code

القاعدة هي:
كل مجموعة تعليمات تتبع إلى scope معيّن يجب أن تكون على نفس الـبعد من أول السطر

كمثال (بالرغم من أننا لم نعرض الشرط if لكن لتقريب المفهوم):
CODE: تحديد الكل
x = 5
y = 1
if x > y:
    z = x * 2
    if y > x:
        z = 2 * z

print "z = {0}".format(z)


الناتج هو z = 10

سأكتب كود موازي له في لغة Pascal لتتأكدو من دقّة الفكرة:
CODE: تحديد الكل
x := 5;
y := 1;
if x > y then
begin
    z := x * 2;
    if y > x then
        z := 2 * z;
end;

writeln("z = ", z);



Indentation Error :

يحدث هذا الخطأ عندما يحدث خلل في تخطيط الـ scopes
مثال:
CODE: تحديد الكل
name = "Swaroop"
   print name


حدث هذا الخطأ لأننا أزحنا السطر الثاني نحو اليمين عِلماً أنَّ مكانه الصحيح على نفس مستوى السطر الأول لأنهما داخل نفس الـ scope
أنا بتنفس حرية .. ما تقطع عني الهوى
صورة العضو الشخصية
Karam
مشرف منتدى البرمجيات المفتوحة المصدر
مشرف منتدى البرمجيات المفتوحة المصدر
 
مشاركات: 2039
اشترك في: الخميس أكتوبر 01, 2009 2:50 pm
مكان: Stadt Ilmenau, Thuringen, Germa
الجتس: ذكر
الشهادة الثانوية: Syria
الجامعة: Damascus
الكلية: ITE
المرحلة الدراسية: السنة الرابعة
الاختصاص: شبكات و نظم

Re: Learning Python - step by step

مشاركة غير مقروءةبواسطة Karam » الخميس فبراير 03, 2011 8:13 pm

Special Input Methods in Python


يوجد تابعيين (غيّر معياريين) هما :
  • الأول: input
  • الثاني: raw_input


أولاً: input method

لا نمرر إليها أي وسيط أو نمرر إليها وسيط واحد من نمط string

وتعيد قيمة عددية يتمّ إدخالها من الـكيبورد (قيمة عددية فقط)

مثال:
CODE: تحديد الكل
x = input( )
print x * 2

x = input("enter a number: ")
print x


ولكن إنّ قمنا بإدخال قيمة غير عديدية فهذا يؤدي إلى خطأ


ثانياً: raw_input method


لا نمرر إليها أي وسيط أو نمرر إليها وسيط واحد من نمط string

وتعيد string يتمّ إدخالها من الـكيبورد (قيمة عددية فقط)
CODE: تحديد الكل
name = raw_input( )
print name

name = input("enter your name: ")
print name
أنا بتنفس حرية .. ما تقطع عني الهوى
صورة العضو الشخصية
Karam
مشرف منتدى البرمجيات المفتوحة المصدر
مشرف منتدى البرمجيات المفتوحة المصدر
 
مشاركات: 2039
اشترك في: الخميس أكتوبر 01, 2009 2:50 pm
مكان: Stadt Ilmenau, Thuringen, Germa
الجتس: ذكر
الشهادة الثانوية: Syria
الجامعة: Damascus
الكلية: ITE
المرحلة الدراسية: السنة الرابعة
الاختصاص: شبكات و نظم

Re: Learning Python - step by step

مشاركة غير مقروءةبواسطة Karam » الخميس فبراير 03, 2011 8:22 pm

البرنامج ( 2 ) بلغة بايثون

اسم الملف:
prog.py

الوظيفة:
قراءة أبعاد مستطيل وحساب وطباعة مساحته ومحيطه

الكود:
CODE: تحديد الكل
#!/usr/bin/env python

length  = input("Input the length  : ")
breadth = input("Input the breadth : ")

area = length * breadth

print "area = {0}".format(area)
print "Perimeter = {0}".format(2 * (length + breadth))


التنفيذ:
CODE: تحديد الكل
Input the length  : 6
Input the breadth : 3
area = 18
Perimeter = 18
أنا بتنفس حرية .. ما تقطع عني الهوى
صورة العضو الشخصية
Karam
مشرف منتدى البرمجيات المفتوحة المصدر
مشرف منتدى البرمجيات المفتوحة المصدر
 
مشاركات: 2039
اشترك في: الخميس أكتوبر 01, 2009 2:50 pm
مكان: Stadt Ilmenau, Thuringen, Germa
الجتس: ذكر
الشهادة الثانوية: Syria
الجامعة: Damascus
الكلية: ITE
المرحلة الدراسية: السنة الرابعة
الاختصاص: شبكات و نظم

Re: Learning Python - step by step

مشاركة غير مقروءةبواسطة Karam » الجمعة فبراير 04, 2011 3:46 pm

if Statement in Python


الشكل العامّ للتعليمة الشرطية if هو:

CODE: تحديد الكل
if < condition > :
    something do ..


مثال ( 1 ):
CODE: تحديد الكل
if 1 > 2:
    print "I'm in the condition"


مثال ( 2 ):
CODE: تحديد الكل
if 1 > 2: print "I'm in the condition"


مثال ( 3 ):
CODE: تحديد الكل
x = 12
y = 1

if x > y and y == 1 and x - 2 == 10 and x + y >= 13:
    print x, y





التعليمة else :

الشكل العامّ للتعليمة الشرطية else هو:

CODE: تحديد الكل
if < condition > :
    do statement_1
else:
    do statements_2



مثال ( 1 ):
CODE: تحديد الكل
if 1 > 2:
    print "I'm in the condition"
else:
    print "otherwise"


مثال ( 2 ):
CODE: تحديد الكل
if 1 > 2: print "I'm in the condition"
else: print "otherwise"






التعليمة elif :

الشكل العامّ للتعليمة الشرطية elif هو:
CODE: تحديد الكل
if < condition_1 > :
    do statement_1
   
elif < condition_2 > :
    do statement_2
   
elif < condition_3 > :
    do statement_3
   
    :
    :
    :
       
else:
    do statements_n



مثال ( 1 ):
CODE: تحديد الكل
if 1 > 2:
    print "I'm in the condition"
elif 1 > 2 or not 6 % 2:
    print "6 is even"
else:
    print "otherwise"




هـــــام جداً

  • القيمة المنطقية التي تكافئ ( 1 منطقي) هي True وليس true
  • القيمة المنطقية التي تكافئ ( 0 منطقي) هي False وليس false
  • أي قيمة عددية (int, float, complex) لا تساوي الصفر فهي تكافئ True
  • أي قيمة عددية (int, float, complex) تساوي الصفر فهي تكافئ False
  • أي String طوله أكبر من الصفر فهي تكافئ True
  • أي String طوله يساوي الصفر فهي تكافئ False


Logical Analysis in Python


تحليل عبارة منطيقة في لغة بايثون يختلف عن باقي اللغات .. حيث هو أقرب لآيّة تفكير الإنسان
إليكم مثال :

هذا كود بلغة C :
CODE: تحديد الكل
int x = 1, y = 5, z = 10;

if (x < y && y > 2 && y < z && z > 9)
    printf("%d %d %d\n", x, y, z);


هذا الكود المكافئ بلغة Python:
CODE: تحديد الكل
x = 1
y = 5
z = 10
if x < y > 2 < z > 9:
    print x, y, z


آليّة تحليل العبارة المنطقية


CODE: تحديد الكل
x < y > 2 < z > 9

first : (x < y) ==> (1 < 5)  True
second: (y > 2) ==> (5 > 2)  True
third : (2 < z) ==> (2 < 10) True
fourth: (z > 9) ==> (10 > 9) True
أنا بتنفس حرية .. ما تقطع عني الهوى
صورة العضو الشخصية
Karam
مشرف منتدى البرمجيات المفتوحة المصدر
مشرف منتدى البرمجيات المفتوحة المصدر
 
مشاركات: 2039
اشترك في: الخميس أكتوبر 01, 2009 2:50 pm
مكان: Stadt Ilmenau, Thuringen, Germa
الجتس: ذكر
الشهادة الثانوية: Syria
الجامعة: Damascus
الكلية: ITE
المرحلة الدراسية: السنة الرابعة
الاختصاص: شبكات و نظم

Re: Learning Python - step by step

مشاركة غير مقروءةبواسطة Karam » الجمعة فبراير 04, 2011 3:54 pm

البرنامج ( 2 ) بلغة بايثون


اسم الملف :
guess.py

الوظيفة:


سنقوم بتخزين عدد (وليكن في مثالنا 23) ويقوم المستخدم بمعرفته (احجية بايخة يعني :imb: )
  • إذا كان العدد الذي اقترحه المستخدم أكبر من 23 فيطبع البرنامج
    CODE: تحديد الكل
    No, it is a little lower than that
    Done

  • إذا كان العدد الذي اقترحه المستخدم أصغر من 23 فيطبع البرنامج
    CODE: تحديد الكل
    No, it is a little higher than that
    Done

  • إذا كان العدد الذي اقترحه المستخدم يساوي 23 فيطبع البرنامج
    CODE: تحديد الكل
    Congratulations, you guessed it.
    (but you do not win any prizes!) hehehe :D
    Done


الكود :
CODE: تحديد الكل
#!/usr/bin/env python

number = 23
guess = input('Enter an integer : ')

if guess == number:
    print "Congratulations, you guessed it." # New block starts here
    print "(but you do not win any prizes!) hehehe :D" # New block ends here
elif guess < number:
    print "No, it is a little higher than that" # Another block
else:
    print "No, it is a little lower than that"
print "Done"
أنا بتنفس حرية .. ما تقطع عني الهوى
صورة العضو الشخصية
Karam
مشرف منتدى البرمجيات المفتوحة المصدر
مشرف منتدى البرمجيات المفتوحة المصدر
 
مشاركات: 2039
اشترك في: الخميس أكتوبر 01, 2009 2:50 pm
مكان: Stadt Ilmenau, Thuringen, Germa
الجتس: ذكر
الشهادة الثانوية: Syria
الجامعة: Damascus
الكلية: ITE
المرحلة الدراسية: السنة الرابعة
الاختصاص: شبكات و نظم

Re: Learning Python - step by step

مشاركة غير مقروءةبواسطة Karam » السبت فبراير 05, 2011 10:30 pm

for Statement in Python



الشكل العامّ للحلقة for هو:

حيث Obj هو بنية معطيات خطيّة (linked list, tuple, vector, string, .. etc)
CODE: تحديد الكل
for <index> in Obj:
    something do ..



مبدأ عمل الحلقة for :

إليكم هذه الأمثلة ..

مثال ( 1 ):

CODE: تحديد الكل
for i in [1, 2, 3, 4, 5]:
    print i

الخرج:
CODE: تحديد الكل
1
2
3
4
5

هنا تقوم ( i ) بأخذ قيّم الـ List Object ( [ ... ] ) واحداً تلوى الآخر ..
أي من أجل أوّل دخول في الحلقة تكون قيمة ( i = 1 ) وفي آخر دخول تكون ( i = 5 )

صورة


مثال ( 2 ):

CODE: تحديد الكل
for i in range(1, 6):
    print i


الخرج:
CODE: تحديد الكل
1
2
3
4
5


ماهو عمل range إذاً ؟!؟!

range تابع يقوم بتويلد سلسة خطية list ويأخذ 3 وسائط :
  • الأول: قيمة أول عنصر في الـ list
  • الثاني: قيمة النهاية المفتوحة لمجال التوليد
  • الثالث: هو مقدار القفزة داخل المجال وهو يساوي الواحد by default

ممم .. لم تتضح الصورة بعد .. نهاية مجال التوليد .. مقدار القفزة داخل المجال .. أوصاف جديدة إلى حدٍ ما

عندما نكتب :
CODE: تحديد الكل
range(x, y, 1)

هذا يعني أنّ يردّ التابع لنا غرض list تحوي أعداداً داخل المجال ( ]x, y] ) لاحظ أنّ المجال مفتوح من عند الـ ( y )
وأنّ كل عنصر أكبر من العنصر الذي قبله بـ ( 1 ) .. هذا ماقصدته بمقدار القفزة ويمكن أن يكون سالب أيضاً :wink:

دعونا نجرّب ندخل قيّم إلى هذا التابع ونرى الخرج ..
آخر تعديل بواسطة Karam في السبت فبراير 05, 2011 10:47 pm، عدل 2 مرات
أنا بتنفس حرية .. ما تقطع عني الهوى
صورة العضو الشخصية
Karam
مشرف منتدى البرمجيات المفتوحة المصدر
مشرف منتدى البرمجيات المفتوحة المصدر
 
مشاركات: 2039
اشترك في: الخميس أكتوبر 01, 2009 2:50 pm
مكان: Stadt Ilmenau, Thuringen, Germa
الجتس: ذكر
الشهادة الثانوية: Syria
الجامعة: Damascus
الكلية: ITE
المرحلة الدراسية: السنة الرابعة
الاختصاص: شبكات و نظم

Re: Learning Python - step by step

مشاركة غير مقروءةبواسطة Karam » السبت فبراير 05, 2011 10:38 pm

البرنامج ( 3 ) بلغة بايثون

اسم الملف:
factorial.py


الوظيفة:

قراءة عدد ( n ) من الكيبورد .. وحساب عاملي العدد ( n! ) ثمّ طباعته


الكود:
CODE: تحديد الكل
n    = input("input a number:")
fact = 1

for i in range(2, n + 1): ## range(2, n+1) == [2, n+1[ == [2, n]
    fact *= i

print "factorial {0} is {1}".format(n, fact)
أنا بتنفس حرية .. ما تقطع عني الهوى
صورة العضو الشخصية
Karam
مشرف منتدى البرمجيات المفتوحة المصدر
مشرف منتدى البرمجيات المفتوحة المصدر
 
مشاركات: 2039
اشترك في: الخميس أكتوبر 01, 2009 2:50 pm
مكان: Stadt Ilmenau, Thuringen, Germa
الجتس: ذكر
الشهادة الثانوية: Syria
الجامعة: Damascus
الكلية: ITE
المرحلة الدراسية: السنة الرابعة
الاختصاص: شبكات و نظم

Re: Learning Python - step by step

مشاركة غير مقروءةبواسطة Karam » الأحد فبراير 06, 2011 10:29 pm

while Statement in Python


الشكل العامّ للحلقة while هو:

CODE: تحديد الكل
while < condition > :
    something do ..


إليكم بعض الأمثلة ..

مثال ( 1 ): "هذه حلقة غير منتهية"
CODE: تحديد الكل
while True:
    print "loop"


مثال ( 2 ):
CODE: تحديد الكل
i = 1
j = 10
while i < j:
    print i, j
    i += 1
    j -= 1



مثال ( 3 ):
CODE: تحديد الكل
x = 1
while x != 1:
    print x
    x = x - 1
else:
    print 'x = 1'


Looool :wink2: "يمكن الكلّ عم يقول شو هالتخبيص else و while مع بعض"
ممم .. الحقيقة أنه "مو تخبيص" .. لأنه عندما تُكسر الحلقة while يتدفق البرنامج إلى تعليمة else
لأنه يعتبر الـ while هي تكرار لتعليمة if ليس أكثر
أنا بتنفس حرية .. ما تقطع عني الهوى
صورة العضو الشخصية
Karam
مشرف منتدى البرمجيات المفتوحة المصدر
مشرف منتدى البرمجيات المفتوحة المصدر
 
مشاركات: 2039
اشترك في: الخميس أكتوبر 01, 2009 2:50 pm
مكان: Stadt Ilmenau, Thuringen, Germa
الجتس: ذكر
الشهادة الثانوية: Syria
الجامعة: Damascus
الكلية: ITE
المرحلة الدراسية: السنة الرابعة
الاختصاص: شبكات و نظم

Re: Learning Python - step by step

مشاركة غير مقروءةبواسطة Karam » الأحد فبراير 06, 2011 10:43 pm

البرنامج ( 4 ) بلغة بايثون

اسم الملف:
reflex.py


الوظيفة:
قراءة عدد ( x ) من الكيبورد .. وتخزين معكوسه في المتحول ( y )
ثم طباعة y


الكود:
CODE: تحديد الكل
x = input("input a number: ")
y = 0

while x != 0:
    y = (y * 10) + (x % 10)
    x = x / 10

print y
أنا بتنفس حرية .. ما تقطع عني الهوى
صورة العضو الشخصية
Karam
مشرف منتدى البرمجيات المفتوحة المصدر
مشرف منتدى البرمجيات المفتوحة المصدر
 
مشاركات: 2039
اشترك في: الخميس أكتوبر 01, 2009 2:50 pm
مكان: Stadt Ilmenau, Thuringen, Germa
الجتس: ذكر
الشهادة الثانوية: Syria
الجامعة: Damascus
الكلية: ITE
المرحلة الدراسية: السنة الرابعة
الاختصاص: شبكات و نظم

Re: Learning Python - step by step

مشاركة غير مقروءةبواسطة Karam » الاثنين فبراير 07, 2011 1:54 pm

Casting in Python


أولاً: Up Casting

int TO float

مثال ( 1 ):
CODE: تحديد الكل
x = float(123)
print x


مثال ( 2 ):
CODE: تحديد الكل
x = 3
print x/2
print float(x)/2


ثانياً: Down Casting

float TO int

مثال ( 1 ):
CODE: تحديد الكل
x = int(12.51)
print x


مثال ( 2 ):
CODE: تحديد الكل
x = 130.13
print x/2
print int(x)/2
أنا بتنفس حرية .. ما تقطع عني الهوى
صورة العضو الشخصية
Karam
مشرف منتدى البرمجيات المفتوحة المصدر
مشرف منتدى البرمجيات المفتوحة المصدر
 
مشاركات: 2039
اشترك في: الخميس أكتوبر 01, 2009 2:50 pm
مكان: Stadt Ilmenau, Thuringen, Germa
الجتس: ذكر
الشهادة الثانوية: Syria
الجامعة: Damascus
الكلية: ITE
المرحلة الدراسية: السنة الرابعة
الاختصاص: شبكات و نظم

Re: Learning Python - step by step

مشاركة غير مقروءةبواسطة Karam » الاثنين فبراير 07, 2011 2:20 pm

Types Converter in Python


أولاً: convert to int

  • للتحويل من string إلى int
    مثال:
    CODE: تحديد الكل
    x = "100"
    x = int(x)
    print 2 * x

  • للتحويل من float إلى int
    مثال:
    CODE: تحديد الكل
    x = 1.3
    x = int(x)
    print 2 * x

ثانياً: convert to float
  • للتحويل من string إلى float
    مثال:
    CODE: تحديد الكل
    x = "10.5"
    x = float(x)
    print 2 * x

  • للتحويل من int إلى float
    مثال:
    CODE: تحديد الكل
    x = 10
    x = float(x)
    print 2 * x


ثالثاً: convert to string
يمكننا تحويل أي object إلى string عن طريق str Constructor

  • للتحويل من int إلى str
    مثال:
    CODE: تحديد الكل
    x = 12
    x = str(x)
    x = x + "21"
    print x

  • للتحويل من float إلى str
    مثال:
    CODE: تحديد الكل
    x = 13.5
    x = str(x)
    x = x + "5.31"
    print x


  • للتحويل من str إلى str
    مثال:
    CODE: تحديد الكل
    x = "Hi"
    y = str(x)
    print x == y
أنا بتنفس حرية .. ما تقطع عني الهوى
صورة العضو الشخصية
Karam
مشرف منتدى البرمجيات المفتوحة المصدر
مشرف منتدى البرمجيات المفتوحة المصدر
 
مشاركات: 2039
اشترك في: الخميس أكتوبر 01, 2009 2:50 pm
مكان: Stadt Ilmenau, Thuringen, Germa
الجتس: ذكر
الشهادة الثانوية: Syria
الجامعة: Damascus
الكلية: ITE
المرحلة الدراسية: السنة الرابعة
الاختصاص: شبكات و نظم

Re: Learning Python - step by step

مشاركة غير مقروءةبواسطة Karam » الاثنين فبراير 07, 2011 3:52 pm

البرنامج ( 5 ) بلغة بايثون

اسم الملف:
reflexstr.py


الوظيفة:
قراءة عدد ( x ) من الكيبورد .. وتخزين معكوسه في المتحول ( y )
ثم طباعة y

ولكن عن طريق الـ string


الكود:
CODE: تحديد الكل
#!/usr/bin/env python

x = input('input a number: ')

x = str(x)
y = ''

for char in x:
    y = char + y

print y
أنا بتنفس حرية .. ما تقطع عني الهوى
صورة العضو الشخصية
Karam
مشرف منتدى البرمجيات المفتوحة المصدر
مشرف منتدى البرمجيات المفتوحة المصدر
 
مشاركات: 2039
اشترك في: الخميس أكتوبر 01, 2009 2:50 pm
مكان: Stadt Ilmenau, Thuringen, Germa
الجتس: ذكر
الشهادة الثانوية: Syria
الجامعة: Damascus
الكلية: ITE
المرحلة الدراسية: السنة الرابعة
الاختصاص: شبكات و نظم

Re: Learning Python - step by step

مشاركة غير مقروءةبواسطة Karam » الاثنين فبراير 07, 2011 11:14 pm

lists in Python


تُعد list أهم بنية معطيات موجودة في لغة Python للأسباب التالية :
  • ديناميكية (تتوسع أثنا الـ Run Time)
  • مدعومة بأكثر من 45 method
  • متعددة الأنماط - أي يمكن أن تحوي في نفس الوقت integer و string و file و mp3 و image و ..
  • أهم ميّزة الـ reference والتي عن طريقها سنقوم ببناء Tree و Singly Linked List و Stack و .. (فيما بعد)


التوابع الهامّة :
  • التالع append:

    آليّة عمله نفس آلية عمل PUSH تماماً ..
    نمرر له وسيط وهو الـ object الذي نريد إضافته إلى الـ list
    يقوم بإضافته إلى ذيل الـ list


    صورة


    مثال:
    CODE: تحديد الكل
    x = [1, 2, 3]
    print x

    x.append(4)
    print x

  • التالع count:

    نمرر له object كوسيط .. ويقوم بحساب عدد مرات تكراره داخل الـ list

    صورة


    مثال:
    CODE: تحديد الكل
    x = ["karam", "MHD", "karam", "kh.ri", "kh.ri", "Sola", "a7la sham", "kh.ri"]

    print "karam", x.count("karam")
    print "MHD", x.count("MHD")
    print "kh.ri", x.count("kh.ri")
    print "a7la sham", x.count("a7la sham")
    print "Sola", x.count("Sola")

  • التالع extend:

    نمرر له list كوسيط .. ويقوم بدمجها بالـ list الأصلية

    صورة


    مثال:
    CODE: تحديد الكل
    x = [1.12, 2, "Hello"]
    x.extend([3, 2])

    print x

  • التالع pop:

    يقوم بردّ آخر object في الـ list
    ثم يحذفه من الـ list
    طبعاً إذا لم تكن الـ list فارغة

    صورة


    مثال:
    CODE: تحديد الكل
    x = [3, 2, 1]
    if len(x) > 0:
        print x.pop( )
        print x

  • التالع reverse:

    يقوم بعكس الـ list

    صورة


    مثال:

    CODE: تحديد الكل
    x = [1, 2, 3]
    print x

    x.reverse( )
    print x


  • التالع sort:
يقوم بترتيب الـ list ..


صورة



مثال:
CODE: تحديد الكل
x = [3, 4, 2, 0, 9, 8, 1]
x.sort( )

print x
أنا بتنفس حرية .. ما تقطع عني الهوى
صورة العضو الشخصية
Karam
مشرف منتدى البرمجيات المفتوحة المصدر
مشرف منتدى البرمجيات المفتوحة المصدر
 
مشاركات: 2039
اشترك في: الخميس أكتوبر 01, 2009 2:50 pm
مكان: Stadt Ilmenau, Thuringen, Germa
الجتس: ذكر
الشهادة الثانوية: Syria
الجامعة: Damascus
الكلية: ITE
المرحلة الدراسية: السنة الرابعة
الاختصاص: شبكات و نظم

التالي

العودة إلى منتدى البرمجيات المفتوحة المصدر

الموجودون الآن

المستخدمون المتصفحون لهذا المنتدى: لا يوجد أعضاء مسجلين متصلين و 1 زائر

cron