PythonGuide/Python Basics

من PFWiki

اذهب إلى: تصفح, البحث

محتويات

مقدمة

هنتناول فى الفصل دا مفاهيم اساسية زى الvariables وال Loops وال Conditions وهى جزء حيوى من كل اللغات وبعض انواع البيانات

انواع البيانات

المتغيرات

اولا ماهو ال variable (متغير)؟ هو قيمة متغيرة فى برنامج وبيهمك انك تتابعها وتتابع اى تغير يتم فيها. مثلا حساب بنكى فيه فلوس "قيمة" قابلة للتغيير فلازم نعبر عنها بمتغير وليكن "money” ونشوف قيمته خلال برنامجنا سواء بالزيادة او النقص

افتح ال IDLE .. هشنتغل بنظام تفاعلى فى الأكواد الصغيرة.. <WRAP  :en>

>>>balance=90000 #an integer

نطبع القيمة كالتالى

>>> print balance
90000


نضيف ليه قيمة ولتكن 100 (زيادة)

>>> balance = balance + 100
>>> print balance
90100


ننقص منه اى قيمة وليكن 890 (نقص)

>>> balance = balance - 890
>>> balance
89210


على فرض اننا عندنا variable بإسم name بيعبر عن قيمة معينة لل name دا ملحوظة ال variable ماهو الا اسم لقيمة متغيرة فى برنامجك


>>> name="ahmed" #a string
>>> print name
ahmed


وهكذا تقدر تعمل متغير يعبر عن العمر مثلا age


>>> age=50
>>> print age
50

القوائم Lists

طب جميل موضوع المتغيرات هيدفعنا نتكلم عن ال Lists او القوائم هى عبارة عن Enhanced Array لمبرمجى ال C اقرب مثال هو طلاب الفصل او زملاء العمل هل تعتقد ان اذا عندنا 30 طالب اننا نعمل شئ مشابه للتالى


student_1=”Ahmed”
student_2=”Wael”
student_3=”Ayman”
student_4=”Tina”
............
student_30=”Youssef”


هل تتوقع اننا نعمل 30 متغير ل30 طالب بالصورة دى ؟ ممكن بس يفضل تكتب استقالتك بعدها :D

بالطبع لأ.. وهنا تيجى اهمية ال List وهى بإختصار ال Grouping او التجميع للبيانات المشتركة بمعنى ان كل دول students صح ؟

>>> students=[“Ahmed”, “Wael”, “Ayman”, “Tina”]
>>> type(students)
<type 'list'>


لاحظ ان اول عنصر فى ال list ال index (الترتيب) له هو 0 والتانى هو 1 والتالت هو 2


القاعدة العامة idx=n-1

مثلا عندنا list كالتالى

>>>friends=["St0rM", "Squall", "Tina", "Ayman"]

لاحظ موضوع ال indexing لأنه بسيط وهو بنستخدمه للوصول لعنصر فى ترتيب معين فى اى sequence

>>> friends[0] # 1st
'St0rM'
>>> friends[2] # 3rd
'Tina'


ال List بتقدملنا العديد من الوظائف او التسهيلات فى التعامل على فرض ان عندنا List كالتالى

>>> students=["Ahmed", "Ayman", "Tina", "Wael"]
>>> students
['Ahmed', 'Ayman', 'Tina', 'Wael']


.append(element) لإضافة عنصر بنستخدم ال append ميثود كالتالى

>>> students.append("Gina")
>>> students
['Ahmed', 'Ayman', 'Tina', 'Wael', 'Gina']

-- تقدر تضيف عنصر كالتالى

>>> students += ['Marian']
>>> students
['Ahmed', 'Ayman', 'Tina', 'Wael', 'Gina', 'Marian']

فى الواقع تقدر تضيف عدة عناصر

>>> students += ["Omar", "Waleed"]
>>> students
['Ahmed', 'Ayman', 'Tina', 'Wael', 'Gina', 'Marian', 'Omar', 'Waleed']


او بإستخدام extend .extend(iterable)

>>> students.extend(["Omar", "Waleed"])
>>> students
['Ahmed', 'Ayman', 'Tina', 'Wael', 'Gina', 'Marian', 'Omar', 'Waleed']

بتقوم بدمج ال iterable على الlist الحالية كالتالى مثلا


.remove(value) بيتم حذف اول ظهور لل value فى ال list مباشرة كما فى المثال

>>> students.remove("Ayman")
>>> students
['Ahmed', 'Tina', 'Gina', 'Marian', 'Omar', 'Waleed']

للحذف بنقوم بتحديد ال index (الترتيب) الخاص بالعنصر ليتم حذفه كالتالى مثلا

>>> del students[3]
>>> students
['Ahmed', 'Ayman', 'Tina', 'Gina', 'Marian', 'Omar', 'Waleed']


.insert(idx, item) لإضافة عنصر معين فى ترتيب معين بنستخدم ال insert ميثود كالتالى مثلا هيتم إضافة Ayman فى الترتيب ال 3 (العنصر ال4)

>>> students.insert(3, "Ayman")
>>> students
['Ahmed', 'Tina', 'Gina', 'Ayman', 'Marian', 'Omar', 'Waleed']



.pop(idx=-1) بتقوم بحذف + اعادة عنصر فى ال list بإستخدام ال idx وفى حال عدم توفيره هيتم التطبيق على آخر عنصر بال list

>>> popped=students.pop()
>>> popped
'Waleed'
>>> popped=students.pop(2)
>>> popped
'Tina'
>>> students
['Ahmed', 'Ayman', 'Wael', 'Omar']


.reverse() بيتم عكس الترتيب من الآخر للأول كالتالى

>>> students
['Ahmed', 'Ayman', 'Wael', 'Omar']
>>> students.reverse()
>>> students
['Omar', 'Wael', 'Ayman', 'Ahmed']


.sort() بتقوم بترتيب العناصر

>>> students.sort()
>>> students
['Ahmed', 'Ayman', 'Omar', 'Wael']


.index(value) الحصول على الترتيب الخاص باول ظهور للعنصر

>>> students.index("Ayman")
1


.count(value) للحصول على عدد مرات ظهور عنصر معين فى ال list

>>> students.append("Ayman")
>>> students
['Ahmed', 'Ayman', 'Omar', 'Wael', 'Ayman']
>>> students.count("Ayman")
2

الأزاوج المرتبة Tuples

ال Tuple هى Container حاوية اخرى زى ال List ولكن الفرق هى إنها غير قابلة للتغيير..

التعريف بيتضع العناصر بين ( )

>>> t=(1, 2, 3, 4, 5)
>>> t
(1, 2, 3, 4, 5)

او تقدر تعرفها كالتالى مثلا

>>> t=1, 2, 3, 4, 5
>>> t
(1, 2, 3, 4, 5)


len(tup) هتقوم بإعادة عدد عناصر ال tup (نفس السلوك مع اى كونتينر) احنا قلنا انها غير قابلة للتغيير يعنى لو حاولنا نعدل اى عنصر المفروض يحصل مشكلة

>>> t=1, 2, 3, 4, 5
>>>t[0]=9 #Try to set the first element to 9

هنا حاولنا نخلى العنصر اللى فى الترتيب الأول قيمته تساوى 9 رد بايثون هيكون مشابه للتالى

Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    t[0]=9 #Try to set the first element to 9
TypeError: 'tuple' object does not support item a*signment
 


السلاسل النصية Strings

بيثون بتقدملك نوع من البيانات ليعبر عن ال String ولكن اولا ماهو ال String ؟ هو بكل بساطة مجموعة من الحروف

لغات مثل سى لاتعترف بال String ولكن تعتبره مصفوفة (او ليست) من الحروف

انشاء string

تقدر تعرفه كالتالى

>>> astring="Hello, World!"

هنا تم انشاء متغير بإسم astring وتم تخزين القيمة Hello, World داخله لاحظ لإنشاء اى سترينج استخدم علامات التنصيص " “ او ' ' او "”” “”” هنشرح الفرق خلال الكتاب زى مااليست بتقدملنا خدمات تسهل علينا التعامل فكذلك الstrings اولا اسم الداتاتايب هو str (اختصار string)

>>> type(astring)
<type 'str'>


len(string) تقوم بحساب عدد الحروف الموجودة بال string >>> len("Hello, World") 12

.capitalize() تقوم بإعادة اوبجكت جديد تحول فيه اول حرف إلى حرف uppercase

>>> "hello".capitalize()
'Hello'


.count(sub) حساب عدد مرات تكرار مقطع معين

>>> "Hello".count('l')
2


.lower() اعادة اوبجكت بيه كل الحروف lowercase

>>> "HELlO".lower()
'hello'


.upper() اعادة اوبجكت بيه كل الحروف uppercase

>>> "helLo".upper()
'HELLO'


.swapcase()

بتقوم بإعادة اوبجكت بعكس حالة الأحرف

>>> "hElLo".swapcase()
'HeLlO'


.title() بتعيد اوبجكت على صورة title

>>> "hello, world".title()
'Hello, World'


.startswith(sub) بتختبر هل السترينج يبدأ بمقطع معين او لأ

>>> "hello".startswith("he")
True


.endswith(sub) بتختبر هل السترينج ينتهى بمقطع معين او لأ

>>> "hello".endswith('lo')
True

سؤال: إيه اللى يخلينى استخدم tuple مكان list ؟ مع إنها بتقدملى امكانيات اقل؟ لأنك غالبا مش هتستخدمها ك list ولكن هتحتاج ميزة عدم التعديل عليها

.find(sub) بتقوم بإعادة ال index الخاص بأول ظهور لمقطع معين

>>> s="Hello, World"
>>> s.find('W')
7


.strip([chars]) بتقوم بحذف ال chars من السترينج وفى حال عدم تحديدها هيعتبر انها المسافات .lstrip([chars]) مثل الأولى ولكن من على اليسار فقط rstrip([chars]) مثل الأولى ولكن من اليمين فقط

.isalpha() بتختبر هل السترينج مكون من حروف الأبجدية او لأ .isalnum() بتختبر هل السترينج مكون من حروف من الأبجدية او ارقام او لأ .isdigit() بتختبر هل الحروف المكونة للسترينج عبارة عن ارقام او لأ

.isupper() بتختبر هل السترينج فى حالة uppercase او لأ .islower() بتختبر اذا كان السترينج فى حالة lowercase أو لأ

.isspace() بتختبر هل السترينج دا مسافة .istitle() بتختبر هل السترينج دا title أو لأ

ويوجد العديد بكل تأكيد تقدر تطلع على باقى الميثودز فى الوثائق الخاصة بالبيثون

ملحوظة هامة ال string مش mutable! لتستخدم mutable strings تابع فصل ال UserString

UserString

المشكلة:

somestring="hola"
print somestring, ", ", id(somestring)
 
somestring += " guyZ"
print somestring, ", ", id(somestring)

الناتج

hola ,  3084138464
hola guyZ ,  3084161896


لاحظ اختلاف ال id الخاصة بالsomestring بعد اضافة مقطع ليه ، والسبب ان تم انشاء اوبجكت جديد من ال str class وتم دمج القيمة القديمة + المقطع الجديد

الحل UserString Module


زى ماحنا عارفين إن فى python ال Strings are immutable زى العديد من اللغات زى Java/C# .. etc بمعنى إن اى تعديل هيتم على String مثل ال Concatenation (الدمج)بيحذف ال Variable ويعمل Variable جديد كالتالى


>>> s="I'm a string"
>>> s
"I'm a string"
>>> id(s) # get the location
13511240
>>> s +=", and you ?"
>>> s
"I'm a string, and you ?"
>>> id(s) #get the location now!
13522272

لاحظ بعد ال دمج مع ال string الجديد إتغير موقعه .. لكن اللى حصل بالفعل هو إن اتعمل شئ مشابه للتالى

>>> s ="I'm a string"
>>> del s
>>> s ="I'm a string, and you?"

طب جميل ولكن على فرض إنك عايز تعمل mutable string او فى بعض اللغات إسمه

StringBuffer/StringBuilder ؟

الحل هو إنك تستخدم class من UserString Module ودى Module موجودة عندك فى PythonPath/Lib/UserString.py


استدعى ال Module كالتالى

>>> import UserString as us

استخدمت as us لتعبر عن alias لل UserString module

ال Module بتتكون من 2 Classes هماUserString,MutableString ال UserString هو ال base cla*s و immutable تقدر تستخدمه بصورة مشابه لل str type ال MutableString هو sub cla*s من ال UserString و mutable

ملاحظة : ال MutableString معمول فيه اعادة تعريف remove(override) ل hash function لأنه طالما Mutable يبقة unhashable !

    def __hash__(self):
        raise TypeError, "unhashable type (it is mutable)"


ال MutableString فيه method بإسم immutable ودى بتدى return ل immutable string !


>>> m_string=us.MutableString("Hello, ")

بنعمل Object بإسم m_string

تحديد ال location

>>> id(m_string)
13511136


نعمل ref ليه

>>> ref_m_string=m_string
تحديد ال id ل ref هنلقيه نفس ال id الخاص ب m_string
>>> id(ref_m_string) 
13511136

عمل Concatenation

>>> m_string += "CRUEL WORLD!"

نحدد ال id تانى هنلقيه مازال هو هو

>>> id(m_string)
13511136


ال id الخاص بال ref مازال زى ماهو

>>> ref_m_string
'Hello, CRUEL WORLD!'
>>> id(ref_m_string)
13511136


عمل Object ولكن immutable يعنى ال id بتاعه هيتغير فى اى اى تغيير هيتم عليه

>>> im_string=m_string.immutable() # Return immutable string!
>>> im_string
'Hello, CRUEL WORLD!'

تحديد ال id

>>> id(im_string)
13532856

عمل ref ليه وتحديد ال id

>>> ref_im_string=im_string
>>> id(ref_im_string)
13532856

عملية الدمج

>>> im_string +=" blah blah blah"

تحديد ال id هنلاقيه إنه إتغير

>>> id(im_string)
13553416

ال ref مازال زى ماهو بدون اى تغيير لأنه بيشير لمكان Object تم الإستغناء عنه واصبح اسم im_string بيشير ل 'Hello, CRUEL WORLD! blah blah blah'


>>> ref_im_string
'Hello, CRUEL WORLD!'
>>> id(ref_im_string)
13532856
>>> im_string
'Hello, CRUEL WORLD! blah blah blah'

يفضل اعادة قراءة الفصل بعد قراءة جزئية الكائنات

القواميس Dicts

انشائه

>>> d={}

اسم الداتاتيب هو dict

>>> type(d)
<type 'dict'>


وبيخزن فيه البينات على صورة مفاتيج وقيم Key, Values زى القاموس بالظبط (من هنا جت التسمية)

>>> d['Name']='Ahmed'
>>> d['Age']=19
>>> d['Sex']='m'

هنا خزنا فى القاموس بتاعنا 3 keys وهما 'Name' , “Age', 'Sex'


.keys() للحصول على الKeys او الكلمات الدليلية فى صورة ليست

>>> d.keys()
['Age', 'Name', 'Sex']


.values() للحصول على ال Values فى صورة ليست

.get(key) بتعيد لك الvalue الخاصة ب key معين

>>> d.get('Name')
'Ahmed'

فى حال عدم وجوده هيتم إعادة None

>>> print d.get('Team')
None


Indexing تقدر تحصل على القيمة الخاصة ب key معين من خلال ال Indexing كالتالى مثلا

>>> d['Name']
'Ahmed'

او تقدر تضيف مفتاح جديد مثلا

>>> d['Lang']='Ruby'

او تقدر تعدل على قيمة موجودة

>>> d['Name']='Youssef'


.pop(key) بتقوم بحذف ال Key والValue بتاعته من القاموس وبتعيدلك ال value

.update(d) بتقوم بعمل تحديث للقاموس ببيانات قاموس d

d.update({'Lang':'Python', 'Singer':'Delta'})
>>> d
{'Lang': 'Python', 'Age': 19, 'Singer': 'Delta', 'Name': 'Youssef'}


.has_key(key) بتختبر وجود key معين فى القاموس

>>> d.has_key('Lang')
True


.items() بتعمل list مكونة من tuples بتشمل ال key, value فى صورة زوج

>>> print d.items()
[('Lang', 'Ruby'), ('Singer', 'Delta'), ('Name', 'Youssef'), ('Country', 'EG'), ('Age', 19), ('Sex', 'm')]


.iteritems() بتستخدم غالبا فى ال Iterations (سنتعرض ليها لاحقا)

for key, val in d.iteritems():
	print key, " => ", val
 
Lang  =>  Ruby
Singer  =>  Delta
Name  =>  Youssef
Country  =>  EG
Age  =>  19
Sex  =>  m


مثال اخر

>>> i=d.iteritems()
>>> i.next()
('Lang', 'Ruby')
>>> i.next()
('Singer', 'Delta')

الشروط والحلقات

الشرط

حياتنا مبنية على الإحتمالات والبرمجة مش خارج نطاقها.. مثلا اذا الخدمات اللى بتطلب تسجيل الدخول منك مبنية على احتمال "هل انت او لأ"

الصورة العامة

if condition is True then
	if_suite


مثلا "مع فارق التشفير وقواعد البيانات فى الإستخدام"

>>> if name=="ahmed" and password=="123456":
	print "Welcome ahmed"
 
#output
Welcome ahmed


لاحظ هنا اختبرنا هل الإسم قيمته مساوية "==” لاحمد و الباسورد قيمته "123456” فإذا الناتج True يتنفذ البلوك اللى بعدها وهو print Welcome ahmed فى حال ال ناتج الأساسى للشرط مش True يعنى False مش هيتنفذ حاجة. تمام.. طب اذا حبينا نعالج موضوع ان الشرط يكون False ؟ بمعنى اننا لو غيرنا مثلا الباسورد لأى قيمة مخالفة ل 123456 ال condition قيمته هتكون False وفى الحالة دى مش هيحصل شئ.. ولكن احنا عايزين نعرف ان الcondition كان False مثلا؟

تابع المثال التالى وهو إستخدام if, else الصورة العامة

if condition is True then
	if_suite
else then
	else_suite

لاحظ المثال التالى

>>> name="ayman"
>>> pa*sword=147859
>>> if name=="ahmed" and password=="123456": 
	print "Welcome ahmed" #if_suite
else:
	print "Welcome, Who R U?" #else_suite
 
 
Welcome, Who R U?


طب فى حال وجود عدة احتمالات قد تكون سليمة او لأ هنستخدم if, else if, else

if condition as True then
	if_suite
else_if condition as True then
	else if suite
else_if condition as True then
	else_if suite
else then
	else_suite

تابع المثال التالى

>>> if name=="ahmed" and password=="123456":
	print "Welcome ahmed" #if_suite
elif name=="tina" and password=="36987456":
	print "Welcome tina" #elif_suite
elif name=="ayman" and password==147859:
	print "Welcome, Ayman" #elif_suite
else:
	print "Who R U?"
 
Welcome, Ayman



الأول تم أختبار البلوك دا

if name=="ahmed" and password=="123456":

ولكنه مش True فيتعمل Escape انتقال للأختبار التالى

elif name=="tina" and password=="36987456":

ولكنه مش True بردو فيتعمل Escape للى بعده وهو

elif name=="ayman" and password==147859:

والبلوك دا قيمته True فيتنفذ البلوك تبعه وهو

	print "Welcome, Ayman" #elif_suite


<note important> لإختبار التساوى بنستخدم == لإسناد قيمة بنستخدم = </note>

الحلقات

زى الشروط معظم حياتنا مبنية على التكرار.. مثل كل يوم تصحى الصبح وتاخد دش وتفطر وتنزل شغلك وهكذا لحد الأجازة مثلا تنام للمغرب :D

طالما انت فى دراسة او شغل "مش فى اجازة" اصحى الساعة 6 خد دش افطر انزل شغلك

الصيغة العامة

while condition is True do
	while_suite

تعالى نجرب ابسط لوب ممكن

>>> i=0
>>> while i<10:
	print "i: ", i
	i += 1
 
 
i:  0
i:  1
i:  2
i:  3
i:  4
i:  5
i:  6
i:  7
i:  8
i:  9

لاحط ان الكود بيتنفذ كالتالى الشرط هو ان I تكون اقل من 10 وطالما الشرط دا حقيقى (صحيح) هيتنفذ البلوك التابع لل لوب

	print "i: ", i
	i += 1

السبب فى إننا بنزود ال I اننا نخلى ال I توصل ل 10 بحيث ان ال loop تقف وإلا الشرط هيكون True للأبد.


Foreach element in container do
	for_suite


اللوب دى بنطبقها على Containers زى ال string او list او tuple مثلا


>>> string="Hello, World!"
>>> for char in string:
	print char
 
 
H
e
l
l
o
,
 
W
o
r
l
d
!

معناها كالتالى : لكل (حرف) فى ال string اطبع (الحرف) دا

على فرض ان عندنا list كالتالى بإسم students

>>> students=["Ahmed", "Tina", "St0rM", "Salma"]
>>> for student in students:
	print student
 
 
Ahmed
Tina
St0rM
Salma


List Comprehension


اذا اخدت كورس رياضيات من قبل فربما تكون واجهت ال List Comprehension [img]setnotation.png[/img]

هنا تنقسم ال LC الى جزئين جزء ماقبل ال بايب | وجزء مابعدها ماقبلها يسمى function يتم تطبيقها على كل x

>>> [number*3 for number in range(20)] 
[0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57]

ومابعدها يسمى قائمة المدخلات وبعض الشروط

فيما سبق قمنا بتطبيق ال LC فى بايثون حيث قمنا بتحديد الfunction (وهى ضرب كل عدد فى 3) لكل عدد ينتمى الى الفترة من صفر ل 20

Prelude> [number*3 | number <- [1..20] ] 
[3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57,60]

نفس الشئ بالنسبة لكود haskell اذا حيث تقوم بتطبيق العملية بحذافيرها ماقبل ومابعد البايب وربما تقوم بتحديد شرط ما (هنا لكل الأعداد الزوجية)

>>> [number*3 for number in range(20) if number%2==0] 
[0, 6, 12, 18, 24, 30, 36, 42, 48, 54]

كود haskell

Prelude> [number*3 | number <- [1..20], even number] 
[6,12,18,24,30,36,42,48,54,60]


طبعا تقدر تستخدم الطرق العادية للفلترة ولكن دى on the fly solution

المعنى هنا: لكل Element او student موجود فى ال Container او ال students list اطبع ال عنصر دا

ملحوظة: لطباعة عناصر الحاوية بدون اضافة سطر جديد ضيف كومة لل print كالتالى

>>> string="Hello, World!"
>>> for  char in string:
	print char,
#output: H e l l o ,   W o r l d !


raw_input زى ماشفنا print وعرفنا انها مختصة بالطباعة هنشوف المسؤل عن الإدخال وهنا raw_input/input

الصيغة العامة

raw_input(prompt)

حيث ان الprompt هى الرسالة اللى هتظهر للمستخدم مثال

>>> name=raw_input("Enter your name: ")
Enter your name: ahmed
>>> print "Hola, ", name
Hola,  ahmed


س: ايه الفرق بين raw_input, input ؟ استخدامك ل input بيساوى بالظبط التالى

eval(raw_input(prompt))

لايوجد افضل من التجربة العملية تابع المثال التالى

>>> val=raw_input("Enter: ")
Enter: 2+13+541
>>> print val
2+13+541

لكن مع استخدامنا ل input هيتعمل eval -اختصار ل evaluate- للمدخلات ك Python Expression كالتالى

>>> val=input("Enter: ")
Enter: 2+13+541
>>> print val
556

تم تحقيق ال 2+13+541 من خلال python واعادة الناتج ليك

eval(expression)
>>> eval("1+2")
3

eval بتاخد expression وتحاول اعادة الناتج ليك اذا كان ليه معنى

break

بنستخدم break للخروج من حلقة عند استيفاء شرط معين (مثلا تمت قراءة كل البيانات من ملف فلاداعى لمحاولة القراءة او تم قراءة 100 رقم فردى فلا داعى للإستمرار) لدينا كلمة مثل "hellopython” نريد ان نعرف موقع حرف ال t فيها فالفكرة ان نقوم بعمل حلقة على الأحرف ونختبر ماذا كان t او لا.. واذا كان t نقم بتخزين قيم المركز الحالى ونخرج من الحلقة "لعدم احتياجنا لها بعد الآن"

word="hellopython" 
 
whereist=0 
count = 0 
while count < len(word): 
 
    if word[count]=='t': 
        whereist=count 
        break 
        #no need to keep going on
    count += 1

الناتج

striky@striky-desktop:~/workspace/pytut/src$ python tstbreak.py 
Now count is  1 
Now count is  2 
Now count is  3 
Now count is  4 
Now count is  5 
Now count is  6 
Now count is  7 
t was found at word[7]

continue

بتستخدم continue للهروب من الحلقة الحالية (ربما لعدم استيفاء عنصر الشروط المطلوبة للعمل عليه) واستكمالها على العنصر الذى يليه مثلا

tstvars=['123mx', 'hello', 'acc', '9'] 
 
for var in tstvars: 
    if var[0].isdigit(): 
        continue #no work will be done on this item, maybe the next? 
    else: 
        print var, " => ", "is valid."

هنا نختبر كل عنصر من عناصر tstvars ماإذا كان يصلح ان يكون اسم متغير فى بايثون فنقوم بعمل حلقة على العناصر

for var in tstvars:

ونختبر ماإذا كان يبدأ برقم (احد الشروط عدم بدا تسمية المتغيرات فى بايثون برقم) فإذا كان رقم نهرب من الحلقة الحالية ونستكمل على العنصر التالى فى القائمة tstvar

    if var[0].isdigit(): 
        continue #no work will be done on this item, maybe the next?


تدريب: اكتب برنامج لتسجيل الدخول بالبينات التالية user_name=”Ahmed” user_pass=”123456”

ل 3 محاولات وفى حالة الفشل تطلع رسالة ب Account Suspended!

  • أستخدم raw_input للحصول على الداتا من المستخدم


→ Programming Basics Python Basics Functions Procedures ←
أدوات شخصية