input1 = int(input("Data 1: "))
input2 = int(input("Data 2: "))
input3 = int(input("Data 3: "))
input4 = int(input("Data 4: "))
input5 = int(input("Data 5: "))
input6 = int(input("Data 6: "))
input7 = int(input("Data 7: "))
input8 = int(input("Data 8: "))
input9 = int(input("Data 9: "))
input10 = int(input("Data 10: "))
print((input1 + input2 + input3 + input4 + input5 + input6 + input7 + input8 + input9 + input10) / 10)

"""
Explanation: Looplara Giris
Oncelikle klavyemde Turkce karakter olmadigi icin bu sekilde yazmak zorunda kaldigimi belirteyim.
Looplari anlatmadan once looplara neden ihtiyac duydugumuzu anlatmak isterim. Mesela su ana kadar ogrendiklerimizle kullanicidan 10 tane input alip bunlarin ortalamasini hesaplayalim ve bunu standart outputa basalim:
End of explanation
"""


i = 0
inputList = []
while i < 10:
    inputList.append(int(input('Data ' + str(i + 1) + ': ')))
    i += 1
i = 0
total = 0
while i < 10:
    total += inputList[i]
    i += 1
print(total / 10)

"""
Explanation: Bunu yapmanin daha kolay bir yolu olmasaydi programlama kopyala yapistirdan ibaret hale gelirdi. Biz bunu kolaylastirmak icin looplari yani donguleri kullaniyoruz. Python'da anlatacagimiz 2 loop var. Bunlar for ve while looplar. Gelin yukaridaki kodu iki loopu da ayri ayri kullanarak yazalim. Ilk olarak while loop ile baslayalim:
End of explanation
"""


total = 0
for i in range(10):
    total += int(input('Data ' + str(i + 1) + ': '))
print(total / 10)

"""
Explanation: Gordugunuz gibi daha kolaylasti. Aslinda suan satir olarak pek bir fark yok ama 1000 input almamiz gerektigini dusunelim. Tabii 1000 inputu dosyadan okumak daha mantikli ama simdilik oraya girmiyorum. 1000 input aldigimizda while loopta "i < 10"lari "i < 1000" yapmamiz yeterli olurdu. Ama ustteki kod 1000 satirdan uzun olurdu ve ayni seylerin tekrarindan olusurdu.
Simdi de aynisini for loopla yapalim:
End of explanation
"""


def average(myList):
    total = 0
    for i in myList:
        total += i
    return total / len(myList)

avg1 = average([10, 12, 15, 22, 17, 14, 15, 16, 18])
avg2 = average([55, 44, 22, 11, 55, 65, 76, 88, 11, 45, 66, 21, 55, 11, 18, 99])
print(avg1, avg2)

"""
Explanation: Bu sefer yukaridaki gibi liste olusturup ikinci bir loop yapmaktansa direkt olarak total'e ekleme yaptim. Yukaridaki liste olusturma islemini, yaygin kullanilan bir islem oldugu icin, gosterme amaciyla yapmistim. While loopta da direkt olarak totale ekleme yaparak tek loopla isi halledebilirdik.
Functionlar
Peki herseyi boyle her seferinde satir satir mi yazmak zorundayiz. Yani bir kod olusturup onu ihtiyacimiz oldugunda cagirma ihtimalimiz yok mu? Tabii ki var. Fonksiyon tanimlayarak bu islemi yapabiliriz. Ancak fonksiyon tanimlarken genel amacli ve en az 2 ya da 3 kez kullanilacak kodlari fonksiyona cevirmemiz gerektigini belirteyim. Eger boyle bir durum yoksa fonksiyon tanimlamanin tek anlami ilerideki potansiyel kullanimlari garakti altina almak olur. Gelin simdi bir liste alip o listedeki elemanlarin ortalamasini hesaplayan bir fonksiyon tanimlayalim:
End of explanation
"""


noktalar = []
for i in range(5):
  myInput = input('Nokta ' + str(i + 1) + ': ')
  myInput = myInput.split(' ')
  noktalar.append(myInput)
  
def egim(noktalar):
  egimler = []
  for i in noktalar:
    egim = int(i[1]) / int(i[0])
    egimler.append(egim)
  return egimler
  
def dogruSayisi(egimler):
  esit = 0
  for i in range(len(egimler)):
    for j in range(i + 1, len(egimler)):
      print(egimler[i], egimler[j])
      if egimler[i] == egimler[j]:
        esit += 1
        break
  return len(egimler) - esit

print(egim(noktalar))
print(dogruSayisi(egim(noktalar)))

"""
Explanation: Ornekler
Simdi gelin ogrendiklerimizle 2 ornek cozup konuyu bitirelim.
Ilk ornegimiz kullanicidan boslukla ayrilmis 2 sayiyi input olarak alip bunlari kartezyen duzlemdeki x ve y olarak dusunerek egimi hesaplamak. Hesapladigimiz bu egimi kullanarak bircok noktayi input olarak alip bu noktalari kesmek icin orijinden kac dogru cekmemiz gerektigini bulalim:
End of explanation
"""


l = [[True, False, True, True], \
[False, True, True, False], \
[True, True, True, True], \
[False, False, True, True]]

def hareket(myList, konum, yon):
  if yon == 'K':
    if konum[0] != 0 and myList[konum[0]-1][konum[1]]:
      return ((konum[0]-1, konum[1]), 'K')
    else:
      return (konum[0], konum[1]), 'B'
      
  
  elif yon == 'G':
    if konum[0] != len(myList) - 1 and myList[konum[0]+1][konum[1]]:
      return ((konum[0]+1, konum[1]), 'G')
    else:
      return (konum[0], konum[1]), 'D'
    
  elif yon == 'B':
    if konum[1] != 0 and myList[konum[0]][konum[1]-1]:
      return ((konum[0], konum[1]-1), 'B')
    else:
      return (konum[0], konum[1]), 'G'
    
  elif yon == 'D':
    if konum[1] != len(myList) - 1 and myList[konum[0]][konum[1]+1]:
      return ((konum[0], konum[1]+1), 'D')
    else:
      return (konum[0], konum[1]), 'K'
      
myHareket = hareket(l, (2, 3), 'K')
for i in range(254):
  myHareket = hareket(l, myHareket[0], myHareket[1])
print(myHareket)

"""
Explanation: Simdi de bir matrix uzerinde ilerleyen bir robot kodlayalim. Robot her engelle karsilastiginda sola donuyor. Matrixin koseleri de engel kabul ediliyor. Boyle buyrun:
End of explanation
"""


