Python Python function kodu çalışmıyor

Alperbro

Decapat
Katılım
23 Ocak 2022
Mesajlar
118
Çözümler
2
Yer
Kocaeli
Python:
exit = False
while exit==False:
    komut = input(": ")
def input_reply():
    if komut=="hi":
        print("Hello!")
while exit==False:
     input_reply()

Bu haftanın ikinci Python çalışmayan Python kodu. Bir function denemesi yaptım fakat çalışmadı, yardım ederseniz sevinirim.
 
Son düzenleyen: Moderatör:
Python:
exit = False.
while exit==False:
 komut = input(": ")
def input_reply():
 if komut=="hi":
 print("Hello!")
while exit==False:
 input_reply()
[/CODE]
Bu haftanın ikinci Python çalışmayan Python kodu. Bir function denemesi yaptım fakat çalışmadı,

İlk döngüde inputta kalıyor. Ayrıca fonksiyonu ilk başta atasan ve while döngülerini birleştirsen daha iyi olur.

Python:
exit = False
def input_reply():
 if komut=="hi":
  print("Hello!")
while not exit:
 komut = input(": )
 input_reply()

Mobilde olduğum için tab atamadım sen düzeltirsen iyi olur.
 
Son düzenleme:
İlk döngüde inputta kalıyor. Ayrıca fonksiyonu ilk başta atasan ve while döngülerini birleştirsen daha iyi olur.
Fonksiyonu ilk önce tanımlasam komut değeri daha tanımlanmadığı için çalışmaz diye düşündüm o yüzden sonra tanımladım.
İlk döngüden çıkış yok, alt kısımlar hiç çalışmıyor.
Aynı anda iki döngü olmaz mı?
 
Aynı anda iki döngü olmaz mı?
Multithreading ile olur ama bu bağlamda gereksiz bir şey (sadece bilgin olsun diye söyledim). İlk while döngüsü hiç bitmediğinden programın alttaki kodlardan haberi bile yok, ikinci döngü de altta kaldığı için çalışmaz. Yani program o döngüyü bir kenara koyup yoluna devam etmez, onun bitmesi lazım. Mesela şöyle yapabilirsin:
Python:
exit = false

while exit == false:
    komut = input(">")
    
    if komut == "q"
        exit = true

# ...

Ve scope (kapsama alanı)' a dikkat etmemişsin. Komut sadece while döngüsünün içinde tanımlı o yüzden döngünün dışında ona erişemezsin yani fonksiyon da bu haliyle çalışmaz. İkinci döngü tamamen gereksiz ve onun da çıkışı yok. Düzgün bir hali şöyle olabilir:

Python:
def reply():
    print("hello")
    
exit = false

while not exit:
    komut = input(">")
    
    if komut == "q":
        exit = true
    elif komut == "hi":
        reply()
 
Son düzenleme:
Multithreading ile olur ama bu bağlamda gereksiz bir şey (sadece bilgin olsun diye söyledim). İlk while döngüsü hiç bitmediğinden programın alttaki kodlardan haberi bile yok, ikinci döngü de altta kaldığı için çalışmaz. Yani program o döngüyü bir kenara koyup yoluna devam etmez, onun bitmesi lazım. Mesela şöyle yapabilirsin:
Python:
exit = false

while exit == false:
    komut = input(">")
   
    if komut == "q"
        exit = true

# ...

Ve scope (kapsama alanı)' a dikkat etmemişsin. Komut sadece while döngüsünün içinde tanımlı o yüzden döngünün dışında ona erişemezsin yani fonksiyon da bu haliyle çalışmaz. İkinci döngü tamamen gereksiz ve onun da çıkışı yok. Düzgün bir hali şöyle olabilir:

Python:
def reply():
    print("hello")
   
exit = false

while not exit:
    komut = input(">")
   
    if komut == "q":
        exit = true
    elif komut == "hi":
        reply()

Teşekkürler anladım fakat ikinci düzenlediğin kodda while not exit olayını ve exit'i anlayamadım. Exit bir değer mi yoksa çıkış talimatı mı?
 
Teşekkürler anladım fakat ikinci düzenlediğin kodda while not exit olayını ve exit'i anlayamadım. Exit bir değer mi yoksa çıkış talimatı mı?

Exit false olarak ayarlı ve değişkenler boolean değerler olduğunda mesela True ise if exit==True yazmassın sadece if exit yazıp bırakırsın. False değerine eşitken çalışmasını istiyorsan while not exit yazacaksın ki iki False değeri yan yana olduğundan True olarak çıksın.
 
Teşekkürler anladım fakat ikinci düzenlediğin kodda while not exit olayını ve exit'i anlayamadım. Exit bir değer mi yoksa çıkış talimatı mı?
Senin yazdığın kodu düzenledim sadece, anlamadıysan sıkıntı var 😄. While döngüsü bir şart ile çalışır (sonucunda true veya false veren bir ifade). Exit ise burada bir boolean değişkendir. While için koyduğumuz şart ise "not Exit" yani bu değişkenin False değere sahip olması. False olduğu sürece bu döngü çalışmaya devam eder. Eğer True olursa şartımız ("not Exit") sağlanmadığı için döngü biter. Aslında Exit de olmadan daha iyi bir şekilde şöyle olabilir:

Python:
def reply():
    print("hello")

while True:
    komut = input(">")
  
    if komut == "q":
        break
    elif komut == "hi":
        reply()

Burada while şartının ne olduğuna bakarak önceki kodda Exit'in ne işe yaradığını daha iyi görebilirsin.

While <True/False>: #True ise çalışır, değilse çalışmaz
 

Geri
Yukarı