<jupyter_start><jupyter_text>Bir onceki notebookta gelisi guzel sekilde bisiler ogrenmeye calisip hizlica bir tane calisan programi yapmistik simdi tekrar ederek yeni seyler eklemeye calisalim. Verimizi tekrar okuyalim<jupyter_code>import pandas as pd
data1 = pd.read_csv ('/content/convertcsv.csv')
data1<jupyter_output><empty_output><jupyter_text>Yeni veri girisi icin yazmis oldugumuz onceki notebooktaki fonksiyonu burayada yazalim. Bu fonksiyon yeni satirlar eklememizi saglar<jupyter_code>def ekleme():
  x1 = input("İngilizcesini giriniz:")
  x2 = input("Türkçesini giriniz:")
  x3 = input("İngilizce cümlesini giriniz:")
  x4 = input("Türkçesi cümlesini giriniz:")
  x5 = input("Ek bilgi varsa giriniz yoksa - şareti bırakbilirsiniz")
  data = [
          [x1,x2,x3,x4,x5]
         ]
  dataframe = pd.DataFrame(data)
  dataframe.to_csv("convertcsv.csv", index=False, mode='a', header=False)
index_list = []
import random
def index_generator():
  global index_list
  index_list = []
  i = 0
  while i < 3 :  
    index = random.randint(0,len(data1)-1)
    if index not in index_list :
      index_list.append(index)
      i+=1
  return index_list<jupyter_output><empty_output><jupyter_text>Simdi verimize bir sutun daha eklemeyi ve bu sutunda kelimenin dogru ceavpla bilindiginde +x ,yanlis bilindiginde -x seklinde kelime performansini tutacak bir veri istiyorum.Nasil yeni sutun eklenir bakalim.Google dan buldugumu ornek uzerinden deneyelim hizlica.https://www.geeksforgeeks.org/adding-new-column-to-existing-dataframe-in-pandas/<jupyter_code>address = ['Delhi', 'Bangalore', 'Chennai']
 
data1['Address'] = address
data1<jupyter_output><empty_output><jupyter_text>evet eklemis olduk bunu fonksiyon haline getirmeden once deneme amacli ekledigimiz sutunu silmeyide ogrenelim ileride lazim olabilir.Sitemizdeki ornekten inceleyip bulabiliriz.https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.drop.html<jupyter_code>data1 = data1.drop(columns=['Address'])
data1<jupyter_output><empty_output><jupyter_text>Evet bu metod ile sutunu kaldirabiliyormusun bunuda ogrenmis olduk. Sutun isimlerimizi degistrmeyi deniyelim bizlere lazim olabilirler. Yine pandasin dokumantasyonundan bakalim. https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.rename.html Cesitli yollari var bir tanesini deniyelim<jupyter_code>data1 = data1.rename(columns={"ingilizcesi": "ingilizce",
                              "türkçesi": "turkce",
                              "ingilizce cüme": "ingilizce_cumle",
                              "türkçesi.1" : "turkce_cumle",
                             "ekbilgiler" : "ekbilgi"})
data1<jupyter_output><empty_output><jupyter_text>Sutun ekleme her satir icin default olarak 0 degerini girmesini istememiz bizim icin gayet iyi olacaktir. once kac satirimiz var ona bakalim<jupyter_code>#bu bize son hangi index oldugunu soyleyecektir bunun 1 fazlasi bizim toplam satir sayimizi verecektir
son_index = data1.last_valid_index()
son_index
puan = [] #her satir icin puanlari bu listeye ekelyecegiz
adim = 0
while adim <= son_index: #0 dan son indexe kadar her satir icin 0 ekledik
  puan.append(0)
  adim +=1 

data1['puan'] = puan
data1<jupyter_output><empty_output><jupyter_text>her satir icin 0 ekleyerek bir puan sutunu olsuturmus olduk bunu bir fonksiyonun icine almamiza gerek yok cunki surekli yapmak istedigimiz bir islem degil satir eklemenin aksine  Toparlayalim Yeni bir sutun ekledigimiz icin satir ekleme fonksiyonunu da duzenleyelim. puan sutunumuzdaki verinin tipine bakalim lazim olacaktir bizlere.<jupyter_code>data1
len(data1)
data1['puan'][0].dtype<jupyter_output><empty_output><jupyter_text>yeni ekleme fonksiyonumuz bu sekilde olucak<jupyter_code>def ekleme():
  x1 = input("İngilizcesini giriniz:")
  x2 = input("Türkçesini giriniz:")
  x3 = input("İngilizce cümlesini giriniz:")
  x4 = input("Türkçesi cümlesini giriniz:")
  x5 = input("Ek bilgi varsa giriniz yoksa - şareti bırakbilirsiniz")
  #x6 bizim puan sutnumuz boylece her yeni satirda puan 0 olarak baslayacaktir
  x6 = 0
  
  global data1
  
  data1 = data1.append({'ingilizce' : x1,
                    'turkce' : x2,
                    "ingilizce_cumle" : x3 ,
                    "turkce_cumle" : x4 ,
                    "ekbilgi" : x5 ,
                    "puan" : x6} , 
                    ignore_index=True)
ekleme()
data1<jupyter_output><empty_output><jupyter_text>denememizi yaptik simdi  Simdi programimiza ekledigimiz puan sutununu aktif hale getirmeye calisalim  Puanlamayi ekleyelim bunu fonksiyon seklinde yapmayi deneyleim ki daha duzenli olsun<jupyter_code>data1["puan"]
def puan_arttir(secim) :
  global data1
  data1["puan"][secim] += 1

def puan_azalt(secim) :
  global data1 
  data1["puan"][secim] -= 1<jupyter_output><empty_output><jupyter_text>Bir onceki notebooktaki olusturmus oldugumuz ana programi tekrar alalim buraya ve degistirdigimiz sutun isimlerini uyarlayalim Programa ekleyelim ve deneyelim<jupyter_code>tahmin_sayisi = int(input("Kac tahminde bulmak isterdiginizi giriniz: "))
mevcut_tahmin = 0

print("************************************************************a")
while tahmin_sayisi > mevcut_tahmin :
  print("--------------------------------------------------------")
  
  #once index_generator calistiriyoruz ki rastgele secilen secim degeri ile ayni degerde olmasin
  #ayrica eger secim degerini daha sonra listeye eklemezisek tum degerleri fonsiyondan alirsak dogru cevabimiz siklarda olmaz
  index_generator()
  secim = random.randint(0,len(data1)-1)
  #eger secim degeri fonksiyon tarafindan zaten alindiysa int olarak yeni bir secim degeri yapmaliyiz yoksa secenekler ayni olur
  
  while secim in index_list:
      secim = random.randint(0,len(data1)-1)
  index_list.append(secim)
  
  #ayrica listeyi karistirmaliyiz ki hep ayni secenekte dogru cevap olmasin
  random.shuffle(index_list)

  
  ingilizce = data1["ingilizce"][secim]
  print("Kelimenin Turkcesi hangi secenektedir:", ingilizce)
  turkcesi = str(data1["turkce"][secim])

  #secenekler
  a = str(data1["turkce"][index_list[0]])
  b = str(data1["turkce"][index_list[1]])
  c = str(data1["turkce"][index_list[2]])
  d = str(data1["turkce"][index_list[3]])

  print("A Secenegi: ",a)
  print("B Secenegi: ",b)
  print("C Secenegi: ",c)
  print("D Secenegi: ",d)

  tahmin = input("Cevabiniz(A/B/C/D): ")
  
  if tahmin == "a":
    tahmin_str = a

  if tahmin == "b":
    tahmin_str = b

  if tahmin == "c":
    tahmin_str = c

  if tahmin == "d":
    tahmin_str = d
  
  if tahmin_str == turkcesi :
    print("Dogru cevap tebrikler")
    puan_arttir(secim= secim)

  else :
    print("Yanlis cevap bi sonraki soruya gecelim")
    puan_azalt(secim= secim)
  mevcut_tahmin+= 1
  print("--------------------------------------------------------")<jupyter_output>Kac tahminde bulmak isterdiginizi giriniz: 2
************************************************************a
--------------------------------------------------------
Kelimenin Turkcesi hangi secenektedir: raw 
A Secenegi:  işlenmemiş 
B Secenegi:  zenginleştirmek/değer-katmak
C Secenegi:  b
D Secenegi:  faz/aşama/evre
Cevabiniz(A/B/C/D): a<jupyter_text>kontrol edelim<jupyter_code>data1<jupyter_output><empty_output><jupyter_text>goruldugu gibi dogru ve yanlis cevapta puanlama degismis  Main fonksiyonuprgramin icin bir tane ana fonksiyon yazalim ki  her seferinde tekrar kodla ugrasmayalim<jupyter_code>def main ():

  tahmin_sayisi = int(input("Kac tahminde bulmak isterdiginizi giriniz: "))
  mevcut_tahmin = 0

  print("************************************************************a")
  while tahmin_sayisi > mevcut_tahmin :
    print("--------------------------------------------------------")
  
  #once index_generator calistiriyoruz ki rastgele secilen secim degeri ile ayni degerde olmasin
  #ayrica eger secim degerini daha sonra listeye eklemezisek tum degerleri fonsiyondan alirsak dogru cevabimiz siklarda olmaz
    index_generator()
    secim = random.randint(0,len(data1)-1)
  #eger secim degeri fonksiyon tarafindan zaten alindiysa int olarak yeni bir secim degeri yapmaliyiz yoksa secenekler ayni olur
  
    while secim in index_list:
        secim = random.randint(0,len(data1)-1)
    index_list.append(secim)
  
  #ayrica listeyi karistirmaliyiz ki hep ayni secenekte dogru cevap olmasin
    random.shuffle(index_list)

  
    ingilizce = data1["ingilizce"][secim]
    print("Kelimenin Turkcesi hangi secenektedir:", ingilizce)
    turkcesi = str(data1["turkce"][secim])

  #secenekler
    a = str(data1["turkce"][index_list[0]])
    b = str(data1["turkce"][index_list[1]])
    c = str(data1["turkce"][index_list[2]])
    d = str(data1["turkce"][index_list[3]])

    print("A Secenegi: ",a)
    print("B Secenegi: ",b)
    print("C Secenegi: ",c)
    print("D Secenegi: ",d)

    tahmin = input("Cevabiniz(A/B/C/D): ")
  
    if tahmin == "a":
      tahmin_str = a

    if tahmin == "b":
      tahmin_str = b

    if tahmin == "c":
      tahmin_str = c

    if tahmin == "d":
      tahmin_str = d
  
    if tahmin_str == turkcesi :
      print("Dogru cevap tebrikler")
      puan_arttir(secim= secim)

    else :
      print("Yanlis cevap bi sonraki soruya gecelim")
      puan_azalt(secim= secim)
    mevcut_tahmin+= 1
    print("--------------------------------------------------------")<jupyter_output><empty_output><jupyter_text>deneyelim<jupyter_code>main()<jupyter_output>Kac tahminde bulmak isterdiginizi giriniz: 1
************************************************************a
--------------------------------------------------------
Kelimenin Turkcesi hangi secenektedir: phase
A Secenegi:  faz/aşama/evre
B Secenegi:  b
C Secenegi:  işlenmemiş 
D Secenegi:  zenginleştirmek/değer-katmak
Cevabiniz(A/B/C/D): a
Dogru cevap tebrikler
--------------------------------------------------------<jupyter_text>goruldugu gibi basit bir main fonksiyonuyla cagirabiliyoruz Simdi calsitigimiz dataframi csv olarak kaydetmeye bakalim<jupyter_code>data1.to_csv("yeni_data.csv", index=False, header=True)<jupyter_output><empty_output><jupyter_text>tekrar csv dosyasini okuyalim<jupyter_code>yeni_data = pd.read_csv ('/content/yeni_data.csv')
yeni_data<jupyter_output><empty_output><jupyter_text>Neler yaptik * Puan sutunu ekleyip puan sistemini getirdik* ekleme fonksiyonumuzu degistirdik* programimizi main adli ana bir fonksiyon olarak tanimladik cagirmayi kolaylastirdik.* calismis oldugumuz DataFrame i islemlerimiz kaybolmamasi icin kaydetmeyi ogrendik.<jupyter_code><jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.14785992217898833, 'fraction_numerical': 0.010249596659390719, 'mean_word_length': 3.853984339014279, 'pattern_counts': {'":': 11, '<': 65, '<?xml version=': 0, '>': 65, 'https://': 3, 'lorem ipsum': 0, 'www.': 1, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '16', 'dir': 'jupyter-structured-clean-dedup', 'id': '442336', 'license': 'MIT', 'n_tokens_mistral': 4320, 'n_tokens_neox': 4144, 'n_words': 857, 'path': 'Step2.ipynb', 'repo_name': 'bozkurtmert0/english-vocabulary', 'size': '10537'}