3.1 مراجعة السلاسل النصية
أهداف التعلم
في نهاية هذا القسم، ينبغي أن تكون قادرًا على
- استخراج حرف معين من سلسلة نصية باستخدام فهرس.
- استخدام تسلسلات الهروب لتمثيل الأحرف الخاصة.
الفهارس
السلسلة النصية هي تسلسل من صفر أو أكثر من الأحرف. لكل حرف فهرس يشير إلى موقعه. تُرَقَّم الفهارس من اليسار إلى اليمين، بدءًا من 0. كما تُرَقَّم الفهارس من اليمين إلى اليسار، بدءًا من -1.
مفاهيم تطبيقية
فهارس السلاسل النصية
يونيكود
تستخدم بايثون يونيكود، وهو المعيار الدولي لتمثيل النصوص على أجهزة الحاسوب. يُعَرِّف يونيكود رقمًا فريدًا، يُسمى نقطة رمز، لكل حرف ممكن. مثال: الحرف "P" له نقطة الرمز 80، والحرف "!" له نقطة الرمز 33.
تُحوِّل الدالّة المُضمَّنة ord() حرفًا إلى نقطة رمز. مثال: ord("P") تُرجع العدد الصحيح 80. وبالمثل، تُحوِّل الدالّة المُضمَّنة chr() نقطةَ رمز إلى حرف. مثال: chr(33) تُرجع السلسلة النصية "!".
يونيكود هو امتداد لـ آسكي (ASCII)، وهو الرمز الأمريكي القياسي لتبادل المعلومات. في الأصل، عرّف آسكي 128 نقطة رمز فقط، وهو ما كان كافيًا لدعم اللغة الإنجليزية. يُعَرِّف يونيكود أكثر من مليون نقطة رمز ويدعم معظم اللغات المكتوبة في العالم.
32 (space)
33 !
34 "
35 #
36 $
37 %
38 &
39 '
40 (
41 )
42 *
43 +
44 ,
45 -
46 .
47 /
48 0
49 1
50 2
51 3
52 4
53 5
54 6
55 7
56 8
57 9
58 :
59 ;
60 <
61 =
62 >
63 ? |
64 @
65 A
66 B
67 C
68 D
69 E
70 F
71 G
72 H
73 I
74 J
75 K
76 L
77 M
78 N
79 O
80 P
81 Q
82 R
83 S
84 T
85 U
86 V
87 W
88 X
89 Y
90 Z
91 [
92 \
93 ]
94 ^
95 _ |
96 `
97 a
98 b
99 c
100 d
101 e
102 f
103 g
104 h
105 i
106 j
107 k
108 l
109 m
110 n
111 o
112 p
113 q
114 r
115 s
116 t
117 u
118 v
119 w
120 x
121 y
122 z
123 {
124 |
125 }
126 ~
127 (delete) |
مفاهيم تطبيقية
ord() و chr()
الأحرف الخاصة
يستخدم تسلسل الهروب علامة الشرطة المائلة العكسية (\) لتمثيل حرف خاص ضمن سلسلة نصية.
| تسلسل الهروب | المعنى | مثال | مخرجات الشاشة |
|---|---|---|---|
\n |
حرف سطر جديد يشير إلى نهاية سطر من النص. | print("Escape\nsequence!") |
|
\t |
حرف جدولة؛ مفيد لإزاحة الفقرات أو محاذاة النص على أسطر متعددة. | print("Escape\tsequence!") |
Escape sequence! |
\' |
علامة اقتباس مفردة؛ بديل لإحاطة السلسلة النصية بعلامتي اقتباس مزدوجتين. | print('I\'ll try my best!') |
I'll try my best |
\" |
علامة اقتباس مزدوجة؛ بديل لإحاطة السلسلة النصية بعلامتي اقتباس مفردتين. | print("I heard you said \"Yes\"") |
I heard you said "Yes" |
\\ |
حرف الشرطة المائلة العكسية. | print("This prints a \\") |
This prints a \ |
مفاهيم تطبيقية
علامات الجدولة والأسطر الجديدة
جرّب بنفسك
اقتباس هوبر
Grace Hopper (1906–1992) كانت عالمة حاسوب مشهورة (وأميرال خلفي في البحرية الأمريكية!) ابتكرت فكرةَ لغات البرمجة المستقلة عن الآلة. تصورت لغة برمجة تعتمد على اللغة الإنجليزية وقدمت العديد من المساهمات التي مهدت الطريق للغات البرمجة الحديثة، بما في ذلك بايثون.
اكتب برنامجًا يطبع النص التالي، بما في ذلك علامات الاقتباس. يجب ألا يستخدم برنامجك علامات اقتباس مفردة (') في أي مكان في الشِفرة. يجب أن يكون السطر الأخير مُزاحًا بحرف جدولة.
"To me programming is more than an important practical art.
It is also a gigantic undertaking in the foundations of knowledge."
-- Grace Hopper
جرّب بنفسك
شيفرة الإزاحة
خلال الإمبراطورية الرومانية، استخدم يوليوس قيصر (100–44 قبل الميلاد) تقنية بسيطة لتشفير الرسائل الخاصة. كان كلُّ حرف يُستبدَل بالحرف الثالث الذي يليه في الأبجدية. مثال: إذا كانت الرسالة CAT، فإن C أصبحت F، و A أصبحت D، و T أصبحت W، مما أدى إلى الرسالة FDW. تُعرف هذه التقنية باسم شيفرة الإزاحة لأن كل حرف يُزاح بمقدار معيّن. في حالة قيصر، كان المقدار ثلاثة، ولكن مقادير أخرى (بخلاف 0) ستعمل أيضًا.
اكتب برنامجًا يطلب من المستخدم إدخال القيمتين التاليتين (مثال الإدخال بالخط العريض):
Enter a 3-letter word: CAT
Shift by how many letters? 3
يجب أن يقوم البرنامج بعد ذلك بإزاحة كل حرف من الكلمة بالمقدار المطلوب. بناءً على المثال أعلاه، ستكون المخرجات:
The secret message is: FDW
تلميح: استخدم الدالّة ord() لتحويل كل حرف إلى عدد صحيح، أضف مقدار الإزاحة إلى كل عدد صحيح، استخدم الدالّة chr() لتحويل كل عدد صحيح إلى حرف، ثم اجمع الأحرف الناتجة معًا.