پیدا کردن بزرگترین و کوچکترین عضو لیست در پایتون

آسانلیست و الگوریتم

صورت سؤال

برنامه‌ای بنویسید که چند عدد صحیح را در یک خط از ورودی بخواند و در سطر اول بزرگترین و در سطر دوم کوچکترین آن‌ها را چاپ کند.

عددها با فاصله از هم جدا شده‌اند و دست‌کم یک عدد در ورودی هست. برای تمرین، از تابع‌های max و min استفاده نکنید.

ورودی نمونه

7 -3 12 0 5

خروجی نمونه

12
-3

خودتان امتحان کنید

کد را در ویرایشگر زیر کامل کنید و اجرا کنید. ورودی نمونه در کادر ورودی آماده است و بعد از هر اجرا، خروجی شما با خروجی نمونه مقایسه می‌شود.

Ctrl + Enter
خروجی

کد را اجرا کنید تا خروجی آن اینجا نمایش داده شود.

راهنمایی

دو متغیر largest و smallest بسازید و هر دو را برابر nums[0] بگذارید. بعد در حلقه، هر عدد را با این دو مقایسه کنید.

جواب و توضیح

بهتر است جواب را بعد از امتحان کردن راه خودتان باز کنید.

نمایش جواب
nums = list(map(int, input().split()))

largest = nums[0]
smallest = nums[0]
for n in nums:
    if n > largest:
        largest = n
    if n < smallest:
        smallest = n

print(largest)
print(smallest)

این جواب چطور کار می‌کند؟

خط اول، ورودی را با split() به تکه‌های متنی می‌شکند. map(int, ...) هر تکه را به عدد صحیح تبدیل می‌کند و list(...) نتیجه را به لیست درمی‌آورد.

مقدار اولیهٔ هر دو متغیر خود nums[0] است، نه صفر. اگر largest را صفر بگذارید و همهٔ عددها منفی باشند، صفر به اشتباه بزرگترین عدد اعلام می‌شود.

حلقه از اولین عضو شروع می‌شود و عضو اول یک بار با خودش مقایسه می‌شود. این مقایسه نتیجه را عوض نمی‌کند؛ اگر بخواهید آن را هم حذف کنید، می‌توانید روی nums[1:] حلقه بزنید.

راه دوم: تابع‌های max و min

nums = list(map(int, input().split()))
print(max(nums))
print(min(nums))

در برنامهٔ واقعی همین دو تابع را به کار ببرید؛ کوتاه‌اند و جای خطای کمتری دارند. راه حلقه را برای فهمیدن منطق کار و برای امتحان‌هایی یاد بگیرید که استفاده از این تابع‌ها را ممنوع می‌کنند.

اشتباه‌های رایج

  • مقدار اولیهٔ largest را صفر می‌گذارند و برای لیستی که همهٔ عددهایش منفی است، جواب غلط می‌گیرند.
  • تبدیل با int را فراموش می‌کنند و عددها مثل متن مقایسه می‌شوند؛ آن وقت "9" از "12" بزرگ‌تر حساب می‌شود.
  • اسم متغیر را max یا min می‌گذارند و تابع آمادهٔ پایتون را در ادامهٔ برنامه از دست می‌دهند.

تمرین بعدی

پایتون را قدم‌به‌قدم یاد بگیرید

این تمرین یکی از تمرین‌های پایتون با جواب دینا کد است. در دورهٔ پایتون از صفر هر مفهوم یک درس کوتاه دارد و تمرین هر درس با چند آزمون پنهان نمره می‌گیرد؛ درس‌های اول رایگان است. برای امتحان کد آزاد هم اجرای آنلاین پایتون در دسترس است.