مراجعة السلاسل النصية

3.1 مراجعة السلاسل النصية

أهداف التعلم

في نهاية هذا القسم، ينبغي أن تكون قادرًا على

  • استخراج حرف معين من سلسلة نصية باستخدام فهرس.
  • استخدام تسلسلات الهروب لتمثيل الأحرف الخاصة.

الفهارس

السلسلة النصية هي تسلسل من صفر أو أكثر من الأحرف. لكل حرف فهرس يشير إلى موقعه. تُرَقَّم الفهارس من اليسار إلى اليمين، بدءًا من 0. كما تُرَقَّم الفهارس من اليمين إلى اليسار، بدءًا من -1.

نقطة تحقق

فهارس السلاسل النصية

مفاهيم تطبيقية

فهارس السلاسل النصية

1.
ما فهرسُ الحرف الثاني في السلسلة النصية؟
  1. 1
  2. 2
  3. -2
2.
إذا كانت s = "Python!"، فما قيمة s[1] + s[-1]؟
  1. "P!"
  2. "y!"
  3. "yn"
3.
إذا كانت s = "Python!"، فما نوع الكائن s[0]؟
  1. حرف
  2. عدد صحيح
  3. سلسلة نصية

يونيكود

تستخدم بايثون يونيكود، وهو المعيار الدولي لتمثيل النصوص على أجهزة الحاسوب. يُعَرِّف يونيكود رقمًا فريدًا، يُسمى نقطة رمز، لكل حرف ممكن. مثال: الحرف "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)
جدول 3.1 قيم الأحرف. يعرض هذا الجدول نقاط الرمز من 32 إلى 127 كما هي مُعَرَّفة بواسطة آسكي ويونيكود. نقاط الرمز من 0 إلى 31 هي أحرف غير قابلة للطباعة كانت تُستخدم في الاتصالات.

مفاهيم تطبيقية

ord() و chr()

4.
ما نقطةُ الرمز للحرف A؟
  1. 1
  2. 65
  3. 97
5.
ما القيمة التي تُرجعها ord("0")؟
  1. 0
  2. 48
  3. Error
6.
ما الذي تُرجعه chr(126)؟
  1. ~
  2. "~"
  3. Error

الأحرف الخاصة

يستخدم تسلسل الهروب علامة الشرطة المائلة العكسية (\) لتمثيل حرف خاص ضمن سلسلة نصية.

تسلسل الهروب المعنى مثال مخرجات الشاشة
\n
حرف سطر جديد يشير إلى نهاية سطر من النص.
print("Escape\nsequence!")

Escape
sequence!

\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 \
جدول 3.2 تسلسلات الهروب الشائعة.

مفاهيم تطبيقية

علامات الجدولة والأسطر الجديدة

7.
أي مما يلي هو تسلسل هروب؟
  1. t
  2. /t
  3. \t
8.
أي تعليمة تطبع علامة الشرطة المائلة العكسية (\) على الشاشة؟
  1. print(\\)
  2. print(\"\")
  3. print("\\")
9.
أي تعليمة تطبع Enter و here على سطرين منفصلين؟
  1. print("Enter here")
  2. print("Enter" + \n + "here")
  3. print("Enter" + "\n" + "here")

جرّب بنفسك

اقتباس هوبر

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() لتحويل كل عدد صحيح إلى حرف، ثم اجمع الأحرف الناتجة معًا.