Python projemdeki hatalar nelerdir?

Kod satırına seçenek olarak 2’yi seçtiğimde neden break komutu çalışıp döngüyü bitirmiyor veya exit() komutunu yazdığımda da aynı sorun oluyor yardımcı olabilecek var mı *

anaMenu = True
puan = 0
while True:
if anaMenu:
print(“Bilgi Yarışması Menu\n\n1-Oyunu Başlat\n2-Oyunu Kapat”)#Oyun Hakkında Kısmını Ekle

    anaMenu = False

    secim = input("OYUN BAŞLASIN MI :")
    

if secim == 1:
    print("Sorular Geliyor...")
    continue


elif secim == 2:
    print("Programdan Çıkılıyor...")
    break
    
           
print("""
      Türkiye'nin başkenti neresidir ?
      A-Tokat          B-İstanbul
           
      C-Ankara         D-Sakarya
           
      """)
           
cevap = input("Cevabınız:")
     
if cevap == "C" or "c":
    puan += 10
    print("Tebrikler Doğru Cevap Puanınız {} oldu.".format(puan))
    continue

else:
  print("Yanlış Cevap Oyun Bitti Puanınız {}.")

Çünkü input fonksiyonu string değeri döner. Siz kontrolü

secim == 2 olarak yapmışsınız, bu da şu anlama geliyor. "2" == 2 yani False.

Ama kontrolü şu şekilde yaparsanız sorunuzuz sanırım çözülür.

secim == "2"

3 Beğeni

Eyvallah çok yardımcı oldun.

1 Beğeni

Bir de burası var, şuraya bakınız: Python'da and ve or sıkıntısı - DrShahinstein tarafından #5

and için anlatılmış ama or için de geçerlidir.

1 Beğeni

if cevap == “C” or cevap == “c”:

şeklinde yazınca düzeldi.

doğrudur, isterseniz cevap.lower() == "c" de olur ama sizinki daha okunaklı gibi

anaMenu = True
puan = 0

if anaMenu:
print(“Bilgi Yarışması Menu\n\n1-Oyunu Başlat\n2-Oyunu Kapat”)#Oyun Hakkında Kısmını Ekle

anaMenu = False
secim = input("OYUN BAŞLASIN MI :")

if secim == “1”:
print("\n 1.SORU")
print("""
Türkiye’nin başkenti neresidir ?
A-Tokat B-İstanbul

          C-Ankara         D-Sakarya
               
          """)

elif secim == “2”:
print(“Programdan Çıkılıyor…”)
exit()

else:
print(“Hatalı Seçenek”)
anaMenu = True

cevap = input(“Cevabınız:”)

if cevap == “C” or cevap==“c”:
puan += 10
print(“Tebrikler Doğru Cevap Puanınız {} oldu.”.format(puan))

else:
print(“Yanlış Cevap Oyun Bitti Puanınız {}.”.format(puan))

burada harici bir tuşa bastığımda ana menüye göndermesi için ne yapmalıyım anaMenu = True yazdığımda çalıştırınca hata alıyorum.

Bu kodların bir while True döngüsünde olduğunu varsayarsak, else bloğunun sonuna yerleştireceğiniz bir break ile içinde bulunduğunuz döngüden çıkabilirsiniz.

while True: ekledim ve anaMenu =True yerine continue yazdım soruyu tekrar soruyor ama seçenekler tekrar çıkmıyor.

Break’i veya continue’yu ne biçimde ve nereye koyduğunuz önemli. Kodlarınızı ` karakterleri arasına yazarsanız anlaşılması daha kolay olur. Aşağıya hangi durumda döngüden çıkıp, hangi durumda tekrar edeceğini göstermek adına ufak bir örnek bıraktım.

print('--Bilgi Yarismasi--')

print('Yarisma baslasin mi? (E/H)')
secim = input('>>>') # Burada bizden bir yanıt bekliyor. 'E' girersek while döngüsüne girecek,
                     # 'H' girerkek doğrudan else bloğuna atlayıp programı sonlandıracak.
if secim == 'E' or secim == 'e':
    while True: # Bu bloktan herhangi bir biçimde çıkana kadar:
        print('1.) 2 Kaçtır?')
        print('a.) 2 \nb.) 5')
        cevap = input('>>>')
        if cevap == 'A' or cevap == 'a': # Cevap doğru, döngüyü baştan çalıştırır.
            print('Doğru bildiniz.')
            continue
        elif cevap == 'B' or cevap == 'b': # Cevap yanlış, döngüyü baştan çalıştırır.
            print('Yanlis cevap!')
            continue
        else:
            print('Gecersiz secenek!') # Cevap geçersiz, döngüyü sonlandırır.
            break
else: # secim değişkeninin 'E' veya 'e' olmaması durumu
    print('Hoscakalin...')
    exit()

Çıktı:

--Bilgi Yarismasi--
Yarisma baslasin mi? (E/H)
>>>e
1.) 2 Kaçtır?
a.) 2 
b.) 5
>>>x
Gecersiz secenek!

Process finished with exit code 0
1 Beğeni

yanlız hayır seçtiğin zaman hata veriyor ?

Hata vermiyor, “hayır” seçme durumu için özel bir koşul oluşturmayıp else bloğuna dahil ettiğim için, ‘E’ olmayan her şey gibi davranıyor. Siz, bir elif bloğu daha oluşturup onun için bir koşul oluşturabilirsiniz.

1 Beğeni

Çok teşekkür ederim =)

1 Beğeni