Çözüldü Python'da bir koşuldaki değişkenin değeri değişirse başka işlem yapılması nasıl sağlanır?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

cenkkk

Megapat
Katılım
24 Haziran 2016
Mesajlar
6.044
Çözümler
16
Daha fazla  
Sistem Özellikleri
Intel Core 2 Quad Q6600 | AMD RX 6800 XT | 2 GB RAM| 250 GB Hitachi HDD|
Cinsiyet
Erkek
Arkadaşlar başlık pek açıklayıcı olmamış olabilir, yapmak istediğim ancak yapamadığım bir işlem var. Bir siteden canlı veri akışı çekiyorum ve bunu döngü içerisinde bir değişkene atıyorum. Mesela hava sıcaklığı verisi, eğer hava sıcaklığı 30 derece altında ise ekrana sürekli hava serin yazdır, ne zaman hava sıcaklığı 30 üstüne çıkarsa çıktığı anda ekrana hava ısınıyor yazdır, ancak bunu koşula bağlı olarak yapmak istiyorum, yani koşulun başlangıç şartı havanın 30 derecenin altında olması olacak, bunu pratik olarak nasıl yapabilirim, belki basit ama yeni olduğum için beceremedim.
 
Çözüm
Hocam bu kod çalışır, ama canlı veri çektiğim için bana gelen ilk veri diyelimki 32 derece olursa ekrana direk klimayi aç yazacak, benim istediğim hava 30 derecenin altında ise kod çalışsın ne zaman 30 derecenin üzerine çıkarsa ekrana klimayı aç yazsın. Hava zaten 30 derecenin üzerinde ise işlem yapmasın, 30'un altına inerse çalışmaya başlasın 30'un üstüne çıkınca ekrana klimayı aç yazsın.
Python:
while True:
    try:
        ## uzun olduğu için sadece yapamadığım kısmın kodlarını yazıyorum
        site_durumu = (sitenin online olup olmadığını kontrol ediyorum)
        hava_isisi = (veriyi bir siteden canlı çekiyorum)
     
        if site_durumu == 1 and hava_isisi < 30:
            print("hava serin")
            time.sleep(5)
            while True:
                hava_isisi = (veriyi bir siteden canlı çekiyorum)
                time.sleep(5)
                if site_durumu == 1 and hava_isisi > 30
                    print("klimayi ac")
                    break
             
    ## Burada kodun başlama şartı havanin 30 derecenin altında olması olacak, hava 30 derece altından 30 derece üstüne çıktığı anda ekrana klimayi aç yazacak
Çalışacağını düşünüyorum. 5 saniyede bir kontrol ediyor, 30'un altına düşerse "Hava serin." diyor, bu sefer 30'un üstüne çıkmasını bekliyor, 30'un üstüne çıkarsa "Klimayı aç." diyor, bu sefer yine 30'un altına düşmesini bekliyor, böyle gidiyor.
Üzerinde çalıştığınız kodları buraya atabilirseniz istediğiniz sonuca daha hızlı ulaşabilirsiniz.

Hocam konuyu eksik açmıştım düzenledim.
Python:
while True:
    try:
        ## uzun olduğu için sadece yapamadığım kısmın kodlarını yazıyorum
        site_durumu = (sitenin online olup olmadığını kontrol ediyorum)
        hava_isisi = (veriyi bir siteden canlı çekiyorum)
        
        if site_durumu == 1 and hava_isisi < 30:
            print("hava serin")
            time.sleep(5)
            if site_durumu == 1 and hava_isisi > 30
                print("klimayi ac")
                
    ## Burada kodun başlama şartı havanin 30 derecenin altında olması olacak, hava 30 derece altından 30 derece üstüne çıktığı anda ekrana klimayi aç yazacak
 
Son düzenleme:
Hocam konuyu eksik açmıştım düzenledim.
Python:
while True:
    try:
        ## uzun olduğu için sadece yapamadığım kısmın kodlarını yazıyorum
        site_durumu = (sitenin online olup olmadığını kontrol ediyorum)
        hava_isisi = (veriyi bir siteden canlı çekiyorum)
       
        if site_durumu == 1 and hava_isisi < 30:
            print("hava serin")
            time.sleep(5)
            if site_durumu == 1 and hava_isisi > 30
                print("klimayi ac")
               
    ## Burada kodun başlama şartı havanin 30 derecenin altında olması olacak, hava 30 derece altından 30 derece üstüne çıktığı anda ekrana klimayi aç yazacak
Hocam 2. if cümlesini ilk if cümlesinin içine yazmışsınız, bu yüzden çalışmaz. Düzeltilmiş kod:
Python:
while True:
    try:
        ## uzun olduğu için sadece yapamadığım kısmın kodlarını yazıyorum
        site_durumu = (sitenin online olup olmadığını kontrol ediyorum)
        hava_isisi = (veriyi bir siteden canlı çekiyorum)
       
        if site_durumu == 1 and hava_isisi < 30:
            print("hava serin")
        elif site_durumu == 1 and hava_isisi > 30
            print("klimayi ac")
        time.sleep(5)
               
    ## Burada kodun başlama şartı havanin 30 derecenin altında olması olacak, hava 30 derece altından 30 derece üstüne çıktığı anda ekrana klimayi aç yazacak
 
Hocam 2. if cümlesini ilk if cümlesinin içine yazmışsınız, bu yüzden çalışmaz. Düzeltilmiş kod:
Python:
while True:
 try:
 ## uzun olduğu için sadece yapamadığım kısmın kodlarını yazıyorum
 site_durumu = (sitenin online olup olmadığını kontrol ediyorum)
 hava_isisi = (veriyi bir siteden canlı çekiyorum)

 if site_durumu == 1 and hava_isisi < 30:
 print("hava serin")
 elif site_durumu == 1 and hava_isisi > 30
 print("klimayi ac")
 time.sleep(5)

 ## Burada kodun başlama şartı havanin 30 derecenin altında olması olacak, hava 30 derece altından 30 derece üstüne çıktığı anda ekrana klimayi aç yazacak

Hocam bu kod çalışır, ama canlı veri çektiğim için bana gelen ilk gelen veri diyelimki 32 derece olursa ekrana direk klimayi aç yazacak, benim istediğim hava 30 derecenin altında ise kod çalışsın ne zaman 30 derecenin üzerine çıkarsa ekrana klimayı aç yazsın. Hava zaten 30 derecenin üzerinde ise işlem yapmasın, 30'un altına inerse çalışmaya başlasın 30'un üstüne çıkınca ekrana klimayı aç yazsın.
 
Hocam bu kod çalışır, ama canlı veri çektiğim için bana gelen ilk veri diyelimki 32 derece olursa ekrana direk klimayi aç yazacak, benim istediğim hava 30 derecenin altında ise kod çalışsın ne zaman 30 derecenin üzerine çıkarsa ekrana klimayı aç yazsın. Hava zaten 30 derecenin üzerinde ise işlem yapmasın, 30'un altına inerse çalışmaya başlasın 30'un üstüne çıkınca ekrana klimayı aç yazsın.
Python:
while True:
    try:
        ## uzun olduğu için sadece yapamadığım kısmın kodlarını yazıyorum
        site_durumu = (sitenin online olup olmadığını kontrol ediyorum)
        hava_isisi = (veriyi bir siteden canlı çekiyorum)
     
        if site_durumu == 1 and hava_isisi < 30:
            print("hava serin")
            time.sleep(5)
            while True:
                hava_isisi = (veriyi bir siteden canlı çekiyorum)
                time.sleep(5)
                if site_durumu == 1 and hava_isisi > 30
                    print("klimayi ac")
                    break
             
    ## Burada kodun başlama şartı havanin 30 derecenin altında olması olacak, hava 30 derece altından 30 derece üstüne çıktığı anda ekrana klimayi aç yazacak
Çalışacağını düşünüyorum. 5 saniyede bir kontrol ediyor, 30'un altına düşerse "Hava serin." diyor, bu sefer 30'un üstüne çıkmasını bekliyor, 30'un üstüne çıkarsa "Klimayı aç." diyor, bu sefer yine 30'un altına düşmesini bekliyor, böyle gidiyor.
 
Çözüm
Genel algoritma bu şekilde, hayal gücünüze göre kendi yorumunuzu katabilirsiniz.

Python:
import requests
from bs4 import BeautifulSoup

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.111 YaBrowser/21.2.1.108 Yowser/2.5 Safari/537.36"}

while True:
    

    #veri google dan çekilecek.
    url="https://www.google.com.tr/search?q=hava+durumu"

    #requests ile istek gönderilen kısım
    r_get=requests.get(url,headers=headers)

    #BeautifulSoup ile veriyi parçaladığımız kısım
    soup=BeautifulSoup(r_get.content,"html.parser")
    soup1=int(soup.find("span",{"id":"wob_tm"}).get_text())
    

    print(f"Hava bugün {soup1} derece!")
    
    if soup1<30:
        print("Hava serin")
    elif soup1 > 30:
        print("Klimayi ac")
    else:
        pass
 
Python:
while True:
 try:
 ## uzun olduğu için sadece yapamadığım kısmın kodlarını yazıyorum
 site_durumu = (sitenin online olup olmadığını kontrol ediyorum)
 hava_isisi = (veriyi bir siteden canlı çekiyorum)

 if site_durumu == 1 and hava_isisi < 30:
 print("hava serin")
 time.sleep(5)
 while True:
 hava_isisi = (veriyi bir siteden canlı çekiyorum)
 time.sleep(5)
 if site_durumu == 1 and hava_isisi > 30
 print("klimayi ac")
 break

 ## Burada kodun başlama şartı havanin 30 derecenin altında olması olacak, hava 30 derece altından 30 derece üstüne çıktığı anda ekrana klimayi aç yazacak
Çalışacağını düşünüyorum. 5 saniyede bir kontrol ediyor, 30'un altına düşerse "Hava serin." diyor, bu sefer 30'un üstüne çıkmasını bekliyor, 30'un üstüne çıkarsa "Klimayı aç." diyor, bu sefer yine 30'un altına düşmesini bekliyor, böyle gidiyor.

Hocam kendime göre düzenledim sorunsuz şekilde çalıştı, gerçekten çok teşekkürler.
Python:
while True:
 try:
 ## uzun olduğu için sadece yapamadığım kısmın kodlarını yazıyorum
 site_durumu = (sitenin online olup olmadığını kontrol ediyorum)
 hava_isisi = (veriyi bir siteden canlı çekiyorum)

 if site_durumu == 1 and hava_isisi < 30:
 print("hava serin")
 time.sleep(5)
 while True:
 hava_isisi = (veriyi bir siteden canlı çekiyorum)
 time.sleep(5)
 if site_durumu == 1 and hava_isisi > 30
 print("klimayi ac")
 break

 ## Burada kodun başlama şartı havanin 30 derecenin altında olması olacak, hava 30 derece altından 30 derece üstüne çıktığı anda ekrana klimayi aç yazacak
Çalışacağını düşünüyorum. 5 saniyede bir kontrol ediyor, 30'un altına düşerse "Hava serin." diyor, bu sefer 30'un üstüne çıkmasını bekliyor, 30'un üstüne çıkarsa "Klimayı aç." diyor, bu sefer yine 30'un altına düşmesini bekliyor, böyle gidiyor.

Hocam bir süre izledim ancak döngü tek sefer çalışıp duruyor sebebini anlamadım, yani tek kontrol yapıyor klimayı aç dedikten sonra değer tekrar 30'un altına indiği halde işlem yapmıyor ve hava serin yazmıyor.
 
Son düzenleme:
Hocam bir süre izledim ancak döngü tek sefer çalışıp duruyor sebebini anlamadım, yani tek kontrol yapıyor klimayı aç dedikten sonra değer tekrar 30'un altına indiği halde işlem yapmıyor ve hava serin yazmıyor.
Sanırım break komutu direkt tüm while döngülerini bitiriyor. Şunu dener misin?
Python:
while True:
    try:
        site_durumu = (sitenin online olup olmadığını kontrol ediyorum)
        hava_isisi = (veriyi bir siteden canlı çekiyorum)

        if site_durumu == 1 and hava_isisi < 30:
            print("hava serin")
        time.sleep(5)
        while hava_isisi < 30:
            hava_isisi = (veriyi bir siteden canlı çekiyorum)
            time.sleep(5)
        hava_isisi = (veriyi bir siteden canlı çekiyorum)
        if site_durumu == 1 and hava_isisi > 30:
            print("klimayi ac")
 

Yeni konular

Geri
Yukarı