fbpx

Python програмчлалын хэл дээр бодлого бодож эхэлж байгаа анхан шатны суралцагчдад маань ихээхэн тулгардаг нэгэн асуудал бол input буюу оролтын утгыг авах билээ. Өнөөдрийн нийтлэлээр бид хэрхэн оролтын утгыг хувьсагчид зөв авч, цаашид үр дүнтэй хэрэглэх талаар дэлгэрэнгүй тайлбарлана.

Бидний сонгож авсан жишээ бодлого бол SPOJ RGB7 сайтын “3 тооны их” нэртэй бодлого юм. Энэхүү бодлогын хувьд гараас өгөгдсөн 3 тооны ихийг олон хэвлэхэд л хангалттай ба өөрөөр хэлбэл маш энгийн бодлого билээ. Гэхдээ анхан шатны суралцагчид маань гараас 3 тоогоо авч чадахгүй дараах нийтлэг алдааг гаргах тохиолдол олон байдаг.

Нэг хувьсагчид бүх утгыг авах

number = int(input()) # Гараас утга авах

Дээрх үйлдэл нь input() функцээр оруулсан утгыг аван бүхэл тоо буюу Integer төрөлд хөрвүүлэн number хувьсагчид утга олгох үйлдэл билээ. Хэдий алдаагүй зөв үйлдэл ч гэсэн бид гараас 3 утга авах ёстой байтал энэхүү үйлдлийн дараа number хувьсагчид хамгийн эхэнд орж ирсэн утга буюу жишээ бодлогын хувьд 1 ийн тоо оноогдсон байх бөгөөд үлдсэн утгууд хаягдана. Тиймээс бид энэхүү үйлдлийг гараас нэг оролтын утга авах тохиолдолд л хэрэглэх нь зүйтэй.

Олон хувьсагчид дараалуулж утга авах

number1 = int(input()) # Гараас эхний утга авах
number2 = int(input()) # Гараас хоёр дахь утга авах
number3 = int(input()) # Гараас гурав дахь утга авах

Дараагийн гаргадаг нийтлэг алдаа бол утга тус бүрт input() функц дуудах замаар гурван тоо авах. Энэхүү арга нь оролтын утгууд дараалж өгөгдсөн буюу тус бүр нэг мөрөнд өгөгдсөн тохиолдолд ашиглаж болох ч бидний сонгож авсан бодлогын хувьд бүх оролтыг нэг мөрөнд зайгаар тусгаарлан өгсөн байгааг сайтар ажиглах хэрэгтэй. Ийм код бичсэн тохиолдолд жишээ бодлогын хувьд “1 2 3” гэж оруулбал, зөвхөн 1-ийг number1 хувьсагчид хадгалж, number2 болон number3 хувьсагчид утга оноох үед алдаа гарах эсвэл хүлээлтийн горимд шилжинэ.

Тэгвэл яагаад ийм алдаа гардаг вэ :

Бидний мэддэгчлэн Python-ийн input() функц нь хэрэглэгчийн оруулсан бүх утгуудыг тэмдэгт мөр хэлбэрээр авдаг онцлогтой ба энэ нь өгөгдлийн төрлүүдийн уян хатан ажиллагааг хялбаршуулахаас гадна аливаа оролтыг шаардлагатай төрөл рүү хөрвүүлэх боломжийг олгодог.Хэрвээ бид тоон утгатай ажиллаж байгаа бол үүнийг тэмдэгт мөрөөс тоон утга руу шилжүүлдэг билээ. Иймээс бид int() функцийг дуудах үед буюу тэмдэгт мөрийг бүхэл тоон төрөл рүү хөрвүүлэх үед зөвхөн эхний тэмдэгт мөрийг тоон утга руу хөрвүүлээд үлдсэн утгууд энгийнээр хэлбэл алга болдог. Иймээс бидний оролтын бусад утгууд цаашид хэргэлэх боломжгүй болно.

Зөв оролт авах арга :

split() функц нь python програмчлалын хэл дээр түгээмэл ашиглагддаг бөгөөд зай эсвэл тодорхой тусгай тэмдэгтээр тусгаарлагдсан текстийг хэсэгчилж, жагсаалт буюу list болгон хувиргадаг. Харин map() функц нь өгөгдлийн бүтцийг (ихэвчлэн жагсаалт, tuple гэх мэт) боловсруулахдаа элемент бүр дээр тодорхой үйлдлийг хэрэгжүүлэхэд ашиглагддаг.

number1, number2, number3 = map(int, input().split()) # Гараас өгсөн утгийг 3 хувьсагчид авах

Дээрх код нь :

  • Нэг мөрөнд өгөгдсөн 3 тоон утгыг гараас авахдаа input() функц ашиглана.
  • Орж ирсэн тэмдэгт мөрийг split() функц ашиглан хоорондох зайг устгана.
  • map() функц ашиглан утга бүрийг int() буюу бүхэл тоон төрөлд хувиргана.
  • Хөрвүүлсэн утгуудыг харгалзах хувьсагчид буюу number1, number2, number3 -т оноож байна.

Энэхүү үйлдлийг ашиглан бид өгөгдсөн утгуудыг list буюу жагсаалтад ч хадгалах боломжтой.

numbers = list(map(int, input().split())) # Гараас өгсөн утгыг жагсаалтад хадгалах

Дээрх кодын үр дүнд оролтын бүх утгыг numbers жагсаалтад хадгалах ба хийгдэх үйлдлийн хувьд өмнөх жишээтэй ижил.

Жишээ бодлого :

Ийнхүү бид нэг мөрөнд өгөгдсөн олон тоон оролтыг хэрхэн авах талаар суралцлаа. Одоо сурсан аргаа ашиглан жишээ бодлогыг бодоцгооё. Өмнөх нийтлэлээр бид бодлого бодох явцыг дэлгэрэнгүй тайлбарласан тул одоо шууд кодын хэсгийг тайлбарлая.

numbers = list(map(int, input().split()))  # Гараас өгсөн утгыг жагсаалтад хадгалах
max_number = max(numbers) # Их тоог олох
print(max_number) # Хэвлэх

Дээрх код нь :

  • Нэг мөрөнд өгөгдсөн 3 тоон утгыг гараас аван numbers жагсаалтад хадгалав.
  • max() функц ашиглан өгөгдсөн тоон утгуудаас хамгийн ихийг олон max_number хувьсагчид хадгалав.
  • Гаралтын утгыг хэвлэнэ.

Жишээ оролт буюу 1 2 3 утгыг хийхэд хариу нь 3 гарав.

Өнөөдрийн нийтлэлээр бид хэрхэн python програмчлалын хэл дээр нэг мөрөнд өгөгдсөн оролтыг олон хувьсагчид эсвэл жагсаалтад авч болох талаар тайлбарлалаа. Цаашид энэхүү арга нь competitive programming болон бусад программчлалын сорилтуудыг амжилттай даван гарахад ашиглагдана гэдэгт итгэлтэй байна.

Leave a Reply