Kullanıcı yalnız enter'a bastığında aynı soruyu sormaya devam etmek

import random, sqlite3, time, sözler
vt=sqlite3.connect("c:/users/onedrive/masaüstü/dosyalar/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çim=input("""
    kelime bilmek için 1'e
   kelime eklemek için 2'ye
programdan çıkmak için q'ya  basınız """)
    doğru=0
    yanlış=0
    print()
    if seçim=="1":
        while True:
            seçilen=random.choice(list(a.keys()))
            cevap=input(f"{seçilen} karşılığı nedir ?  ")
            if cevap=="q":#ÇIKIŞ
                print(a[seçilen])
                print()
                toplam=(int(doğru)+int(yanlış))
                
                try:
                    print(f"Doğru = {doğru}, Yanlış = {yanlış}", "\n", "Başarı oranı = ", (doğru/toplam)*100)                    
                except ZeroDivisionError:
                    print('Doğru = 0, Yanlış = 0', '\n', 'Başarı oranı = 0')
                    print("\n"*29)
                break
            elif cevap=="1":#ANLAMI
                print("Anlamı ==> ", a[seçilen])
                print()
                
            elif cevap in a[seçilen].split(", "):#DOĞRUYSA
                print("DOĞRU")
                doğru+=1
                print()
                               
            elif cevap != a[seçilen]:#YANLIŞSA
                if cevap=='':
                    print()
                    continue
                else:
                    print("YANLIŞ, DOĞRUSU ŞU OLACAKTI ==> ",a[seçilen])
                    yanlış+=1
                    print()
                    
    elif seçim=="q":
        söz=random.choice(sözler.sözler)
        print(söz)
        time.sleep(len(söz.split())*(0.7))
        break
    elif seçim=="2":
        while True:
            vt=sqlite3.connect("c:/users/faruk/onedrive/masaüstü/dosyalar/sözlük.sqlite")
            im=vt.cursor()
            im.execute("""CREATE TABLE IF NOT EXISTS sözlük (ingilizce,türkçe)""")
            eklenen=input("Yeni Kelime ==> ")
            if eklenen=="q":
                print("\n"*5)
                break
            elif eklenen in list(a.keys()):
                print("BU KELİME ZATEN VAR")
                time.sleep(1)
                print()
            else:
                anlam=input("Anlamı ==> ")
                print()
                im.execute("INSERT INTO sözlük VALUES ('{}','{}')".format(eklenen,anlam))
                vt.commit()
                vt.close()
    

İngilizce (ing) kelimelerin Türkçelerini (tr) öğrenmek için bir program yaptım. Bu program veritabından ing kelimeleri çekiyor ve kullanıcı da türkçelerini bilmeye çalışıyor. Kelimeler random modülüyle seçiliyor. Sıkıntım şurda eğer kullanıcı hiçbir cevap vermeyip sadece enter’a basarsa programın enterla geçilen kelimeyi bir daha sormasını istiyorum yani “home” kelimesi geldi ve kullanıcı enter’a bastı bir sonraki kelimeye geçmek yerine yine “home” kelimesinin gelmesini istiyorum lakin bir çözüm bulamadım yardımcı olursanız çok sevinirim teşekkürler.

Kullanici cevap vermeyip sadece enter’a basarsa cevap degiskeninin degeri ne oluyor?

Fonksiyon kullanarak, cevap = “” olduğu durumlarda aynı parametrelerle aynı kelimeyi sormaya devam edebilirsiniz.

Kodlarınıza benzer bir örnek,

from random import choice

kelimeler = ["home", "phone", "road"]
cevaplar = ["ev", "telefon", "yol"]
dogru, yanlis = 0, 0

def fonksiyon(secilen, beklenen_cevap):
    alinan_cevap = input(f"{secilen} karşılığı nedir?\n>>> ")
    if alinan_cevap == "q":
        print(beklenen_cevap)
        return -1

    elif alinan_cevap == "":
        return fonksiyon(secilen, beklenen_cevap)

    elif alinan_cevap == beklenen_cevap:
        print("DOĞRU")
        return 1

    elif alinan_cevap != beklenen_cevap:
        print(f"YANLIŞ, DOĞRUSU ŞU OLACAKTI ==> {beklenen_cevap}")
        return 0
    

    
while True:
    secim = input("Kelime bilmek için 1'e,\nProgramdan çıkmak için q'ya basınız.")
    
    if secim == "1":
        while True:
            secilen = choice(kelimeler)
            beklenen_cevap = cevaplar[kelimeler.index(secilen)]
            durum = fonksiyon(secilen, beklenen_cevap)

            if durum == -1:
                toplam = dogru + yanlis
                if toplam != 0:
                    print(f"Doğru = {dogru}, Yanlış = {yanlis}", "\n", "Başarı oranı = ", (dogru/toplam)*100)
                else:
                    print('Doğru = 0, Yanlış = 0', '\n', 'Başarı oranı = 0')
                    print("\n"*29)
                break

            elif durum == 1:
                dogru += 1

            elif durum == 0:
                yanlis += 1

    elif secim == "q":
        quit()

1 Beğeni

Cevap şu oluyo = “”
Yani hiçbir şey. Type(cevap) yazdığımda string olduğunu gösteriyo

secilen'in loop’un icinde degistigini simdi gordum. Disari alip sadece gerektiginde (dogru/yanlis cevap oldugunda) degistirmen lazim.

Veya iceri ikinci bir loop yazip dogru/yanlis durumunda break, gerisinde continue edebilirsin.