چالش روزانه · ۲۲ مهر ۱۴۰۵

چالش پایتون ۱۱: range با گام منفی

قبل از اجرای کد، خروجی آن را پیش‌بینی کن. حدس نزن؛ خط به خط فکر کن پایتون چه می‌کند.

print(len(range(3, 10, 2)), list(range(10, 1, -3)))
خروجی کدام است؟

نمایش پاسخ و توضیح

پاسخ درست: گزینهٔ الف — 4 [10, 7, 4]

اولی: range(3, 10, 2)

از ۳ شروع کن، دوتا دوتا جلو برو، قبل از ۱۰ بایست: 3, 5, 7, 9 ← چهار عدد.

دومی: range(10, 1, -3)

از ۱۰ شروع کن، سه‌تا سه‌تا کم کن، قبل از رسیدن به ۱ بایست: 10, 7, 4.

عدد بعدی ۱ بود، ولی «توقف» هیچ‌وقت جزو نتیجه نیست، با گام منفی هم همین‌طور.

جواب: 4 [10, 7, 4]

یادتان باشد

  • range(start, stop, step) ← stop هرگز جزو نتیجه نیست.
  • با گام منفی، start باید از stop بزرگ‌تر باشد؛ وگرنه range خالی است: list(range(1, 10, -1)) ← [].

حالا خودت اجرا کن و تغییرش بده

print(len(range(3, 10, 2)), list(range(10, 1, -3)))