41 سؤال تلاعب في Python

بدأت في الاحتفاظ بقائمة بالوظائف الأكثر استخدامًا ، وحل مشكلات الخوارزميات على LeetCode و HackerRank.

كونك مبرمجًا جيدًا لا يعني تذكر جميع الوظائف المضمنة للغة معينة. لكن هذا لا يعني أن حفظها لا فائدة منه. خاصة - عندما يتعلق الأمر بالتحضير للمقابلة.

اليوم أريد مشاركتها مع كل من يريد ورقة الغش الخاصة بي للعمل مع الأوتار في Python. صممته على شكل قائمة بالأسئلة التي أستخدمها للاختبار الذاتي. على الرغم من أن هذه الأسئلة لا تنجذب إلى المهام الكاملة التي يتم تقديمها في المقابلات ، فإن تطويرها سيساعدك في حل مشاكل البرمجة الحقيقية.



1. كيفية التحقق من شيئين للهوية؟


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

لا تخلط isو ==. ==يتحقق عامل التشغيل فقط من المساواة بين الكائنات.

animals           = ['python','gopher']
more_animals      = animals
print(animals == more_animals) #=> True
print(animals is more_animals) #=> True
even_more_animals = ['python','gopher']
print(animals == even_more_animals) #=> True
print(animals is even_more_animals) #=> False

انتبه إلى حقيقة animalsأنها even_more_animalsليست متطابقة ، على الرغم من أنها متساوية مع بعضها البعض.

بالإضافة إلى ذلك ، هناك وظيفة id()تقوم بإرجاع معرف عنوان الذاكرة المرتبط باسم المتغير. عندما يتم استدعاء هذه الوظيفة ، سيتم إرجاع المعرف نفسه لكائنين متطابقين.

name = 'object'
id(name)
#=> 4408718312

2. كيف تتأكد من أن كل كلمة في السطر تبدأ بحرف كبير؟


هناك طريقة سلسلة istitle()تتحقق مما إذا كانت كل كلمة في سلسلة تبدأ بحرف كبير.

print( 'The Hilton'.istitle() ) #=> True
print( 'The dog'.istitle() ) #=> False
print( 'sticky rice'.istitle() ) #=> False

3. كيف تتحقق من سلسلة من سلسلة أخرى فيه؟


هناك عبارة inستعود Trueإذا كانت السلسلة تحتوي على سلسلة البحث.

print( 'plane' in 'The worlds fastest plane' ) #=> True
print( 'car' in 'The worlds fastest plane' ) #=> False

4. كيف يمكن العثور على فهرس التواجد الأول لسلسلة فرعية في سلسلة؟


هناك طريقتان تقومان بإرجاع فهرس التواجد الأول لسلسلة فرعية في سلسلة. هذا find()و index(). لكل منهم ميزات معينة. ترجع

الطريقة إذا لم يتم العثور على السلسلة الفرعية المطلوبة في السلسلة.find()-1

'The worlds fastest plane'.find('plane') #=> 19
'The worlds fastest plane'.find('car') #=> -1

أسلوب index()في مثل هذه الحالة يلقي خطأ ValueError.

'The worlds fastest plane'.index('plane') #=> 19
'The worlds fastest plane'.index('car') #=> ValueError: substring not found

5. كيف نحسب عدد الحروف في السلسلة؟


len()ترجع الدالة طول السلسلة.

len('The first president of the organization..') #=> 41

6. كيف نحسب عدد المرات التي يحدث فيها حرف معين في سلسلة؟


ستساعدنا الطريقة count()التي تُرجع عدد مرات الحدوث في سلسلة الحرف المحدد في الإجابة عن هذا السؤال .

'The first president of the organization..'.count('o') #=> 3

7. كيف تجعل الحرف الأول من السلسلة حرفًا كبيرًا؟


للقيام بذلك ، يمكنك استخدام الطريقة capitalize().

'florida dolphins'.capitalize() #=> 'Florida dolphins'

8. ما هي الخطوط f وكيفية استخدامها؟


يقدم Python 3.6 ميزة جديدة ، تسمى "سلاسل f". يبسط استخدامها إلى حد كبير استيفاء السلسلة. استخدام الخطوط f يذكرنا بالطريقة format().

عندما يتم الإعلان عن الخطوط f ، يتم كتابة خطاب قبل علامة اقتباس الافتتاح f.

name = 'Chris'
food = 'creme brulee'
f'Hello. My name is {name} and I like {food}.'
#=> 'Hello. My name is Chris and I like creme brulee'

9. كيف تجد سلسلة فرعية في جزء معين من السلسلة؟


index()يمكن استدعاء الطريقة بتمرير وسيطات اختيارية لها ، تمثل فهرس الجزء الأولي والأخير من السلسلة ، والذي تحتاج فيه للبحث عن سلسلة فرعية.

'the happiest person in the whole wide world.'.index('the',10,44)
#=> 23

انتبه إلى حقيقة أن عمليات البناء المذكورة أعلاه تعود 23، وليس 0، كما كانت ، لن تحد من بحثنا.

'the happiest person in the whole wide world.'.index('the')
#=> 0

10. كيف يتم إدراج محتويات متغير في سلسلة باستخدام طريقة format ()؟


format()تسمح لك الطريقة بتحقيق نتائج مشابهة لتلك التي يمكن الحصول عليها باستخدام الخطوط f. صحيح ، أعتقد أنه format()ليس مناسبًا للاستخدام ، حيث يجب تحديد جميع المتغيرات كوسيطات format().

difficulty = 'easy'
thing = 'exam'
'That {} was {}!'.format(thing, difficulty)
#=> 'That exam was easy!'

11. كيف أعرف أن السلسلة تحتوي على أرقام فقط؟


هناك طريقة isnumeric()ترجع Trueإذا كانت جميع الأحرف في السلسلة أرقامًا.

'80000'.isnumeric() #=> True

باستخدام هذه الطريقة ، ضع في اعتبارك أنه لا يحسب علامات الترقيم كأرقام.

'1.0'.isnumeric() #=> False

12. كيف يتم تقسيم السلسلة بحرف معين؟


هنا سوف نساعدك بطريقة split()تكسر سلسلة بحرف معين أو عدة أحرف.

'This is great'.split(' ')
#=> ['This', 'is', 'great']
'not--so--great'.split('--')
#=> ['not', 'so', 'great']

13. كيف تتحقق من سلسلة تتكون من أحرف صغيرة فقط؟


islower()ترجع الطريقة Trueفقط إذا كانت السلسلة تتكون فقط من أحرف صغيرة.

'all lower case'.islower() #=> True
'not aLL lowercase'.islower() # False

14. كيف يمكنك التحقق من أن السلسلة تبدأ بحرف صغير؟


يمكن القيام بذلك عن طريق استدعاء الأسلوب أعلاه islower()للحرف الأول من السلسلة.

'aPPLE'[0].islower() #=> True

15. هل من الممكن في Python إضافة عدد صحيح إلى سلسلة؟


هذا ممكن في بعض اللغات ، لكن Python سيلقي خطأ عند محاولة إجراء عملية مماثلة TypeError.

'Ten' + 10 #=> TypeError

16. كيفية "قلب" خط؟


من أجل "قلب" خط ، يمكن تقسيمه من خلال تقديمه كقائمة من الأحرف ، "قلب" القائمة ، ودمج عناصرها ، تشكيل خط جديد.

''.join(reversed("hello world"))
#=> 'dlrow olleh'

17. كيف يمكن دمج قائمة الخطوط في سطر واحد ، يتم فصل عناصرها بواسطة الواصلات؟


join()يمكن أن تجمع الطريقة عناصر القائمة في سلاسل ، مع فصل السلاسل الفردية باستخدام الحرف المحدد.

'-'.join(['a','b','c'])
#=> 'a-b-c'

18. كيف أعرف أن جميع الأحرف الموجودة في السلسلة موجودة في ASCII؟


isascii()ترجع الطريقة Trueإذا كانت جميع الأحرف في السلسلة بتنسيق ASCII.

print( 'Â'.isascii() ) #=> False
print( 'A'.isascii() ) #=> True

19. كيفية صب السلسلة بأكملها في حالة الأحرف الكبيرة أو الصغيرة؟


لحل هذه المشاكل، يمكنك استخدام الأساليب upper()و lower()، والتي، على التوالي، متفوقا على كل حرف من السلاسل إلى حالة العلوية والسفلية.

sentence = 'The Cat in the Hat'
sentence.upper() #=> 'THE CAT IN THE HAT'
sentence.lower() #=> 'the cat in the hat'

20. كيف يتم تحويل الحرف الأول والأخير من السلسلة إلى أحرف كبيرة؟


هنا ، كما في أحد الأمثلة السابقة ، سنشير إلى أحرف السلسلة حسب الفهرس. الخطوط في Python غير قابلة للتغيير ، لذلك سنقوم ببناء خطوط جديدة بناءً على الخطوط الموجودة.

animal = 'fish'
animal[0].upper() + animal[1:-1] + animal[-1].upper()
#=> 'FisH'

21. كيف تتحقق من سلسلة تتكون من أحرف كبيرة فقط؟


هناك طريقة isupper()مشابهة لتلك التي تم التفكير فيها بالفعل islower(). ولكن يتم isupper()إرجاعها Trueفقط إذا كانت السلسلة بأكملها تتكون من أحرف كبيرة.

'Toronto'.isupper() #=> False
'TORONTO'.isupper() #= True

22. في أي حالة ستستخدم طريقة الانقسام ()؟


الأسلوب splitlines()يفصل السلاسل بحرف فاصل الأسطر.

sentence = "It was a stormy night\nThe house creeked\nThe wind blew."
sentence.splitlines()
#=> ['It was a stormy night', 'The house creeked', 'The wind blew.']

23. كيفية الحصول على شريحة خط؟


للحصول على شريحة من سلسلة ، يتم استخدام بناء الجملة التالي:

string[start_index:end_index:step]

إليك stepالخطوة التي سيتم من خلالها إرجاع أحرف السلسلة من النطاق start_index:end_index. تشير stepالقيمة 3 إلى أنه سيتم إرجاع كل حرف ثالث.

string = 'I like to eat apples'
string[:6] #=> 'I like'
string[7:13] #=> 'to eat'
string[0:-1:2] #=> 'Ilk oetape' ( 2- )

24. كيفية تحويل عدد صحيح إلى سلسلة؟


يمكنك استخدام المُنشئ لتحويل رقم إلى سلسلة str().

str(5) #=> '5'

25. كيف أعرف أن السلسلة تحتوي على أحرف أبجدية فقط؟


isalpha()ترجع الطريقة Trueإذا كانت جميع الأحرف في السلسلة أحرفًا.

'One1'.isalpha() #=> False
'One'.isalpha() #=> True

26. كيف يمكن استبدال كل تكرارات سلسلة فرعية معينة في سطر معين؟


إذا فعلت ذلك بدون تصدير وحدة نمطية تسمح لك بالعمل مع التعبيرات العادية ، يمكنك استخدام الطريقة لحل هذه المشكلة replace().

sentence = 'Sally sells sea shells by the sea shore'
sentence.replace('sea', 'mountain')
#=> 'Sally sells mountain shells by the mountain shore'

27. كيف يمكن إرجاع حرف سطر مع الحد الأدنى من رمز ASCII؟


إذا نظرت إلى رموز ASCII للعناصر ، فقد تبين ، على سبيل المثال ، أن الأحرف الكبيرة تحتوي على رموز أقل من الأحرف الصغيرة. تقوم الدالة min()بإرجاع حرف السلسلة التي تحتوي على أصغر رمز.

min('strings') #=> 'g'

28. كيف تتحقق من سلسلة تحتوي على أحرف أبجدية رقمية فقط؟


تتضمن الأحرف الأبجدية الرقمية الأحرف والأرقام. للإجابة على هذا السؤال ، يمكنك استخدام الطريقة isalnum().

'Ten10'.isalnum() #=> True
'Ten10.'.isalnum() #=> False

29. كيفية إزالة المسافات من بداية السطر (من جانبه الأيسر) ، أو من نهايته (من الجانب الأيمن) ، أو على جانبي الخط؟


هنا ، الأساليب lstrip()، rstrip()وعلى التوالي ، مفيدة لنا strip().

string = '  string of whitespace    '
string.lstrip() #=> 'string of whitespace    '
string.rstrip() #=> '  string of whitespace'
string.strip() #=> 'string of whitespace'

30. كيف يمكن التحقق من أن السلسلة تبدأ بتسلسل معين من الأحرف ، أو تنتهي بتسلسل معين من الأحرف؟


للإجابة على هذا السؤال ، يمكنك اللجوء ، على التوالي ، إلى الأساليب startswith()و endswith().

city = 'New York'
city.startswith('New') #=> True
city.endswith('N') #=> False

31. كيفية ترميز سلسلة في ASCII؟


encode()تتيح لك الطريقة ترميز السلاسل باستخدام الترميز المحدد. يتم استخدام الترميز الافتراضي utf-8. إذا تعذر تمثيل حرف معين باستخدام الترميز المحدد ، فسيتم إنشاء خطأ UnicodeEncodeError.

'Fresh Tuna'.encode('ascii')
#=> b'Fresh Tuna'
'Fresh Tuna Â'.encode('ascii')
#=> UnicodeEncodeError: 'ascii' codec can't encode character '\xc2' in position 11: ordinal not in range(128)

32. كيف أعرف أن السلسلة تشمل مسافات فقط؟


هناك طريقة isspace()ترجع Trueفقط إذا كانت السلسلة تتكون من مسافات فقط.

''.isspace() #=> False
' '.isspace() #=> True
'   '.isspace() #=> True
' the '.isspace() #=> False

33. ماذا يحدث إذا قمت بضرب صف في 3؟


سيتم إنشاء خط جديد يمثل الخط الأصلي المكرر ثلاث مرات.

'dog' * 3
# 'dogdogdog'

34. كيف تجعل الحرف الأول من كل كلمة في سلسلة أحرف كبيرة؟


هناك طريقة title()تحرف الحرف الأول من كل كلمة في السلسلة.

'once upon a time'.title() #=> 'Once Upon A Time'

35. كيف تجمع بين سطرين؟


يمكنك استخدام عامل التشغيل لسَلسَلة السلاسل +.

'string one' + ' ' + 'string two' 
#=> 'string one string two'

36. كيف تستعمل طريقة القسم ()؟


الأسلوب partition()يكسر السلسلة بواسطة السلسلة الفرعية المعطاة. بعد ذلك ، يتم إرجاع النتيجة كمجموعة. علاوة على ذلك ، يتم تضمين السلسلة الفرعية التي تم تنفيذ الانهيار على طولها أيضًا في المجموعة.

sentence = "If you want to be a ninja"
print(sentence.partition(' want '))
#=> ('If you', ' want ', 'to be a ninja')

37. الخطوط في Python غير قابلة للتغيير. ماذا تعني؟


تشير حقيقة أن السلاسل غير قابلة للتغيير إلى أنه بعد إنشاء كائن سلسلة ، لا يمكن تغييره. عند "تعديل" السلاسل ، لا تتغير السلاسل الأصلية. بدلاً من ذلك ، يتم إنشاء كائنات جديدة تمامًا في الذاكرة. يمكنك إثبات ذلك باستخدام الوظيفة id().

proverb = 'Rise each day before the sun'
print( id(proverb) )
#=> 4441962336
proverb_two = 'Rise each day before the sun' + ' if its a weekday'
print( id(proverb_two) )
#=> 4442287440

عند التسلسل 'Rise each day before the sun'وفي ' if its a weekday'الذاكرة ، يتم إنشاء كائن جديد بمعرف جديد. إذا كان الكائن الأصلي سيتغير ، فسيكون للكائنات نفس المعرف.

38. إذا قمت بتعريف نفس السطر مرتين (كتابته في متغيرين مختلفين) - كم عدد الكائنات التي سيتم إنشاؤها في الذاكرة؟ 1 او 2؟


مثال على هذا العمل مع السلاسل هو جزء التعليمات البرمجية التالي:

animal = 'dog'
pet = 'dog'

باستخدام هذا النهج ، يتم إنشاء كائن واحد فقط في الذاكرة. عندما صادفت هذا للمرة الأولى ، لم يبد لي ذلك بديهيًا. لكن هذه الآلية تساعد Python في حفظ الذاكرة عند العمل مع سلاسل طويلة.

يمكن إثبات ذلك باللجوء إلى وظيفة id().

animal = 'dog'
print( id(animal) )
#=> 4441985688
pet = 'dog'
print( id(pet) )
#=> 4441985688

39. كيف تستخدم طرق maketrans () وترجمة ()؟


maketrans()تتيح لك الطريقة وصف تعيين حرف لآخر ، وإرجاع جدول التحويل. تسمح لك

الطريقة translate()بتطبيق الجدول المحدد لتحويل السلسلة.

#  
mapping = str.maketrans("abcs", "123S")
#  
"abc are the first three letters".translate(mapping)
#=> '123 1re the firSt three letterS'

يرجى ملاحظة أن شريط مصنوع من استبدال حرف a، b، cو s، على التوالي، رموز 1، 2، 3و S.

40. كيفية إزالة حروف العلة من سلسلة؟


أحد الإجابات على هذا السؤال هو أنه يتم فرز الأحرف في سلسلة باستخدام آلية استيعاب القائمة. يتم التحقق من الرموز من خلال المقارنة مع مجموعة أحرف تحتوي على حروف العلة. إذا لم يتم تضمين الحرف في المجموعة ، يتم إرفاقه بخط جديد.

string = 'Hello 1 World 2'
vowels = ('a','e','i','o','u')
''.join([c for c in string if c not in vowels])
#=> 'Hll 1 Wrld 2'

41. في أي الحالات تستخدم طريقة rfind ()؟


طريقة rfind()مشابهة لطريقة find()، ولكن، على عكس find()، فإنه بفحص السلسلة وليس من اليسار إلى اليمين، ولكن من اليمين إلى اليسار، والعودة في مؤشر على وقوع وجدت الأول من سلسلة فرعية المرجوة.

story = 'The price is right said Bob. The price is right.'
story.rfind('is')
#=> 39

ملخص


غالبًا ما أشرح لمدير منتج واحد ، وهو شخص كبير في السن ، أن المطورين ليسوا قواميس تخزن أوصافًا لطرق الكائن. ولكن كلما زاد عدد الطرق التي يتذكرها المطور ، كلما قلت الحاجة إلى google ، وكلما كان أسرع وأكثر متعة في العمل. آمل أن تتمكن الآن من الإجابة بسهولة على الأسئلة التي نوقشت هنا.

القراء الأعزاء! ماذا عن التعامل مع الأوتار في Python ، هل تنصح أولئك الذين يستعدون لمقابلة؟


All Articles