Taş-Kağıt-Makas kodum doğru mu?

Dostlar merhaba,

import random

print("Taş kağıt makas oyununa hoş geldiniz.")

menu = input("Başlamak için 'başla' veya 'çık' yazın.")

def oyun():

    pcsecimleri = ["taş", "kağıt", "makas"]

    print("Bilgisayar ile oynayacaksınız.")

    kullanicisecimi = input("Seçin: ").lower()

    pcsecimsonuc = random.choice(pcsecimleri)

    if kullanicisecimi == "taş":

        if pcsecimsonuc == "taş":

            print("Bilgisayar taş seçti. Berabere")

        if pcsecimsonuc == "kağıt":

            print("Bilgisayar kağıt seçti. Kaybettiniz.")

        if pcsecimsonuc == "makas":

            print("Bilgisayar makas seçti. Kazandınız.")

    if kullanicisecimi == "kağıt":

        if pcsecimsonuc == "taş":

            print("Bilgisayar taş seçti. Kazandınız.")

        if pcsecimsonuc == "kağıt":

            print("Bilgisayar kağıt seçti. Berabere.")

        if pcsecimsonuc == "makas":

            print("Bilgisayar makas seçti. Kaybettiniz.")

    if kullanicisecimi == "makas":

        if pcsecimsonuc == "taş":

            print("Bilgisayar taş seçti. Kaybettiniz.")

        if pcsecimsonuc == "kağıt":

            print("Bilgisayar kağıt seçti. Kazandınız.")

        if pcsecimsonuc == "makas":

            print("Bilgisayar makas seçti. Berabere")

if menu == "başla":

    oyun()

if menu == "çık":

    exit()

Şöyle bir kod yaptım. Ben denedim ve gayet doğru şekilde çalışıyor. Ben yanlış bir yer bulamadım. Size de sorayım dedim.

main fonksiyonu eksik, kod modul seviyesinde yazilmis.

‘basla’ veya 'cik’tan baska bir sey yazinca da cikiyor.

Bir sonraki olasi adim: Iki secimi alip hangisinin kazandigini donduren fonksiyon yazmak.

Gerektiğinden fazla koşul cümlesi yazılmış. Şu şekilde fazlalık satırlardan kurtulabilirsiniz diye umut ediyorum:

import random

liste = ["kağıt", "makas", "taş"]

def oyun():
    def computer():
        return random.choice(liste)

    def oyuncu():
        while True:
            secim = input("Seçin: ").lower()
            if secim in liste:
                return secim
            else:
                print(f"Lütfen şu liste içerisinde bulunan herhangi bir elemanı seçiniz: {liste}")

    print("Bilgisayar ile oynayacaksınız.")
    computer_secimi = computer()
    oyuncu_secimi = oyuncu()
    print(f"Bilgisayar {computer_secimi}'ı seçti.")
    if oyuncu_secimi == computer_secimi:
        print(f"İkiniz de {oyuncu_secimi} seçtiniz, BERABERE!")
    elif oyuncu_secimi == "kağıt" and computer_secimi == "taş":
        print(f"{oyuncu_secimi}, {computer_secimi}'ı yener, KAZANDIN!")
    elif oyuncu_secimi == "taş" and computer_secimi == "kağıt":
        print(f"{computer_secimi}, {oyuncu_secimi}'ı yener, KAYBETTİN!")
    elif liste.index(oyuncu_secimi) > liste.index(computer_secimi):
        print(f"{oyuncu_secimi}, {computer_secimi}'ı yener, KAZANDIN!")
    elif liste.index(computer_secimi) > liste.index(oyuncu_secimi):
        print(f"{computer_secimi}, {oyuncu_secimi}'ı yener, KAYBETTİN!")

while True:
    oyun()

1 Beğeni

Teşekkürler. Benim yaptığım kod doğru değil mi?

Evet doğru, fakat @aib de belirttiği gibi “başla” veya "çık"tan farklı bir şey yazınca da program duruyor, çünkü herhangi bir döngü oluşturmamışsınız. Onu da şu şekilde düzeltebilirsiniz:

def menu():

    while True:
        menu = input("Başlamak için 'başla' veya 'çık' yazın.")
        if menu == "başla":
            oyun()
        elif menu == "çık":
            exit()
        else:
            print("Geçersiz komut.")

menu()

Teşekkür ederim. İyi akşamlar.

1 Beğeni