Bu kod daha kolay bir şekilde nasıl yazılabilirdi?

Merhabalar. Ben bilgisayarla bom oynamak için bir kod yazdım, şu an nasıl optimize edebileceğimi düşünüyorum ancak, misal for ile, herhangi bir şekilde daha az kodla aynı işi yapabilir miydim bulamıyorum. Sizce bu kod daha az satır ile nasıl yazılırdı?

print("BOM JENERATÖRÜ! Bu basit bot ile sabaha kadar bom oynayabilirsiniz!")
print("Açılışı ben yapıyorum: 1")
botSayi = 2
while True:
    insanInput = input("Bom ya da sayı girişi: ")
    if botSayi % 5 == 0 and insanInput == "bom":
        botSayi += 1
        if botSayi % 5 == 0:
            print ("Bom!")
        else:
            print(botSayi)
        botSayi += 1
        continue
    elif botSayi % 5 == 0 and insanInput != "bom":
        print("patladın!")
        break
    elif botSayi % 5 != 0 and str(botSayi) == insanInput:
        botSayi += 1
        if botSayi % 5 == 0:
            print ("Bom!")
        else:
            print(botSayi)
        botSayi += 1
        continue
    else:
        print("Yanlış sayı girdin!")
        break

Normalde bunu gorur gormez ne icin optimize edilecegini sormak lazim:

Ve burada cevaplanmis, tesekkurler.

Buradaki kastin dogrudan satir sayisi olmadigini varsayiyorum, yoksa soyle bir sey mumkun:

print("BOM JENERATÖRÜ! Bu basit bot ile sabaha kadar bom oynayabilirsiniz!"); print("Açılışı ben yapıyorum: 1"); botSayi = 2
while True:
    insanInput = input("Bom ya da sayı girişi: ")
    if botSayi % 5 == 0 and insanInput == "bom":
        botSayi += 1
        if botSayi % 5 == 0: print ("Bom!")
        else: print(botSayi)
        botSayi += 1; continue
    elif botSayi % 5 == 0 and insanInput != "bom": print("patladın!"); break
    elif botSayi % 5 != 0 and str(botSayi) == insanInput:
        botSayi += 1
        if botSayi % 5 == 0: print ("Bom!")
        else: print(botSayi)
        botSayi += 1; continue
    else:
        print("Yanlış sayı girdin!"); break

Kodun yapisi biraz degistirilerek tek satira indirilmesi de saglanabilir.

Basliktaki soruyu da goz onunde bulundurursak, kodun daha “guzel” ve okunakli bir versiyonunu aradigimizi dusunuyorum.

Oncelikle:

Asagidaki if her zaman true.

Burada kontrol edilen bir tane ilk sart var, botSayi % 5 == 0. Bu yuzden bunu ek bir if/else’e indirmek okunakliligi arttirir:

if % 5 == 0:
  if == bom:
  elif != bom:
else:
  if insanInput ==:
  else:

Buradan basla istersen, sonra tekrar bakalim.

4 Beğeni

@froinchi Pardon oyunun mantığını anlatırmısınız kısaca ben anlayamadım nasıl bir sayı girmem gerekiyor ne girersem gireyim yanlış sayı girdiniz diyip program dışına atılıyorum.

1 Beğeni

Hem öyle hem de daha az kodla aynı işi yapan bir program üstüne çalışmak istedim, bilgisayarda daha hızlı çalışan, hıza optimize şeklini kastetmeye çalışmıştım. Kodlara bakıyorum. Çok teşekkür ederim.

Bom oyunu şöyle çalışır: bir kişi saymaya başlar, diyelim burada botumuz 1 dedi. Başka bir kişi 2 diyor, karşılıklı sayma başlanıyor ve 5 ve 5’in katları söylenmeyerek yerine “bom” kelimesi söyleniyor. 5’in katlarında bom denilmezse oyundan çıkılıyor. Karşılıklı şekilde hızlıca, yanmadan gidilmeye çalışılıyor.

Bu kodun daha hizli calismasi mumkun degil.

Neden bunu yapmaya calisiyor herkes?

1 Beğeni