Python tahmin sayısı bulma

merhaba python da 1-49 arası 6 sayı üretsin kullanıcıdan 6 sayı istesin. girilen 6 tahminin kaçı doğru ise ekrana sayısını belirten hepsi yanlışsa hiç doğru tahmininiz yok yazan programı nasıl oluşturabilirim yardımcı olabilecek var mı?

import random

rand= random.randint(1, 50)
sayac=0
 
while True:
    number+=1
    sayi = int(input("1 ile 50 arasında değer girin , çıkış için 0  a basınız :"))
    if (sayi== 0 ):
        print("Çıkış yapıldı.")
        break
    elif sayi < rand:
        print("Daha Yüksek Bir Sayı Girin.")
        continue
    elif sayi > rand:
        print("Daha Düşük Bir Sayı Girin.")
        continue
    else:
        print("Rastele seçilen sayı {0}!".format(rand))
        print("Tahmin sayınız {0}".format(sayac))

Bunu mesela uyarlarsan isteğine, işini kolaylaştırır gibi geldi.
Kolay gelsin.

Kod alıntıdır:

sayaca ne gerek var bu kodda yani kullanmamışsınız

import random

rand= random.randint(1, 50)
dogru=0
yanlıs=0
while True:
    sayi = int(input("1 ile 50 arasında değer girin , çıkış için 0  a basınız :"))
    if sayi==0:
        break
    if sayi==rand:
        print("Doğru bildin")
        dogru+=1
    else:
        print("yanlış bildin")
        yanlıs+=1
    if yanlıs==6:
        print("oyun bitti")
        print(f"doğru sayınız= {dogru}",f"Yanlış Sayınız= {yanlıs}")
        break
    else:
        continue

@Aysenur1

benzer kodlar internette mevcut demek istedim. bende alıntılama yaptım … araştırmasına yöneltmek yerine direk cevabın formda yazılması hoş olmuyor. kodlama deneme yanılma olmadan maalesef öğrenilmiyor diye düşünüyorum. kolay gelsin.

4 Beğeni

Merhaba,

Bahsi geçen programı yaparken ihtiyacınız olan bazı bilgileri size vereyim. Kısa bir algoritma göstereyim ve işin geri kalan araştırma ve geliştrime kısımlarını kendiniz yapın. Takıldığınız takdirde sorularınıza açığım.

  • Program rastgele sayı seçmek için random modülüne ihtiyaç duyacak.
  • Rastgele sayıları seçmek için bir sayı listesine ihtiyacınız var. Bunun için randint() kullanmanız gerekiyor.
  • Program 6 farklı sayı seçmesi için bir for döngüsü kurmanız lazım. Bu döngü 6 defa çalışacak ve randint() ile oluşturduğunuz liste içerisinden random ile bir sayı seçecek ardından seçtiği sayıyı pc_secilenler değişkeninde oluşturulan bir liste içerisine .append() ile ekleyecek. Döngü her çalıştığında seçtiği sayıyı randint() ile oluşturulan liste içerisinden atacak çünkü aynı sayıyı seçmemesi gerekiyor.
  • Program sayı seçimini yaptıktan sonra kullanıcıdan 6 farklı sayı girmesini isteyeceğimiz bir input() kuracağız.
  • Kuracağımız bu input 6 defa çalışacak bir while döngüsü içerisinde yer almalı. Döngü her seferinde kullanıcıya seçim yapmasını isteyecek ve her seçim sonrası kullanıcının girdiği değeri user_secilenler değişkeninde oluşturulan bir liste içerisine .append() ile ekleyecek.
  • Böylelikle pc_secilenler ve user_secilenler şeklinde 2 farklı seçim listemiz tamamlanmış olacak.
  • dogru_secim ve yanlis_secim adında 2 farklı değişken oluşturacaksınız. Bunların değerleri 0 olacak.
  • Tamamlanan seçim listesinde seçilen elemanları karşılaştıran bir for döngüsü kuracaksınız. Kurulan döngüde user_secimler listesinden bir değer alıp bu değeri pc_secimler içerisinde karşılığı var mı diye kontrol edeceksiniz. Eğer var ise dogru_secim değişkenine puan eklenecek eğer yok ise yanlis_secim değişkenine puan eklenecek.
  • Döngü tamamlandıktan ve sorgulama işlemi bittikten sonra kullanıcıya pc_secimler ve user_secimler de yer alan değerleri yazdıracaksınız. Ardından skorunu yazdıracaksınız ve program tamamlanmış olacak.

Not >> Kullanıcıdan sayı alırken bir kaç estetik dokunuşa ihtiyacınız olacak. Örneğin her sayı istediğinde kaçıncı sayı istediğini yazsın. Bu nasıl olacak derseniz, yorumdan sorduğunuz takdirde cevap vereceğim.

Not >> Kullanıcıdan sayı alırken bir koşul durumu sorgulamanız gerekebilir. Programın daha iyi çalışabilmesi için. Bu koşul sorgusu da şu şekilde olacak. Kullanıcı bir değer girdi mi? Eğer değer girilmiş ise bu değer bir integer değer mi? Eğer integer değer ise sayıyı ekle eğer integer değer değilse ve kullanıcı bir değer girmemiş ise hata mesajı ile kullanıcıyı bilgilendir ve tekrardan bir değer girmesini talep et.

Aşırı Derecede Önemli Not >> Eğitim, öğretim hayatınızda karşılaştığınız problemler ve ihtiyaç duyacağınız bilgileri hazır almaktan kaçının. Ödeviniz mi var? Yardım alın. Sınavda mısınız? Yardım alın. Her ne yapıyorsanız sadece yardım alın. Kendi ödevlerinizi veya sınavlarınızı ya da her neyse, bunları kimseye yaptırmayın. Okuduğunuz okulu sizler bitirin, bizler değil. Bir çok gencin hayalini kurduğu ama ulaşamadığı eğitimleri alıyorken bu imkana sahip çıkın ve değer verin. Sözüm meclisten dışarı tamamen bir tavsiyedir.

Üniversiteli gençler neden işsiz? Bununla ilgili de bir yazı yazacağım yakında.

Yukarıda anlattıklarımı uygulayabildiğiniz kadar uygulayın ardından yazdığınız kodları buraya yorum olarak yapın ve birlikte değerlendirip yardım edelim ama asla hazır almayın ve değerli forum üyeleri sizler de her isteneni hazır vermeyin. Etkileşimli olarak birbirimize yardımcı olmamız kişiye balığı değil balık tutmayı öğretmemiz gerekiyor.

Sevgiler.

6 Beğeni

Dostum eline sağlık çok güzel bir şeye değinmişsin. Kesinlikle sana katılıyorum. Bu arada söylediklerine ufak bir ekleme yapmak istiyorum haddim olmayarak.

Elbette buradan da danışıp fikir almak güzel bir yol ancak öncesinde şunun yapılması çok daha faydalı olacaktır.

  1. Bilgisayarınızda Google Chrome kullanmak. Ama bunun bir nedeni var elbet. Google Translate eklentisini kurarak İngilizceniz yetersiz kalsa da bu eklenti yardımıyla yabancı bir sitedeki açıklamayı kısa zamanda anlayabiliriz.

  2. karşılaştığınız hata mesajını google üzerinde arattığınızda mutlaka ilk sıralarda stackoverflow sitesinde ilgili soruya yanıt verilmiş olabilir. Bunlar incelenmeli.

  3. https://www.tutorialspoint.com/index.htm sitesi yine binlerce konuda eğitim dökümanı sunmakta.

  4. Python’dan örnek vermek gerekirse: Python’un resmi sitesinde bir çok geniş bir eğitim dökümanı var. Yine www.w3schools.com’da da…

Bu liste uzayıp gider. Ancak önemli olan şey neyi, nasıl nereden arayacağımızı bilmek.

1 Beğeni

Uzun vadede zararlı olduğunu düşünüyorum. Programlama öğrenilirken İngilizce de geliştirilmeli. Ki zaten Google translate teknik makaleleri doğru ceviremiyor bence.

Hem fikirim. Elbetteki çeviri birebir değil. İngilizce her koşulda geliştirilmeli bu gerçek. Benim kastım şu: İngilizcem yeterli değil o yüzden o sitelerden bişey anlamıyorum bahanesine sığınanlar için :slight_smile:

1 Beğeni

Amaç bu eklenti ise Brave de bir alternatif.

Ben de bu eklentiyi kelimeleri çevirmek amacıyla kullanıyorum.

1 Beğeni

Evet, Firefox da aynı şekilde.

import random

print((lambda correct: "hiç doğru tahmininiz yok" if correct == 0 else str(correct))((lambda xs, ys: sum([1 for x in xs if x in ys]))([int(input(f"{i}. sayi: ")) for i in range(1, 7)], random.sample(range(1, 50), 6))))
6 Beğeni

@aib lambda nasıl yazılır kitabını bekliyoruz. Başlığı da 3 satırda CAD programı yazmak olabilir :slight_smile:

2 Beğeni

:smile: Okumakta zorlananlar için:

print(
  (
    lambda correct:\
      "hiç doğru tahmininiz yok"\
        if correct == 0 else\
      f"{correct} doğru"
  )
  (
    (
      lambda xs, ys: sum(
        [
          1 for x in xs if x in ys
        ]
      )
    )
    (
      [
        int(
          input(
            f"{i}. sayi: "
          )
        ) for i in range(1, 7)
      ],
       __import__("random").sample(range(1, 50), 6)
    )
  )
)
3 Beğeni

Bu daha da zor :stuck_out_tongue:

2 Beğeni

Hiç yoktan bir, hiyerarşisi var… :smiley: