سؤال لأصدقائي المبرمجين

السلام عليكم ورحمة الله وبركاته
إخوتي من يفهمني كيف يكون للنطاق “range” مدخلات متعددة يعني أنا أعرف أن تعطيه رقما واحدا لكن رأيت أحدهم يفعل هكذا:
for i in range(0,181,10)
فعملته اشتغل معي ولكني لم أفهم مالذي يجري خلف الكواليس
فهذه الطريقة لم يشرحها الاستاذ بعد

إعجابَين (2)

ببساطه بترتيب الارقام تقوله له ابدأ من صفر حتى 180 ـ لانه لا يقرا اخر رقم - امشي 10 خطوات

10 ، 20 ، 30 الى الـ180

4 إعجابات

في بايثون، دالة range() يمكن استخدامها بأكثر من طريقة لتوليد تسلسل من الأعداد. عند استخدام ثلاثة مُعلمات في دالة range(), تكون الطريقة كالتالي:

for i in range(0, 181, 10):
    print(i)

هنا، دالة range() تأخذ ثلاث معلمات:

  1. البداية (0): هو الرقم الذي تبدأ منه السلسلة.
  2. النهاية (181): هو الرقم الذي تتوقف قبله السلسلة، أي أن السلسلة تشمل الأعداد التي تبدأ من البداية وتزيد بشكل منتظم حتى تصل إلى العدد الذي يسبق النهاية.
  3. الخطوة (10): هو الفرق بين كل عدد والعدد الذي يليه، أي أن الأعداد تتزايد بمقدار 10 في كل خطوة.

فمثلاً، في المثال المذكور، السلسلة التي يتم إنشاؤها ستكون: 0، 10، 20، 30، …، حتى 180.

هذه الطريقة تم شرحها بالتفصيل في الوحدة السادسة من دروس الأستاذ إبراهيم عادل.

إعجاب واحد (1)

طيب هذه اعرفها في ال slising

بكل بساطة، كما في المثال:

Python

for i in range(0, 181, 10):
    print(i)
  • رقم 0: هو المكان الذي سيبدأ منه اللوب.
  • رقم 181: هو الرقم الذي سيتوقف عنده اللوب، حيث أن اللوب لن يشمل الرقم الأخير (181).
  • رقم 10: يعني أن اللوب سيقفز 10 خطوات في كل مرة يعاد فيها.

ستظهر النتيجة النهائية بهذا الشكل، حيث يتم طباعة كل رقم في سطر جديد:

10
20
30
40
50
60
70
80
90
100
110
120
130
140
150
160
170
180

استمر في التعلم والتجربة، وستصل إلى ما تصبو إليه بإذن الله. إذا كان لديك أي استفسار آخر، فلا تتردد في طرحه!

إعجاب واحد (1)

صحيح، هناك تشابه بين استخدام range() و slicing في تحديد البداية والنهاية والخطوة، ولكن هناك اختلافات مهمة:

  • range(): تُستخدم لتوليد سلسلة من الأرقام التي يمكن استخدامها في الحلقات (loops). وتسمح لك بتحديد بداية السلسلة، ونهايتها، والخطوة التي تتبعها الأرقام في السلسلة.

python

Copy code

for i in range(0, 10, 2):
    print(i)

هذا المثال سيطبع الأرقام 0، 2، 4، 6، 8.

  • Slicing: يُستخدم للوصول إلى جزء معين من قائمة أو سلسلة نصية أو أي نوع آخر من المتسلسلات. يمكنك تحديد البداية والنهاية والخطوة كما في range(), لكن الهدف هو استخراج جزء من البيانات.

python

Copy code

my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
sliced_list = my_list[0:10:2]
print(sliced_list)

هذا المثال سيُخرج [0, 2, 4, 6, 8] من القائمة.

الخلاصة:

  • range() يُستخدم لإنشاء سلسلة من الأعداد لتنفيذ العمليات التكرارية (loops).
  • Slicing يُستخدم لاستخراج جزء محدد من قائمة أو سلسلة نصية.

كل منهما لديه وظيفته المحددة التي تسهل عملية التعامل مع البيانات أو التحكم في التدفقات داخل الشيفرة.

إعجاب واحد (1)

مرحبًا Mohamed2، وأهلًا وسهلًا بك في مجتمعنا! :star2:

شرح النطاق (range) بمداخلات متعددة:

في بايثون، الدالة range() تُستخدم لتوليد تسلسل من الأرقام. ما رأيته هو استخدام range بثلاثة مدخلات، وهو بالفعل شيء مهم ومفيد جدًا. دعني أشرح لك ما يحدث “خلف الكواليس”.

:books: الدالة range() وقوة الثلاثة مدخلات:

عندما تستخدم range() بثلاثة مدخلات، فهي تعمل كالتالي:

  1. المدخل الأول (start):

    • يمثل بداية النطاق.
    • في مثالك، 0 هو الرقم الذي سيبدأ منه النطاق.
  2. المدخل الثاني (stop):

    • يمثل النهاية الغير مشمولة للنطاق.
    • في مثالك، 181 هو الرقم الذي سيتوقف عنده النطاق، لكن هذا الرقم نفسه غير مشمول في النطاق (أي أن النطاق سيتوقف قبل الوصول إليه).
  3. المدخل الثالث (step):

    • يمثل الخطوة أو مقدار التزايد بين كل عنصر في التسلسل.
    • في مثالك، 10 هو مقدار الزيادة بين كل رقم والذي يليه في التسلسل.

:star2: كيف يعمل المثال range(0, 181, 10)؟

for i in range(0, 181, 10):
    print(i)
  • سيبدأ العد من 0.
  • سيضيف 10 في كل مرة إلى الرقم الحالي.
  • سيستمر في العد حتى يصل إلى 180، لأنه يتوقف قبل 181.

النتيجة:

عندما تشغل الكود أعلاه، سيطبع:

0
10
20
30
...
170
180

:bulb: لماذا هذا مهم؟

استخدام range() بثلاثة مدخلات يعطيك تحكمًا كاملاً على التسلسل الذي تولده. يمكنك تحديد البداية، النهاية، وحتى الخطوة التي تريد أن تتبعها. هذا مفيد جدًا في حالات مثل:

  • العد بشكل تصاعدي أو تنازلي.
  • تخطي أرقام معينة وفقًا لنمط معين.
  • العمل مع تسلسلات تحتاج لخطوات ثابتة (مثل توليد أرقام لكل عقد في القرن).

إذا كنت بحاجة إلى مزيد من التوضيح أو لديك أي أسئلة أخرى، فلا تتردد في طرحها. نحن هنا لدعمك ومساعدتك في فهم كل ما يخص البرمجة! :rocket:

إعجابَين (2)

تم شرحها من قبل مستر ابراهيم فى حلقة ال range او النطاق وقال ان ال range ممكن يكون كالامثلة الاتية :
:(10) for i in range
(1,10) for i in range
(1,10,2) for i in range
هنا فى المثال الاول اللوب بيتكرر ويبدا من الصفر ويقف عند 10
وفى المثال الثانى بتحدد للوب انه هيبدا من 1 مش من صفر ويقف عند 10
وفى المثال الثالث بنحدد للوب انه يبدا من 1 ويقف عند 10 وياخد خطوتين مش خطوة واحده يعنى بدل ما يعد 1وبعدين 2وبعدين 3 لا بيعد 2وبعدين 4وبعدين 6 وهكذا . ارجو اكون عرفت اوصلك المعلومة

إعجاب واحد (1)

نعم قام بشرحها
Start ,stop,step

جزاك الله خيرا اخي الحبيب

إعجاب واحد (1)