Otomatik sayı bulma hakkında!

Merhaba;

şöyle bir sistem yapıyorum da

En küçük rakam hangisi ? ( 1 , 5 , 10 )

En büyük rakam hangisi ? ( 60 , 7 , 3 )

Hangi sayı tektir ? ( 5, 3, 5 )

Sorular 3 farklı tarzda random şekilde gelip benim cevaplamam gerekiyor kendimce geliştirdiğim bir sistemin kodları aşağıda.

Örnek kodum böyle;

Kod:
def test_sohbet(t, player, msg):
if player:
# System nickname
if player == “HamdullahTEST”:
# Soru
if “Büyük Rakam” in msg.lower():
# Cevap
???
# Reply
sleep(1.0)
GenelSohbet(player, reply)
log(‘Plugin: Reply %s’ % (reply))

Cevap kısmında nasıl bir yol izlemem gerekiyor
Büyük Rakam yazdığım kısımda sorunun bir parçasını seçecek sorunu tanıyacak zaten bunu diğer sorular içinde yapacağım lakin cevap kısmında tam olarak ne yazacağımı bilemedim yardımcı olabilecek arkadaşlara şimdiden teşekkür ederim. İyi forumlar.

import random
İle library ekle
sayilar=range(0, 100)
ile 0 dan 100 e kadar aralık seç
liste=random.sample(sayilar, 5)
ile seçilen aralıktan 5 rastgele sayı al
liste.sort() ile bunları sıralayabilirsin.

kodlarin yarisi player hakkinda ama aciklamada bununla ilgili bir sey soylememissin. “System nickname” ne demek? “HamdullahTEST” ne yapiyor, if’i kodun ne kadarini kapliyor? (Pseudocode’unda {} veya indentasyon olmadigi icin hangi if’in ne kadar surdugu de anlasilmiyor)

Burada kullanicinin dogru cevap verip vermedigi mi kontrol ediliyor? (msg kullanicinin cevabi mi?)

in ile substring aramak yerine tam cevaba bakilmasi lazim, yoksa cevap “1977” gelse bile "7" in "1977" True olacagi icin dogru sayilacak.

cevap olusturuluyor galiba

if “7” == msg:
cevap = “dogru!”
else:
cevap = “yanlis!”
reply(cevap)

Sorunun nasil bir parcasi?

En büyük rakam hangisi ? ( 60 , 7 , 3 )

mesela kam han mi? Yanlis seceneklerden biri mi? Seceneklerin tamami mi?
Secip ne yapacak?
Hangi soru veya sorun taniniyor? Tanininca ne oluyor? Secmeyle baglantisi nedir?

1 Beğeni

Yardımlarınız için teşekkür ederim.

@aib Sistem Tarafından bana sorular soruluyor ben playerim

msg kısmı gelen soruyu okuyor ve if kısmı gelen sorunun sadece bir kısmını alıyor
Ör;
En küçük rakam hangisi ? ( 1 , 5 , 10 )

En büyük rakam hangisi ? ( 60 , 7 , 3 )

Hangi sayı tektir ? ( 5, 3, 5 )

Bu sorulardan sadece “Büyük rakam” kısmını alarak sorunun en büyük sayıyı sorduğunu anlıyor hepsini yazmama gerek yok bunu küçük sayıyı mı büyük sayıyı mı soruyor onu anlaması için gelen soruyu okumasını ayarladım şimdi benim tam anlamıyla istediğim ben bu soruları okumasını tanımasını ayarladım ve cevap vermesinide ayarladım ama o büyük sayıyı, küçük sayıyı ve tek sayı olan hangisi sorusunun cevaplarını bulması için sistem geliştiremedim @Engin_Kanat Arkadaşımızın dediği gibi bir mantık yürütülebilir ama tam olarak bunu verdiğim kodların içine nasıl import edeceğim.

En büyük rakam hangisi ? ( 60 , 7 , 3 )

Boyle bir soru metninden, sorunun ne oldugu alindiktan sonra, olasi cevaplarin da alinip dogru olaninin belirlenmesini istiyorsun, dogru mudur?

O halde string islemeye devam edilebilir:

  • ilk ('in indexini bul
  • ilk )'in indexini bul
  • aralarini substring olarak al: 60 , 7 , 3 — (str[x:(y-x)])
  • , ile split et: [" 60 ", " 7 ", " 3 "]
  • elemanlari strip et: ["60", "7", "3"]
  • elemanlari inte cevir: [60, 7, 3]

Suphesiz ki regex kullanmani soyleyenler olacaktir. Aldanma.

1 Beğeni

Ayrıca bu şartın hiçbir zaman sağlanamayacağının da farkına varmak lazım.

@aib’in söyledikleri yeterli olsa da kısaca ast.literal_eval kullanılabilir bence. SyntaxError yükseltirse de girişin hatalı olduğunu anlarız.