Python / while давталт

while давталт

for давталт нь тодорхой дарааллыг элемент бүрт давтдаг бол while давталт нь нөхцөл үнэн байх хүртэл үргэлжилдэг. Хэдэн удаа давтахыг урьдчилан мэдэхгүй үед — хэрэглэгч зөв оролт өгтөл хүлээх, файл уншиж дуустал давтах — while хамгийн тохиромжтой.

Үндсэн бүтэц

python
тоо = 1

while тоо <= 5:
    print(тоо)
    тоо += 1

# 1
# 2
# 3
# 4
# 5

Бүтэц:

  • while — түлхүүр үг
  • тоо <= 5 — давтах нөхцөл; True байвал үргэлжилнэ
  • : — блок эхлэх тэмдэг
  • Биелүүлэх код 4 зайгаар догол оруулагдана
  • ⚠️ Нөхцөл өөрчлөгдөхгүй бол төгсгөлгүй давталт үүснэ — болгоомжлоорой

for ба while хэзээ сонгох вэ?

| Нөхцөл | Сонгох давталт | | ------------------------------------ | -------------- | | Жагсаалт, string дээр давтах | for | | Тодорхой тооны удаа давтах | for + range | | Нөхцөл хангагдтал давтах | while | | Хэрэглэгчийн оролтыг хүлээх | while | | Файл, өгөгдөл дууссан эсэх шалгах | while |

break — while-аас гарах

python
оролдлого = 0
зөв_нууц_үг = "python123"

while True:                        # төгсгөлгүй давталт
    оролдлого += 1
    нууц_үг = input(f"{оролдлого}-р оролдлого: ")

    if нууц_үг == зөв_нууц_үг:
        print("Нэвтэрлээ ✓")
        break
    elif оролдлого >= 3:
        print("Оролдлого хэтэрлээ. Хаагдлаа.")
        break
    else:
        print("Нууц үг буруу, дахин оролдно уу.")

while True: хэлбэр нь "хэзээ ч зогсохгүй давт" гэсэн утгатай — break-р л гарна.

continue — давталтын нэг алхмыг алгасах

python
тоо = 0

while тоо < 10:
    тоо += 1
    if тоо % 3 == 0:     # 3-т хуваагдах тоог алгасах
        continue
    print(тоо)

# 1, 2, 4, 5, 7, 8, 10

else блок

while давталтад else нэмж болно — давталт нөхцөлөөрөө дуусвал (break-гүйгээр) ажиллана:

python
оролдлого = 0
зөв_хариулт = 42

while оролдлого < 3:
    хариулт = int(input("Тоо таа: "))
    оролдлого += 1
    if хариулт == зөв_хариулт:
        print("Зөв!")
        break
else:
    print(f"Зөв хариулт нь {зөв_хариулт} байлаа.")

Тоолуур ба хуримтлагч

while давталт тоолуур ба нийлбэр гаргахад хэрэглэгддэг:

python
# 1-ээс 100 хүртэл бүхэл тоонуудын нийлбэр
тоо = 1
нийлбэр = 0

while тоо <= 100:
    нийлбэр += тоо
    тоо += 1

print(f"1-ээс 100-ийн нийлбэр: {нийлбэр}")    # 5050

Бодит жишээ — тоо таалтын тоглоом

python
import random

нууц_тоо = random.randint(1, 100)
оролдлого = 0
дээд_оролдлого = 7

print("1-ээс 100 хүртэлх тоог таа!")
print(f"Танд {дээд_оролдлого} оролдлого байна.\n")

while оролдлого < дээд_оролдлого:
    оролдлого += 1
    үлдсэн = дээд_оролдлого - оролдлого

    тааварлалт = int(input(f"{оролдлого}-р оролдлого: "))

    if тааварлалт == нууц_тоо:
        print(f"\n🎉 Зөв! {оролдлого} оролдлогоор таалаа!")
        break
    elif тааварлалт < нууц_тоо:
        print(f"↑ Их тоо оруулна уу. Үлдсэн оролдлого: {үлдсэн}")
    else:
        print(f"↓ Бага тоо оруулна уу. Үлдсэн оролдлого: {үлдсэн}")
else:
    print(f"\n😔 Оролдлого дууслаа. Нууц тоо {нууц_тоо} байлаа.")

Аюултай — төгсгөлгүй давталт

while-д хамгийн нийтлэг алдаа бол нөхцөл хэзээ ч False болохгүй байх явдал:

python
# ❌ Төгсгөлгүй давталт — хэзээ ч зогсохгүй!
тоо = 1
while тоо > 0:
    print(тоо)
    тоо += 1    # тоо буурдаггүй тул нөхцөл үргэлж True

# ✅ Зөв — тоо буурна
тоо = 10
while тоо > 0:
    print(тоо)
    тоо -= 1    # нөхцөл аажмаар False болно

Хэрэв терминалд давталт зогсохгүй бол Ctrl+C дарж зогсооно.

Дараагийн хичээлд:

while давталтыг эзэмшлээ! Дараа нь функц (function) гэж юу болох, хэрхэн зарлаж дуудах, параметр ба return утга хэрхэн ажилладгийг сурна — кодыг дахин ашиглах чадварын гол хэрэгсэл.