Program yanlış input'a rağmen yine de çalışıyor

import random
import sqlite3

while True:
seçim=input("""
giriş için 1’e
kelime eklemek için 2’ye
çıkmak için q’ya basın “”")
if seçim==“1”:
vt=sqlite3.connect(“c:/users/pc/onedrive/masaüstü/sözlük.sqlite”)
im=vt.cursor()
im.execute(""“select * from sözlük”"")
veriler=im.fetchall()
a={i[0]:i[1] for i in veriler}
while True:
seçilen=random.choice(list(a.keys()))
cevap=input(f"{seçilen} karşılığı nedir ? ")
if cevap in a[seçilen]:
print(“DOĞRU”)
print()
elif cevap==“q”:
break
else:
print("YANLIŞ, DOĞRUSU ŞU OLACAKTI ==> ",a[seçilen])
print()
elif seçim==“q”:
break
elif seçim==“2”:
while True:
ekle=input(“kelime “)
if ekle==“q”:
break
else:
tc=input(“anlamı “)
vt=sqlite3.connect(“c:/users/pc/onedrive/masaüstü/sözlük.sqlite”)
im=vt.cursor()
im.execute(””“CREATE TABLE IF NOT EXISTS sözlük (ingilizce,türkçe)”””)
im.execute(“INSERT INTO sözlük VALUES (’{}’,’{}’)”.format(ekle,tc))
vt.commit()
vt.close()

NOT= program rastegele bir ingilizce kelime gönderiyor bende bunun türkçesini yazıp enter a basıyorum doğruysa başka kelime gönderiyor yanlışsa doğrusunu yazıp başka kelime gönderiyor, fakat bazen hiçbir şey yazmayıp enter’a basıyorum ve doğru kabul ediyor ama ben sadece enter a basıyorum “if cevap in a[seçilen]” (“a” benim tanımladığım sözlük) dememin sebebi ingilizce kelimelerin türkçe anlamlarını liste içine yazdım çünkü bazı kelimelerin 1 den fazla anlamı oluyor ve bazen mesela program “book” kelimesini gönderiyor doğru cevap “kitap” lakin “kitap” sözcüğü içindeki bir harfi yazınca da doğru kabul ediyor. şimdiden yardımınız için teşekkür ederim.

Eğer a[seçilen] bize str tipinde bir şey döndürüyorsa, bu dediğinizin olması normal.

-Mesela (“k” in “kitap”) bize True değerini döndürecektir. Çünkü “k” harfi “kitap” kelimesi içerisinde yer alıyor.

-Aynı şekilde hiçbir şey yazmayıp 'Enter’a bastığınızda da yine ("" in “kitap”) = True olacaktır.

-Sorunu şu şekilde çözelim.
-Normalde şöyle bir kod ile şöyle bir çıktı alıyoruz.

a = {"size": "boy, büyüklük"}
cevap = "b"
cevap in a["size"]
# Çıktı: True

-Şimdi koşul cümlemizi biraz değiştirelim.

a = {"size": "boy, büyüklük"}
cevap = "b"
cevap in (a["size"]).split(', ')
Çıktı: False

(a["size"]).split(', ') = ['boy', 'büyüklük'] şeklinde bir liste döndürecektir ve eğer cevap bunlardan herhangi birine ‘tam’ olarak eşit değilse, sonuç False olacaktır. Çünkü bu sefer kelime içinde harf aramak yerine, liste içinde ‘kelime’ arıyoruz.

-Umarım bu sorununuzu çözer. İyi çalışmalar.

öncelikle teşekkür ederim. Bende 300 key’lik bir sözlük var bu sözlüğü programın içine koyup programı başlattığımda bir sorun ile karşılaşmıyorum ama sözlüğü veri tabanından çektiğimde yukarıda bahsettiğim sorunları yaşıyorum sizce neden olabilir bir fikriniz var mı ?

Veritabanı noktasında herhangi bir bilgim/tecrübem yok malesef.

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

1 Beğeni

Merhaba.
Kodunuzu buraya göre düzenleyip tekrar atarmısınız ?
Kodu test etmek için girintilemenin düzgün olması gerekiyor.

import random
a={
   'january': ['ocak'],
   'february': ['şubat'],
   "interview":["röportaj"],
   "event":["olay"],
   "matter":["önemli olmak"],
   "irrefutable":["reddedilemez"],
   "necessary":["gerekli"],
   'march': ['mart'],
   'april': ['nisan'],
   'may': ['mayıs'],
   'june': ['haziran'],
   'july': ['temmuz'],
   'august': ['ağustos'],
   'september': ['eylül'],
   'october': ['ekim'],
   'november': ['kasım'],
   'december': ['aralık'],
   'colleague': ['meslektaş'],
   'occupation': ['meslek'],
   'nationality': ["milliyet", "uyruk"],
   "borrow":["ödünç almak"],
   'stress': ['vurgu'],
   'dot': ['nokta'],
   'mankind': ['insanlık'],
   'poet': ['şair'],
   'traditional': ['geleneksel'],
   'grass': ['çimen'],
   'revision':['gözden geçirmek'],
   'syllable':[ 'hece'],
   'advice':[ 'tavsiye'],
   'count':['saymak'],
   'voluntary':['gönüllü'],
   'distracting':['dikkat dağıtıcı'],
   'chart':["tablo", "grafik", "çizelge"],
   'adjective':['sıfat'],
   'equal':['eşit'],
   'parrot':['papağan'],
   'floor':["kat", "zemin"],
   'carpet':['halı'],
   'spring':["bahar", "ilkbahar"],
   'river':['nehir'],
   'lizard':['kertenkele'],
   'south':['güney'],
   'west': ['batı'],
   'east':[ 'doğu'],
   'north':['kuzey'],
   'pole':[ 'kutup'],
   'seal':[ 'fok balığı'],
   'fog':[ 'sis'],
   'windy':[ 'rüzgarlı'],
   'squirrel':[ 'sincap'],
   'thunder':[ 'gök gürültüsü'],
   'lightning':[ 'yıldırım'],
   'storm':[ 'fırtına'],
   'town':[ 'şehir'],
   'woods':[ 'orman'],
   'hood':[ 'başlık', "kapüşon"],
   'granny':[ 'büyük anne'],
   'yummy':[ 'lezzetli'],
   'met': ['tanışmak'],
   'arrive': ['varmak'],
   'knock':[ 'vurmak'],
   'shout':[ 'bağırmak'],
   'scream': ['çığlık'],
   'wood':[ 'odun'],
   'someone':[ 'biri', "birisi"],
   'trouble':[ 'sorun'],
   'quick': ['çabuk'],
   'soon':[ 'yakında'],
   'inside':[ 'içeride'],
   'wide':[ 'geniş'],
   'tummy':[ 'karın'],
   'description':[ 'tanım'],
   'possessive': ["iyelik", 'aitlik'],
   'bring':[ 'getirmek'],
   'quickly': ["hızlıca", "çabucak"],
   'often':[ 'sık sık'],
   'always':[ 'daima'],
   'never':[ 'asla'],
   'usually':[ 'genellikle'],
   'sometimes':[ 'bazen'],
   'rarely':[ 'nadiren'],
   'seldom':[ 'nadiren'],
   'annually':[ 'yılda bir kez'],
   'wave':[ 'dalga'],
   'cupboard': ['dolap'],
   'nest':[ 'yuva'],
   'husband':[ 'koca'],
   'near':[ 'yakın'],
   'grandchildren':[ 'torunlar'],
   'changeable':[ 'değişken'],
   'explain':[ 'açıklamak'],
   'compare': ['karşılaştırmak'],
   'enough': ['yeterli'],
   'formal': ['resmi'],
   'informal':[ 'resmi olmayan'],
   'forget':[ 'unutmak'],
   'find':[ 'bulmak'],
   'support': ['destek'],
   'noun':[ 'isim'],
   'countable': ['sayılabilen'],
   'uncountable':[ 'sayılamayan'],
   'singular': ['tekil'],
   'aegean': ['ege '],
   'electrician':[ 'elektrikçi'],
   'vowel':[ 'sesli harf'],
   'consonant':[ 'sessiz harf'],
   'continent':[ 'kıta'],
   'bee':[ 'arı'],
   'insect': ['böcek'],
   'vegetable':[ 'sebze'],
   'hammer':[ 'çekiç'],
   'tool':[ 'araç', "gereç"],
   'sentence':[ 'cümle'],
   'tulip': ['lale'],
   'union': ['birlik'],
   'planet': ['gezegen'],
   'flower': ['çiçek'],
   'screwdriver':[ 'tornavida'],
   'judge':[ 'hakim', "yargıç"],
   'composer': ['besteci'],
   'cockroach':[ 'hamam böceği'],
   'saxophone':[ 'saksofon'],
   'plural': ['çoğul'],
   'ocean': ['okyanus'],
   "sea":["deniz"],
   'journalist':[ 'gazeteci'],
   'contraction':[ 'kısaltma'],
   'gardener':[ 'bahçıvan'],
   'dirty': ['kirli'],
   'cheap': ['ucuz'],
   'poor': ['fakir'],
   'rich':[ 'zengin'],
   'sour': ['ekşi'],
   'wet': ['ıslak'],
   'dry':[ 'kuru'],
   'below':[ 'aşağıda'],
   'square':[ 'meydan', "kare"],
   'vinegar':[ 'sirke'],
   'round':[ 'yuvarlak'],
   'feather':[ 'tüy'],
   'heavy': ['ağır'],
   'slow': ['yavaş'],
   'fast': ['hızlı'],
   'weather': ['hava durumu'],
   'bulb':[ 'ampul'],
   'bright':[ 'parlak', "aydınlık"],
   'armchair':[ 'koltuk'],
   'stair':[ 'merdiven'],
   'upstair': ['yukarıda'],
   'downstair': ['aşağıda'],
   'outside':[ 'dışarıda'],
   'downtown': ['şehir merkezi'],
   'shelf':[ 'raf'],
   'preposition':[ 'edat'],
   'pronoun':[ 'zamir'],
   'under':[ 'altında'],
   'above': ['üstünde'],
   'behind': ['arkasında'],
   'in front of ':[ 'önünde'],
   'roof': ['çatı'],
   'drawer': ['çekmece'],
   'clever':[ 'zeki'],
   'cage':[ 'kafes'],
   'church':[ 'kilise'],
   'avenue': ["cadde", "bulvar", "meydan"],
   'tail':[ 'kuyruk'],
   'relation': ['ilişki'],
   'son':[ 'oğul'],
   'daughter': ["kız çocuk", "kız evlat"],
   'several': ['birçok'],
   'domestic':[ 'yerel'],
   'slanting eye':[ 'çekik göz'],
   'bracelet': ['bilezik'],
   'pullover':[ 'kazak'],
   'knit': ['örgü örmek'],
   'belong':[ 'aitlik'],
   'thin':[ 'zayıf'],
   'accountant':[ 'muhasebeci'],
   'customer': ['müşteri'],
   'waiter': ['erkek garson'],
   'waitress': ['kadın garson'],
   'curly': ['kıvırcık'],
   'straight': ['düz'],
   'suitable': ['uygun'],
   'bill':[ 'fatura', "hesap"],
   'pray ': ['dua etmek'],
   'bat': ['yarasa'],
   'wing':[ 'kanat'],
   'scarf': ['fular', "atkı", "eşarp"],
   'take away': ['paket yapmak'],
   'habit':[ 'alışkanlık'],
   'topic':[ 'konu', "başlık", "tema"],
   'season':[ 'mevsim', "sezon"],
   'feature': ['özellik'],
   'algebra': ['cebir'],
   'batch': ['grup'],
   'undergraduate': ['lisans'],
   'ınstructor':[ 'eğitmen'],
   'coefficient':[ 'katsayı'],
   'rectangle':[ 'dikdörtgen'],
   'angle': ['açı'],
   'row': ['satır'],
   'column': ['sütun'],
   'component':[ 'bileşen'],
   'equation':[ 'eşitlik', "denklem"],
   'satisfy': ['karşılamak', "tatmin etmek"],
   'vertical':[ 'dikey'],
   'horizontal':[ 'yatay'],
   'suppose': ['var saymak', "farz etmek"],
   'case':[ 'durum'],
   'dimenson':[ 'boyut'],
   'yet': ['henüz'],
   'solution': ['çözüm'],
   'probably':[ 'muhtemelen', "galiba", "sanırım"],
   'determine': ['belirlemek'],
   'each': ['her biri'],
   'exactly': ['kesinlikle'],
   'queue':[ 'sıra', "kuyruk"],
   'surface':[ 'yüzey'],
   'lake': ['göl'],
   'conjunction': ['bağlaç'],
   'allow': ['izin vermek'],
   'article':[ 'makale'],
   'content':[ 'içerik'],
   'particular':[ 'özgü'],
   'visualize': ['hayal etmek', "gözde canlandırmak"],
   'guarantee':[ 'garanti'],
   'independent':["bağımsız", "özgür", "hür"],
   'contribute':[ 'katkıda bulunmak'],
   'sort':[ 'çeşit', "tür"],
   'thought': ['düşünce'],
   'central':[ 'merkezi'],
   'hesitate': ['tereddüt etmek', "duraksamak", "çekinmek"],
   'plane':[ 'düzlem', "uçak"],
   'eventually':[ 'neticede'],
   'fail': ['hata'],
   'source': ['kaynak'],
   'addict':[ 'tiryaki', "bağımlı"],
   'allright':[ 'tamam'],
   'salulation':['selamlama'],
   "fork":["çatal"],
   "pork":["domuz"],
   "worker":["işçi", "çalışan"],
   "slave":["köle"],
   "trekking":["yürüyüş"],
   "meal":["yemek"],
   "cook":["pişirmek"],
   "ownership":["sahiplik"],
   "even":["hatta"],
   "label":["etiket"],
   "dairy product":["süt ürünü"],
   "dish":["yemek"],
   "plate":["tabak"],
   "previos":["önceki"],
   "frequency":["frekans", "sıklık"],
   "percentage":["yüzde"],
   "almost":["hemen hemen"],
    }
while True:
    seçilen=random.choice(list(a.keys()))
    cvp=input(f"{seçilen} TÜRKÇESİ NEDİR ==> ")
    if cvp in a[seçilen]:
        print("DOĞRU")
        print()
    elif cvp=="q":
        break
    else:
        print("YANLIŞ DOĞRUSU ŞU OLACAKTI ==> ", a[seçilen])
        print()

Ben hata almıyorum kodunuz takır takır çalışıyor :thinking:

sözlüğü, oluşturduğum bir veri tabanından çekince mesela “book” kelimesi geliyor “kitap” yazmak yerine “k” yazıyorum doğru kabul ediyor ama çözdüm sorunumu teşekkür ederim vakit ayırdığın için.

1 Beğeni

Olusturdugun bir veritabanindan cekilen sozlugu gormemiz lazim bununla ilgili yardim edebilmek icin.

Sorun halloldu ilginiz için teşekkür ederim

Sorun onemli degil, sorun cozebilme daha onemli. Bir dahaki sefer icin soyledim.

6 Beğeni