If karşılaştırma deyimi, bazı koşullu yapıları kontrol etmek için kullanılır. Eğer anlamında koşulun doğru olduğu durumda içeriğindeki kodu çalıştırır. Tek bir şartın sağlanmasında tek “if” yapısı kullanılırken, birden fazla şartın karşılaştırılmasında da “elif” yapısı kullanılır. Bu şartlardan hiç birinin sağlanmadığı durumlarda da “else” deyimi kullanılır. Bu karşılaştırma deyimleri genel olarak aşağıdaki yapıdadırlar.
if <koşul>:
<durum>
elif <koşul>:
<durum>
elif <koşul>:
<durum>
...
else:
<durum>
If deyiminin kullanımına bakacak olursak. Bir koşulun sağlanması durumunda işlenecek durumu belirtir. Buradaki karşılaştırma koşulunun sonucu boolean olacağı için istersek karşılaştırma istersek de boolean bir değer ile kullanabiliriz.
Şimdi de Silverlight bir proje üzerinde denetleme deyimlerini inceleyelim
Projenin Genel kodları aşağıdaki gibidir:
App.xaml
1 <UserControl
2 xmlns="http://schemas.microsoft.com/client/2007"
3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4 xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
5 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
6 x:Class="System.Windows.Controls.UserControl"
7 mc:Ignorable="d">
8 <Grid x:Name="layout_root">
9 <Grid.Background>
10 <RadialGradientBrush>
11 <GradientStop Color="#FF25A995"/>
12 <GradientStop Color="#FF0D3F41" Offset="1"/>
13 <GradientStop Color="#FF0D3F41" Offset="1"/>
14 </RadialGradientBrush>
15 </Grid.Background>
16 <ListBox Width="173" x:Name="Listt" HorizontalAlignment="Left" Margin="8,8,0,0" Height="267" VerticalAlignment="Top" Foreground="White" BorderBrush="#FF987C7C">
17 <ListBox.Background>
18 <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
19 <GradientStop Color="#FF239398"/>
20 <GradientStop Color="#FF2CCBD0" Offset="0.216"/>
21 <GradientStop Color="#FF1D9296" Offset="0.216"/>
22 <GradientStop Color="#FF0D3F41" Offset="1"/>
23 </LinearGradientBrush>
24 </ListBox.Background>
25 </ListBox>
26 <Button Margin="240,62,0,0" Width="75" Height="30" x:Name="Buton" Content="Karsilastir" HorizontalAlignment="Left" VerticalAlignment="Top" d:LayoutOverrides="Width, Height"/>
27 <TextBox x:Name="sayi" Height="28" HorizontalAlignment="Left" Margin="190,29,0,0" VerticalAlignment="Top" Width="125" TextWrapping="Wrap"/>
28 <TextBlock Height="17" HorizontalAlignment="Left" Margin="190,8,0,0" VerticalAlignment="Top" Width="77" Text="Sayi:" TextWrapping="Wrap" Foreground="White"/>
29 <TextBlock Height="17" HorizontalAlignment="Left" Margin="190,96,0,0" VerticalAlignment="Top" Width="39" Text="Sonuç:" TextWrapping="Wrap" Foreground="White"/>
30 <TextBlock x:Name="text_sonuc" HorizontalAlignment="Left" Margin="190,117,0,134" Width="117" TextWrapping="Wrap" Foreground="White" FontWeight="Bold" FontSize="13.333"/>
31 </Grid>
32
33 </UserControl>
app.py
1 from System.Windows import Application
2 from System.Windows.Controls import UserControl
3 proje = Application.Current.LoadRootVisual(UserControl(), 'app.xaml')
4
5 def onClickButton(sender, args):
6 if 3<5:
7 proje.text_sonuc.Text = "3<5: Dogru"
8 proje.Listt.Items.Add("3<5: Sonuc Dogru")
9
10 proje.Buton.Click += onClickButton
Simdi de bu deyimlerin kullanım örneklerine geçelim. If deyimi koşul doğru ise altındaki kodu çalıştırır.
• If kontrolü ile 5’in 3ten büyük ise button’a tıklanınca sonuç kısmına ve listbox’a “3<5: Dogru” şeklinde yazdıralım.
def onClickButton(sender, args):
if 3<5:
proje.text_sonuc.Text = "3<5: Dogru"
proje.Listt.Items.Add("3<5: Sonuc Dogru")
“Else” deyimi gerçekleşir if ile birlikte kullanıldığı zaman ilk şartın gerçekleşmediği tüm durumlarda gerçekleşir.
• If kontrolü ile “raptors” kelimesi ile “magic” kelimesi eşit mi string olarak karşılaştıralım ve sonucu listbox ve sonuç kısmına yazdıralım.
def onClickButton(sender, args):
if "raptors"=="magic":
proje.text_sonuc.Text = "raptors ile magic ayni"
proje.Listt.Items.Add("raptors ile magic ayni")
else:
proje.text_sonuc.Text = "raptors ile magic farkli"
proje.Listt.Items.Add("raptors ile magic farkli")
• If kontrolü boolean olarak da denetleme imkanı sağlar, listbox ve sonuç’a çıktıyı yazdıralım.
def onClickButton(sender, args):
if True:
proje.text_sonuc.Text = "Durum: True"
proje.Listt.Items.Add("Durum: True")
• İf ve else deyimlerinin kullanımını gördük şimdi de elif deyimi ile birlikte kullanımı nasıl olur ona bir göz atalım. Sırası ile -2, 0 ve 4 sayılarını girelim.
def onClickButton(sender, args):
sayi = int(proje.sayi.Text)
if sayi == 0:
proje.text_sonuc.Text = "Sayi: 0"
proje.Listt.Items.Add("Sayi: 0")
elif sayi<0:
proje.text_sonuc.Text = "Sayi: Negatif"
proje.Listt.Items.Add("Sayi: Negatif")
elif sayi>0:
proje.text_sonuc.Text = "Sayi: Pozitif"
proje.Listt.Items.Add("Sayi: Pozitif")
İf deyimini aynı zamanda listenin içeriğini denetlemek için de kullanabiliriz. Herhangi bir elemanın liste içerisinde bulunup bulunmadığını kontrol edebiliriz.
• Örneğimizde fenerbahce oyuncu dizisinde Carlos’un varlığını denetleyelim. Sonucu Listbox ve sonuç’a yazdıralım
def onClickButton(sender, args):
fenerbahce = ["dos Santos","Guiza","Alex","Carlos","Lugano","Emre"]
if ("Carlos" in fenerbahce):
proje.text_sonuc.Text = "carlos hala takimda"
proje.Listt.Items.Add("carlos hala takimda")
• Şimdi de örneğimize Textbox ile oyuncu sorgulama özelliği ekleyelim. Liste içerisinde kayıtlı oyuncuları sorgulayarak. Oyuncu varsa “oyuncu hala takımda” takım listesinde yoksa “oyuncu artık takımda değil” yazsın.
def onClickButton(sender, args):
oyuncu = proje.sayi.Text.ToString()
fenerbahce = ["dos Santos","Guiza","Alex","Carlos","Lugano","Emre"]
if (oyuncu in fenerbahce):
proje.text_sonuc.Text = oyuncu + " hala takimda"
proje.Listt.Items.Add(oyuncu + " hala takimda")
else:
proje.text_sonuc.Text =oyuncu + " artik takimda degil"
proje.Listt.Items.Add(oyuncu + " artik takimda degil")
Simdi de deyimlerin boolean operatörle ile kullanım örneklerine geçelim. Birden fazla koşulun aynı anda karşılaştırılmasını istiyorsak “and” operatörünü kullanırız. Tüm boolean operatörleri kullanabiliriz.
• If kontrolü ile 5’in 3ten büyük olma şartı ile 10’un 9dan büyük olma şartını karşılaştıralım. İkisi de doğru olduğu için “And” operatörünün sonucu doğru olarak dönecektir.
def onClickButton(sender, args):
if (3<5) and (10>9):
proje.text_sonuc.Text = "3<5 ve 10>9: Dogru"
proje.Listt.Items.Add("3<5 ve 10>9: Dogru")
Bir denetleme deyiminde birden fazla koşuldan herhangi birinin doğru olması durumunda da “or” operatörünü kullanırız.
• If kontrolü ile 5’in 3ten büyük olduğu durum veya 10’un 11’den büyük olma durumunu karşılaştıralım. İlk karşılaştırma doğru olduğu için sonuç doğru olarak dönecek.
def onClickButton(sender, args):
if (3<5) or (10>11):
proje.text_sonuc.Text = "3<5 veya 10>11: Dogru"
proje.Listt.Items.Add("3<5 veya 10>11: Dogru")
Örnek olarak, önceden belirlenmiş bir sayıyı tahmin etme deyimi yazalım;
• Şimdi de if, elif ve else deyimlerini bir arada kullanan bir örnek yapalım. Belirlinmiş sayımız 100 olsun. 100den küçük sayılar girildiğinde bize 'Daha büyük bir sayı giriniz...' diye uyarı yapsın. Eğer 100’den büyük bir sayı girersek 'Daha küçük bir sayı giriniz...' uyarısı gelsin. Eğer girdiğimiz karakter sayı değilse 'Yanlış karakter! Lütfen sayı giriniz.' Uyarısı gelsin. 100 sayısını doğru olarak girdiğimizde de 'Tahmininiz doğru! 100!' şeklinde bir uyarı versin. Sırasıyla 70, 150 ve 100 sayılarını girelim.
def onClickButton(sender, args):
sayi = int(proje.sayi.Text)
if sayi<100:
proje.text_sonuc.Text = "Daha buyuk bir sayi giriniz..."
proje.Listt.Items.Add("Daha buyuk bir sayi giriniz...")
elif sayi>100:
proje.text_sonuc.Text = "Daha kucuk bir sayi giriniz..."
proje.Listt.Items.Add("Daha kucuk bir sayi giriniz...")
elif sayi==100:
proje.text_sonuc.Text = "Tahmininiz doğru! 100"
proje.Listt.Items.Add("Tahmininiz doğru! 100")
else:
proje.text_sonuc.Text = "Yanlis karakter! Lutfen sayi giriniz."
proje.Listt.Items.Add("Yanlis karakter! Lutfen sayi giriniz.")
Bu makalemizde tüm detayları ve güzel örnekleriyle if, elif ve else denetleme yapılarını inceledik. Bu karşılaştırmaları canlandırırken bu sefer farklı bir silverlight renk tasarımı ile görselleştirdik. Son örneğimizin de proje kodlarını aşağı dosyaya ekledim.
Hepinize Kolay gelsin. Sorularınızı ve takıldığınız yerleri
ik@ibrahimkivanc.com mail adresime iletebilirsiniz.
Makalenin PDF Hali için >
22 - IronPyton If Elif Else Deyimleri