كتبت عن الأمر منذ عدة أشهر في مدونتي الشخصية، يمكنك تفقده من هنا: الحصول على نطاق Domain رابط ما
وتجد بالمرفقات الملف الذي يحوي محتوى ما نشرته على مدونتي..
بخصوص هذه النقطة أفضل إستخدام التالي:
domain = urlparse.urlsplit(url)[1].split(':')[0]
وهذا ملف أشرح به شفرتي.
شفرة وشرحها.txt
الحصول على نطاق Domain رابط ما.txt
هناك عدة طرق في بايثون، أفضلها إستخدام الدالة المدمجة map فمثلًا لديك القائمة التالية:
var=['12', '5', '58', '90']
عندئذٍ سيكون الحل:
NEWvar=map(var, int)
ملاحظة: إن كان هناك خلل بتنسيق الجواب فذلك لكتابتي إياه من الجوال، تجد الجواب بهذا الملف النصي أيضًا.
الرد - نص2.txt
هذا ما أُطبِّقه عندما أريد إدراج الأرقام العُشريَّة دون الأصفار ضمن سلسلتي النَصِّيَة.
>>> a=3.140000
>>> "%.2f" %a #"%.xf" x is the numbers after the point.
'3.14'
هذا ما أُطبِّقه عندما أريد إدراج ما قبل الفاصلة في الأرقام العُشريَّة.
>>> "%i" %a
'3'
ويمكنك الإستفادة أيضًا من التعابير المنظمة/النمطية.
>>> import re
>>> m=re.match(r"\d*", str(a))
>>> m.group(0)
'3'
>>> m2=re.match(r"\d+", str(a))
>>> m2.group(0)
'3'
أعتذر إن كان هناك سوء بالتنسيق، فأنا أستخدم الجوال. تجد الرد بشكل ملف نصي بمرفقات إجابتي.
الرد - نص.txt
لا ليست مضيعة للوقت إطلاقًا فلغة بايثون ستثري سيرتك الذاتية، فبمجرد ذكرك لمعرفتك بها في سيرتك الذاتية سيعطي إنطباعًا حسنا عنك بأنك تعرف المزيد خارج الجامعة.
الجامعة بأي إختصاصٍ كانوأشدد على ذلك لا تعلمك سوى الأساس الباق عليك أنت.
أود أن أذكر شيء متعلق بسؤالك..
في المناطق الأثرية تجد شُبَّانًا يعملون كمرشدين للحملات السياحية ولم يدخلوا الجامعة بعد، يعرفون اللغة الإنكليزية والفرنسية والصينية والإسبانية وغيرها أي العديد من اللغات وتفضلهم الحملات على ذوي الشهادة لأن ذي الشهادة جديد على الساحة إن صح التعبير ولا يتقن في الغالب سوى الإنكليزية أو الفرنسية لكن إن أتى ذاك الشاب الذي لا يملك شهادة ودرس لسنتين معهد سياحي ستجده بارعا وستزيد فرصه في العمل.
ما أريد قوله: كن كالشاب ولا تكن متزمتا لما تعلمك إياه الجامعة ولكن زِد عليه فهي خبرة لك حتى بدون شهادة فذكرها يكفي.
تحياتي لك.
مقالة ممتازة..
الجدير بالذكر أنه في الإصدارات القديمة لبايثون (بايثون<2.4) كان يوجد إضافة لـلمعامل =! المعامل: <> الذي يقوم بنفس العمل.
وفي بايثون 3 ألغيت الدالة raw_input() وأبقي على الدالة input() التي أصبحت تقوم بنفس عمل الدالة raw_input().
مقالة ممتازة..
الجدير بالذكر أنه في الإصدارات القديمة لبايثون (بايثون<2.4) كان يوجد إضافة لـلمعامل =! المعامل: <> الذي يقوم بنفس العمل.
وفي بايثون 3 ألغيت الدالة raw_input() وأبقي على الدالة input() التي أصبحت تقوم بنفس عمل الدالة raw_input().
أعتقد أنك نسيت الدالة المدمجة callable()
لمحة عن الدالة:
============================
قابل للإستدعاء(كائن)
callable(object)
تعود بصح True إذا ظهر أن الكائن الجَدَلي قابل للإستدعاء، خطأ False إذا كان غير ذلك. إذا عاد هذا بصح، فلا يزال هناك إحتمال بأن الإستدعاء فشل، لكن إذا كان خطأ، فإن إستدعاء الكائن لن ينجح أبدا. لاحظ أن الأصناف قابلة للإستدعاء(إستدعاء صنف ما يعود بأنموذج instance جديد)؛ تكون نماذج الصنف قابلة للإستدعاء إذا إمتلكت الوسيلة/الأداة __call__() "__إستدعاء__()".
============================
يعود السبب لكون المعامل += هو عبارة عن الوسيلة الخاصة __iadd__ المعرفة ضمن الصنف "قائمة" list وهي تقوم بعمل مشابه للوسيلة "مد"(بضم الميم) extend حيث يكون المعطى في حالتنا هو السلسلة التي بعد المعامل += الذي هو في مثالك السلسلة النصية "hi"، وفي الحالة التي فشلت فيها شفرتك فيعود السبب لكون المعامل + هو عبارة عن الوسيلة الخاصة __add__ المعرفة ضمن الصنف "قائمة" list وهي تقوم بعمل لا يشابه الوسيلة "مد"(بضم الميم) extend على الإطلاق فهي تأخذ معطى هو كائن قائمة list آخر حصرا وتجمع القائمتين أو بمعنى أدق تسلسلهما.
يمكنك ذلك بإستخدام الدالة choice من وحدة العشوائية random, وبإستخدام وسيلة method القاموس keys().
تفقد التالي:
>>> d={"w":2000, "r":1000, "g":5000}
>>> from random import choice
>>> print d[choice(d.keys())]
1000
يمكنك ذلك بإستخدام الدالتين المدمجتين ord و chr.
حيث أن ord تعود بترتيب الحرف(عدد صحيح) في الترميز unicode. و chr تعود بالحرف المعطى على شكل ترتيب. تفقد التالي:
>>> a=ord("a")
>>> a
97
>>> a+=1
>>> a
98
>>> print chr(a)
'b'
حلقة "لأجل" for تستعمل الوسيلة method: التالي next() التي تنوجد عندما تحول الكائن المراد الترديد iterate فوقه بإستخدام الدالة iter() حيث تعود بكائن ترديد يملك الوسيلة next(). تفقد التالي:
>>> obj="python"
>>> iobj=iter(obj)
>>> iobj.next()
'p'
حسنًا, الحلقة for تستخدم هذه الطريقة في العمل.. لكن قد يخطر في بالك سؤال: كيف تعرف أن هذه النهاية وتتوقف عندها؟ الجواب: تتوقف الحلقة عندما يعتلي الخطأ: StopIteration. الآن سأستعمل نفس الكائن السابق iobj وأردِّد محتوياته بإستخدام الحلقة for ولكن سأترك آخر قسم ألا وهو الحرف 'n' لِغاية ٍفي نفسي :).
>>> for i in range(len(iobj)-2):
... print iobj.next()
...
y
t
h
o
جرب ألَّا تقوم بالسابق ونفذ الأمر بواسطة الحلقة for مباشرةً (لكننا سنبقى نستعمل الذي في الأعلى):
>>> for i in iobj:
... print i
...
y
t
h
o
n
الذي حدث أن الحلقة for إستخدمت الوسيلة next() مما نتج عنه تخطي ما قد ردَّدناه سابقًا: 'p'. والآن آخر جزء.. ظهور الخطأ StopIteration الذي يعني توقف الحلقة.
>>> iobj.next()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
أتمنى أن أكون قد أوضحت الفكرة بيسر وسهولة.
يمكنك القيام بهذا يدويا أيضا من خلال وضع الأحرف والرنوز الفاصلة المستخدمة ضمن الكلمات هكذا: chars="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_][}{><=÷×+`~%₩¥£€¿¡》《|\\)(*&^/$#@!?;:'\", " text="Hello, i have a built-in function" def checkEn(text): for letter in text: if letter not in chars: return False return True