While for range if (coding game'den bir soru)

Merhabalar,

Coding Game’in ilk bölümlerinden biri olan https://www.codingame.com/ide/puzzle/the-descent bölümünde kod çözümünü bir arkadaş şöyle çözümlemiş:

import sys
import math

# The while loop represents the game.
# Each iteration represents a turn of the game
# where you are given inputs (the heights of the mountains)
# and where you have to print an output (the index of the mountain to fire on)
# The inputs you are given are automatically updated according to your last actions.


# game loop
while True:
    ans = 1
    height = 0

    for i in range(8):
        mountain_h = int(input())  # represents the height of one mountain.
        if mountain_h>height:
            ans=i
            height=mountain_h

    # Write an action using print
    # To debug: print("Debug messages...", file=sys.stderr, flush=True)

    # The index of the mountain to fire on.

    print(ans)

Bunu tane tane anlatabilecek arkadaşımıza şimdiden sonsuz teşekkürler.

Öncelikle tanımlamalar yapılmış.

  • Programda yer alan while döngüsünün, oyunu temsil ettiği söyleniyor.
  • Her döngü yenilemesi oyunun bir dönüşünü temsil ediyor.
  • Programın ihtiyacı olan girdi ve veriyi heights ile mountains de tutacak.
  • Çıktı göstermen zaman da “the index of the mountain to fire on” yazan yere yazacaksın.
  • Verilen girdiler son eylemlere göre otomatik güncelleniyor.

Şimdi kodu okuyalım;

iki modüle ihtiyacımız var. Birincisi sys diğeri math

sys için kaynak; (python sistemine ilişkin nitelikler için lazım)

https://python-istihza.yazbel.com/standart_moduller/sys.html

math için kaynak; (matematiksel işlemler için kullanılacak)

https://python-istihza.yazbel.com/standart_moduller/math.html

import sys
import math

while True: #döngü oluşturulmuş

    ans = 1 #
    height = 0 # yükseliğin başlangıç değeri belirlenmiş

    for i in range(8): #range ile 8 e kadar bir liste oluşturulmuş. For döngüsü 8 kere çalışacak demektir bu-
                      #(0 dan başlar 8 e kadar gider. 8 dahil değil!)

        mountain_h = int(input()) #dağ yüksekliğini kullanıcıdan alıyor.

        if mountain_h>height: #eğer dağ yüksekliği yukarıda belirlenen (height=0) değerden büyük ise şunları yap

            ans=i #ans değişkenine for döngüsündeki i değişkeninin range(8) de oluşturulan listeden karşılık gelen değeri ver

            height=mountain_h #yükseklik değişkenimizin yeni değerini kullanıcıdan alınan yükseklik değeri olarak değiştir
            #böylelikle ne oluyor? her seferinde kullanıcıdan bir öncekinden daha fazla bir yükseklik girmesi gerekeceği için-
            #for döngüsünde range(8) içinde dönen i değişkeni ans değişkenine yazılacak. Her seferinde bu değer-
            #artacağı için program çalıştığında hep bir yükselişte olacak

    # Döngü başa dönmeden önce bir eylem gerçekleştirmek istiyorsak buraya print edebiliriz
    # Hata ayıklamak ve bilgilendirmek için şunları kullanabiliriz; print("Debug messages...", file=sys.stderr, flush=True)

    # Son olarak da dağın ateşe verilecek indeksini yazdır.

    print(ans) #yazdırdık.

Yani biraz eksik var sanki, öyle hissettiriyor. Kodun tamamının bu olduğuna emin misiniz?

Tevhidulvahset vakit ayırdığınız için çok teşekkür ederim.

Kodun yapılışı burada hocam:

rica ederim akşam izleyip bakarım.