ayalkin
Hectopat
- Katılım
- 6 Mayıs 2020
- Mesajlar
- 171
- Çözümler
- 1
Merhabalar üstadlar. Bazı sebeplerden dolayı küçük bir sesli komut programı yazmam gerekti. Programın genel iskeletini oluştururken bazı sorunlar yaşıyorum. Kodun işleyişini biraz açıklayayım. Normalde bu programları cümle bazlı kodluyorlar. Ben onun yerine kelime bazlı kodluyorum. Kullanıcı bir cümle söylüyor. Python'da bu cümleyi split metodu ile kelimelere ayırıyorum. Daha sonra bu kelimeleri bazı anahtar kelimeler ile karşılaştırıyorum. Hangi kelime ile uyuşursa gerekli işlemi yerine getiriyor. Örneğin 'Kapat'. Kullanıcı bu komutu söylerse program kendini kapatıyor.
Olayın asıl cilveli kısmı şu. Bazen tek bir anahtar kelime bir komutu tanımlamak için yeterli olamıyor maalesef. Örneğin 'Bilgisayarı kapat' 'kapat' kelimesi ile bilgisayar kendini mi kapatacak yoksa programı mı? Bende bu sorunun üstesinden gelebilmek adına.
Uzun lafın kısası programdan çıktı olarak 'Bilgisayarı kapatıyorum' yazısını alamıyorum. Kafa karışıklığı olmaması için kodun sadece belli bir bölümünü buraya atıyorum gerekli olan değişkenlere ben örnek olması açısından değer atadım. Kodun içerisine de açıklamalar bıraktım. Kod direkt kopyala yapıştır yaparak çalıştırılabilir durumda.
Anlatamadığım veya yanlış aktardığım bir yer varsa kusura bakmayın. Şimdiden hepinize teşekkürler.
Olayın asıl cilveli kısmı şu. Bazen tek bir anahtar kelime bir komutu tanımlamak için yeterli olamıyor maalesef. Örneğin 'Bilgisayarı kapat' 'kapat' kelimesi ile bilgisayar kendini mi kapatacak yoksa programı mı? Bende bu sorunun üstesinden gelebilmek adına.
komutBul
fonksiyonun içeriğini bu soruna göre hazırlamaya çalıştım olmadı. Kendi kendime paradoksa girdim gene olmadı. Böyle devam ederse birazdan kafamı duvarlara sürteceğim. Uzun lafın kısası programdan çıktı olarak 'Bilgisayarı kapatıyorum' yazısını alamıyorum. Kafa karışıklığı olmaması için kodun sadece belli bir bölümünü buraya atıyorum gerekli olan değişkenlere ben örnek olması açısından değer atadım. Kodun içerisine de açıklamalar bıraktım. Kod direkt kopyala yapıştır yaparak çalıştırılabilir durumda.
Python:
class k ():
komutlar = ['kapat','bilgisayari','kapa']
kelimeler = ['matilda','bilgisayari','kapat','allah']
def komutBul(self):
x = 1
for komut in self.komutlar:
x += 1
#kelimelerin icerisinde anahtar komut ariyorum
if komut in self.kelimeler:
self.komut1 = komut
#Anahtar kelimeyi bulduktan sonra kendisini ve oncesindekileri siliyorum
for i in range(0, x):
print(i)
self.kelimeler.pop(0)
print(self.kelimeler,' kalanlar')# Silindikten geriye kalan kelimeler
x = 1
y = 0
for komut in self.komutlar:
print('komutlar: ', komut)
x += 1
# Geriye kalan kelimelerin icerisinde anahtar kelime var mi diye bakiyorum
if komut in self.kelimeler:
y = 1
self.komut2 = komut
print('burdayim')
# Iki anahtar kelimeyide alip komutu calistiyorum
self.komutCalistir(self.komut1, self.komut2)
break
# geriye kalan kelimeler arasinda anahtar kelime yoksa tek anahtar kelime ile komutu calisitiriyorum
if y == 0:
self.komutCalistir(self.komut1)
def komutCalistir(self, komut1, komut2 = ''):
if komut1 == "kapat" and komut2 == '':
exit()
print('bye bye')
elif (komut1 == 'bilgisayari') and (komut2 == 'kapat'):
print('Bilgisayari kapatiyorum')
ko = k()
ko.komutBul()
Anlatamadığım veya yanlış aktardığım bir yer varsa kusura bakmayın. Şimdiden hepinize teşekkürler.
Son düzenleme: