forked from yazbel/python-istihza
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathislecler.html
2117 lines (1894 loc) · 165 KB
/
islecler.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html lang="tr">
<html lang="tr">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta content="Bu bölümde işleçleri inceleyeceğiz." name="description" />
<meta content="python, işlec, bool, aritmetik, True, False, eşit, eşit değil, karşılaştırma, değer atama, aitlik, kimlik , walrus" name="keywords" />
<title>İşleçler — Python 3 için Türkçe Kılavuz</title>
<link rel="stylesheet" href="_static/pyramid.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
<script src="_static/language_data.js"></script>
<script src="_static/translations.js"></script>
<link rel="search" title="Ara" href="search.html" />
<link rel="next" title="Döngüler (Loops)" href="donguler.html" />
<link rel="prev" title="Koşullu Durumlar" href="kosul_deyimleri.html" />
<!--[if lte IE 6]>
<link rel="stylesheet" href="_static/ie6.css" type="text/css" media="screen" charset="utf-8" />
<![endif]-->
</head><body>
<div class='header'><a href='https://yazbel.com'>yazbel.com</a></div>
<ul class='navbar'>
<li><a href="#"><del>pdf desteği sonlanmıştır</del></a></li>
<li class="forum"><a href="http://forum.yazbel.com">forum</a></li>
</ul>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Gezinti</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="donguler.html" title="Döngüler (Loops)"
accesskey="N">sonraki</a></li>
<li class="right" >
<a href="kosul_deyimleri.html" title="Koşullu Durumlar"
accesskey="P">önceki</a> |</li>
<li class="nav-item nav-item-0"><a href=".">⌂</a></li>
<li class="nav-item nav-item-this"><a href="">İşleçler</a></li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="body" role="main">
<div class="section" id="islecler">
<h1>İşleçler<a class="headerlink" href="#islecler" title="Bu başlık için kalıcı bağlantı">¶</a></h1>
<p>Bu bölümde, aslında pek de yabancısı olmadığımız ve hatta önceki derslerimizde
üstünkörü de olsa değindiğimiz bir konuyu çok daha ayrıntılı bir şekilde ele
alacağız. Burada anlatacağımız konu size yer yer sıkıcı gelebilir. Ancak bu
konuyu hakkıyla öğrenmenizin, programcılık maceranız açısından hayati önemde
olduğunu rahatlıkla söyleyebilirim.</p>
<p>Gelelim konumuza…</p>
<p>Bu bölümün konusu işleçler. Peki nedir bu ‘işleç’ denen şey?</p>
<p>İngilizce’de <em>operator</em> adı verilen işleçler, sağında ve solunda bulunan
değerler arasında bir ilişki kuran işaretlerdir. Bir işlecin sağında ve solunda
bulunan değerlere ise işlenen (<em>operand</em>) adı veriyoruz.</p>
<div class="admonition note">
<p class="admonition-title">Not</p>
<p>Türkçede işleç yerine operatör, işlenen yerine de operant dendiğine
tanık olabilirsiniz.</p>
</div>
<p>Biz bu bölümde işleçleri altı başlık altında inceleyeceğiz:</p>
<blockquote>
<div><ol class="arabic simple">
<li><p>Aritmetik İşleçler</p></li>
<li><p>Karşılaştırma İşleçleri</p></li>
<li><p>Bool İşleçleri</p></li>
<li><p>Değer Atama İşleçleri</p></li>
<li><p>Aitlik İşleçleri</p></li>
<li><p>Kimlik İşleçleri</p></li>
</ol>
</div></blockquote>
<p>Gördüğünüz gibi, işlememiz gereken konu çok, gitmemiz gereken yol uzun. O halde
hiç vakit kaybetmeden, aritmetik işleçlerle yolculuğumuza başlayalım.</p>
<div class="section" id="aritmetik-islecler">
<h2>Aritmetik İşleçler<a class="headerlink" href="#aritmetik-islecler" title="Bu başlık için kalıcı bağlantı">¶</a></h2>
<p>Dedik ki, sağında ve solunda bulunan değerler arasında bir ilişki kuran
işaretlere işleç (<em>operator</em>) adı verilir. Önceki derslerimizde temel işleçlerin
bazılarını öğrenmiştik. İsterseniz bunları şöyle bir hatırlayalım:</p>
<blockquote>
<div><table class="docutils align-default">
<colgroup>
<col style="width: 40%" />
<col style="width: 60%" />
</colgroup>
<tbody>
<tr class="row-odd"><td><p><cite>+</cite></p></td>
<td><p>toplama</p></td>
</tr>
<tr class="row-even"><td><p><cite>-</cite></p></td>
<td><p>çıkarma</p></td>
</tr>
<tr class="row-odd"><td><p><cite>*</cite></p></td>
<td><p>çarpma</p></td>
</tr>
<tr class="row-even"><td><p><cite>/</cite></p></td>
<td><p>bölme</p></td>
</tr>
<tr class="row-odd"><td><p><cite>**</cite></p></td>
<td><p>kuvvet</p></td>
</tr>
</tbody>
</table>
</div></blockquote>
<p>Bu işleçlere aritmetik işleçler adı verilir. Aritmetik işleçler; matematikte
kullanılan ve sayılarla aritmetik işlemler yapmamızı sağlayan yardımcı
araçlardır.</p>
<p>Dilerseniz bu tanımı bir örnekle somutlaştıralım:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="mi">45</span> <span class="o">+</span> <span class="mi">33</span>
<span class="go">78</span>
</pre></div>
</div>
<p>Burada <cite>45</cite> ve <cite>33</cite> değerlerine işlenen (<em>operand</em>) adı verilir. Bu iki değer
arasında yer alan <cite>+</cite> işareti ise bir işleçtir (<em>operator</em>). Dikkat ederseniz
<cite>+</cite> işleci <cite>45</cite> ve <cite>33</cite> adlı işlenenler arasında bir toplama ilişkisi kuruyor.</p>
<p>Bir örnek daha verelim:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="mi">23</span> <span class="o">*</span> <span class="mi">46</span>
<span class="go">1058</span>
</pre></div>
</div>
<p>Burada da <cite>23</cite> ve <cite>46</cite> değerleri birer işlenendir. Bu iki değer arasında yer
alan <cite>*</cite> işareti ise, işlenenler arasında bir çarpma ilişkisi kuran bir
işleçtir.</p>
<p>Ancak bir noktaya özellikle dikkatinizi çekmek istiyorum. Daha önceki
derslerimizde de değindiğimiz gibi, <cite>+</cite> ve <cite>*</cite> işleçleri Python’da birden fazla
anlama gelir. Örneğin yukarıdaki örnekte <cite>+</cite> işleci, işlenenler arasında bir
toplama ilişkisi kuruyor. Ama aşağıdaki durum biraz farklıdır:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="s2">"istihza"</span> <span class="o">+</span> <span class="s2">".com"</span>
<span class="go">'istihza.com'</span>
</pre></div>
</div>
<p>Burada <cite>+</cite> işleci işlenenler (<cite>“istihza”</cite> ve <cite>“.com”</cite>) arasında bir birleştirme
ilişkisi kuruyor.</p>
<p>Tıpkı <cite>+</cite> işlecinde olduğu gibi, <cite>*</cite> işleci de Python’da birden fazla anlama
gelir. Bu işlecin, çarpma ilişkisi kurma işlevi dışında tekrar etme ilişkisi
kurma işlevi de vardır. Yani:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="s2">"hızlı "</span> <span class="o">*</span> <span class="mi">2</span>
<span class="go">'hızlı hızlı '</span>
</pre></div>
</div>
<p>…veya:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="s2">"-"</span> <span class="o">*</span> <span class="mi">30</span>
<span class="go">'------------------------------'</span>
</pre></div>
</div>
<p>Burada <cite>*</cite> işlecinin, sayılar arasında çarpma işlemi yapmak dışında bir görev
üstlendiğini görüyoruz.</p>
<p>Python’da bu tür farklar, yazacağınız programın sağlıklı çalışabilmesi açısından
büyük önem taşır. O yüzden bu tür farklara karşı her zaman uyanık olmamız
gerekiyor.</p>
<p><cite>+</cite> ve <cite>*</cite> işleçlerinin aksine <cite>/</cite> ve <cite>-</cite> işleçleri ise işlenenler arasında
sadece bölme ve çıkarma ilişkisi kurar. Bu işleçler tek işlevlidir:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="mi">25</span> <span class="o">/</span> <span class="mi">4</span>
<span class="go">6.25</span>
<span class="gp">>>> </span><span class="mi">10</span> <span class="o">-</span> <span class="mi">5</span>
<span class="go">5</span>
</pre></div>
</div>
<p>Önceki derslerde gördüğümüz ve yukarıda da tekrar ettiğimiz dört adet temel
aritmetik işlece şu iki aritmetik işleci de ekleyelim:</p>
<blockquote>
<div><table class="docutils align-default">
<colgroup>
<col style="width: 18%" />
<col style="width: 82%" />
</colgroup>
<tbody>
<tr class="row-odd"><td><p><cite>%</cite></p></td>
<td><p>modülüs</p></td>
</tr>
<tr class="row-even"><td><p><cite>//</cite></p></td>
<td><p>taban bölme</p></td>
</tr>
</tbody>
</table>
</div></blockquote>
<p>İlk önce modülüsün ne olduğunu ve ne işe yaradığını anlamaya çalışalım.</p>
<p>Şu bölme işlemine bir bakın:</p>
<img alt="_images/bolme.png" class="align-center" src="_images/bolme.png" />
<p>Burada <cite>02</cite> sayısı bölme işleminin kalanıdır. İşte modülüs denen işleç de bölme
işleminden kalan bu değeri gösterir. Yani:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="mi">30</span> <span class="o">%</span> <span class="mi">4</span>
<span class="go">2</span>
</pre></div>
</div>
<p>Gördüğünüz gibi modülüs işleci (<cite>%</cite>) gerçekten de bölme işleminden kalan sayıyı
gösteriyor… Peki bu bilgi ne işimize yarar?</p>
<p>Mesela bu bilgiyi kullanarak bir sayının tek mi yoksa çift mi olduğunu tespit
edebiliriz:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="n">sayı</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">input</span><span class="p">(</span><span class="s2">"Bir sayı girin: "</span><span class="p">))</span>
<span class="k">if</span> <span class="n">sayı</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"Girdiğiniz sayı bir çift sayıdır."</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"Girdiğiniz sayı bir tek sayıdır."</span><span class="p">)</span>
</pre></div>
</div>
<p>Eğer bir sayı <cite>2</cite>’ye bölündüğünde kalan değer <cite>0</cite> ise o sayı çifttir. Aksi halde
o sayı tektir. Mesela:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="mi">14</span> <span class="o">%</span> <span class="mi">2</span>
<span class="go">0</span>
</pre></div>
</div>
<p>Gördüğünüz gibi, bir çift sayı olan <cite>14</cite>’ü <cite>2</cite>’ye böldüğümüzde kalan sayı <cite>0</cite>
oluyor. Çünkü çift sayılar <cite>2</cite>’ye tam bölünürler.</p>
<p>Bir de şuna bakalım:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="mi">15</span> <span class="o">%</span> <span class="mi">2</span>
<span class="go">1</span>
</pre></div>
</div>
<p>Bir tek sayı olan <cite>15</cite> ise <cite>2</cite>’ye bölündüğünde kalan sayı <cite>1</cite> oluyor. Yani <cite>15</cite>
sayısı <cite>2</cite>’ye tam bölünmüyor. Bu bilgiden yola çıkarak 15 sayısının bir tek sayı
olduğunu söyleyebiliyoruz.</p>
<p>Bir sayının tek mi yoksa çift mi olduğunu tespit etme işlemini küçümsememenizi
tavsiye ederim. Bir sayının tek mi yoksa çift mi olduğu bilgisinin, arayüz
geliştirirken dahi işinize yarayacağından emin olabilirsiniz.</p>
<p>Elbette modülüs işlecini bir sayının yalnızca <cite>2</cite>’ye tam bölünüp bölünmediğini
denetlemek için kullanmıyoruz. Bu işleci kullanarak herhangi bir sayının
herhangi bir sayıya tam bölünüp bölünmediğini de denetleyebilirsiniz. Örneğin:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="mi">45</span> <span class="o">%</span> <span class="mi">4</span>
<span class="go">1</span>
<span class="gp">>>> </span><span class="mi">36</span> <span class="o">%</span> <span class="mi">9</span>
<span class="go">0</span>
</pre></div>
</div>
<p>Bu bilgiyi kullanarak mesela şöyle bir program yazabilirsiniz:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="n">bölünen</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">input</span><span class="p">(</span><span class="s2">"Bir sayı girin: "</span><span class="p">))</span>
<span class="n">bölen</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">input</span><span class="p">(</span><span class="s2">"Bir sayı daha girin: "</span><span class="p">))</span>
<span class="n">şablon</span> <span class="o">=</span> <span class="s2">"</span><span class="si">{}</span><span class="s2"> sayısı </span><span class="si">{}</span><span class="s2"> sayısına tam"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">bölünen</span><span class="p">,</span> <span class="n">bölen</span><span class="p">)</span>
<span class="k">if</span> <span class="n">bölünen</span> <span class="o">%</span> <span class="n">bölen</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="n">şablon</span><span class="p">,</span> <span class="s2">"bölünüyor!"</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="n">şablon</span><span class="p">,</span> <span class="s2">"bölünmüyor!"</span><span class="p">)</span>
</pre></div>
</div>
<p>Programımız, kullanıcının girdiği ilk sayının ikinci sayıya tam bölünüp
bölünmediğini hesaplıyor ve sonuca göre kullanıcıyı bilgilendiriyor. Bu kodlarda
özellikle şu satıra dikkat edin:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="k">if</span> <span class="n">bölünen</span> <span class="o">%</span> <span class="n">bölen</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
<span class="o">...</span>
</pre></div>
</div>
<p>Programımızın temelini bu kod oluşturuyor. Çünkü bir sayının bir sayıya tam
bölünüp bölünmediğini bu kodla belirliyoruz. Eğer bir sayı başka bir sayıya
bölündüğünde kalan değer, yani modülüs <cite>0</cite> ise, o sayı öbür sayıya tam bölünüyor
demektir.</p>
<p>Ayrıca bir sayının son basamağını elde etmek için de modülüsten
yararlanabilirsiniz. Herhangi bir tamsayı <cite>10</cite>’a bölündüğünde kalan (yani
modülüs), bölünen sayının son basamağı olacaktır:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="mi">65</span> <span class="o">%</span> <span class="mi">10</span>
<span class="go">5</span>
<span class="gp">>>> </span><span class="mi">543</span> <span class="o">%</span> <span class="mi">10</span>
<span class="go">3</span>
</pre></div>
</div>
<p>Programlama tecrübeniz arttıkça, aslında modülüsün ne kadar faydalı bir araç
olduğunu kendi gözlerinizle göreceksiniz.</p>
<p>Modülüs işlecini örnekler eşliğinde ayrıntılı bir şekilde incelediğimize göre
sıra geldi taban bölme işlecini açıklamaya…</p>
<p>Öncelikle şu örneği inceleyelim:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="mi">5</span> <span class="o">/</span> <span class="mi">2</span>
<span class="go">2.5</span>
</pre></div>
</div>
<p>Burada, bildiğimiz bölme işlecini (<cite>/</cite>) kullanarak basit bir bölme işlemi
yaptık. Elde ettiğimiz sonuç doğal olarak <cite>2.5</cite>.</p>
<p>Matematikte bölme işleminin sonucunun kesirli olması durumuna ‘kesirli bölme’
adı verilir. Bunun tersi ise tamsayılı bölme veya taban bölmedir. Eğer herhangi
bir sebeple kesirli bölme işlemi değil de taban bölme işlemi yapmanız gerekirse
<cite>//</cite> işlecinden yararlanabilirsiniz:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="mi">5</span> <span class="o">//</span> <span class="mi">2</span>
<span class="go">2</span>
</pre></div>
</div>
<p>Gördüğünüz gibi, <cite>//</cite> işleci sayesinde bölme işleminin sonucu kesirli değil,
tamsayı olarak elde ediliyor.</p>
<p>Yukarıda yaptığımız taban bölme işlemi şununla aynı anlama gelir:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="nb">int</span><span class="p">(</span><span class="mi">5</span> <span class="o">/</span> <span class="mi">2</span><span class="p">)</span>
<span class="go">2</span>
</pre></div>
</div>
<p>Daha açık ifade etmemiz gerekirse:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">a</span> <span class="o">=</span> <span class="mi">5</span> <span class="o">/</span> <span class="mi">2</span>
<span class="gp">>>> </span><span class="n">a</span>
<span class="go">2.5</span>
<span class="gp">>>> </span><span class="nb">int</span><span class="p">(</span><span class="n">a</span><span class="p">)</span>
<span class="go">2</span>
</pre></div>
</div>
<p>Burada olan şu: <code class="docutils literal notranslate"><span class="pre">5</span> <span class="pre">/</span> <span class="pre">2</span></code> işleminin sonucu bir kayan noktalı sayıdır (<cite>2.5</cite>).
Bunu şu şekilde teyit edebiliriz:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">a</span> <span class="o">=</span> <span class="mi">5</span> <span class="o">/</span> <span class="mi">2</span>
<span class="gp">>>> </span><span class="nb">type</span><span class="p">(</span><span class="n">a</span><span class="p">)</span>
<span class="go"><class 'float'></span>
</pre></div>
</div>
<p>Buradaki <cite>float</cite> çıktısının <em>floating point number</em>, yani kayan noktalı sayı
anlamına geldiğini biliyorsunuz.</p>
<p>Bu kayan noktalı sayının sadece tabanını elde etmek için bu sayıyı tamsayıya
(<em>integer</em>) çevirmemiz yeterli olacaktır. Yani:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="nb">int</span><span class="p">(</span><span class="n">a</span><span class="p">)</span>
<span class="go">2</span>
</pre></div>
</div>
<p>Bu arada yeri gelmişken <code class="docutils literal notranslate"><span class="pre">round()</span></code> adlı bir gömülü fonksiyondan bahsetmeden
geçmeyelim. Eğer bir sayının değerini yuvarlamanız gerekirse <code class="docutils literal notranslate"><span class="pre">round()</span></code>
fonksiyonundan yararlanabilirsiniz. Bu fonksiyon şöyle kullanılır:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="nb">round</span><span class="p">(</span><span class="mf">2.55</span><span class="p">)</span>
<span class="go">3</span>
</pre></div>
</div>
<p>Gördüğünüz gibi, <code class="docutils literal notranslate"><span class="pre">round()</span></code> fonksiyonuna parametre olarak bir sayı veriyoruz.
Bu fonksiyon da bize o sayının yuvarlanmış halini döndürüyor. Bu fonksiyonu
kullanarak yuvarlanacak sayının noktadan sonraki hassasiyetini de
belirleyebilirsiniz. Örneğin:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="nb">round</span><span class="p">(</span><span class="mf">2.55</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="go">2.5</span>
</pre></div>
</div>
<p>Burada ikinci parametre olarak <cite>1</cite> sayısını verdiğimiz için, noktadan sonraki
bir basamak görüntüleniyor. Bir de şuna bakalım:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="nb">round</span><span class="p">(</span><span class="mf">2.68</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="go">2.7</span>
</pre></div>
</div>
<p>Burada da yuvarlama işlemi yapılırken noktadan sonra bir basamak korunuyor. Eğer
<cite>1</cite> sayısı yerine <cite>2</cite> sayısını kullanırsanız, yukarıdaki örnek şu çıktıyı
verir:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="nb">round</span><span class="p">(</span><span class="mf">2.68</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
<span class="go">2.68</span>
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">round()</span></code> fonksiyonunun çalışma prensibini anlamak için kendi kendinize
örnekler yapabilirsiniz.</p>
<p>Şimdiye kadar öğrendiğimiz ve yukarıdaki tabloda andığımız bir başka aritmetik
işleç de kuvvet işleci (<cite>**</cite>) idi. Mesela bu işleci kullanarak bir sayının
karesini hesaplayabileceğimizi biliyorsunuz:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="mi">25</span> <span class="o">**</span> <span class="mi">2</span>
<span class="go">625</span>
</pre></div>
</div>
<p>Bir sayının <cite>2.</cite> kuvveti o sayının karesidir. Bir sayının <cite>0.5.</cite> kuvveti ise o
sayının kareköküdür:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="mi">625</span> <span class="o">**</span> <span class="mf">0.5</span>
<span class="go">25.0</span>
</pre></div>
</div>
<p>Bu arada, eğer karekökün kayan noktalı sayı cinsinden olması hoşunuza
gitmediyse, bu sayıyı <code class="docutils literal notranslate"><span class="pre">int()</span></code> fonksiyonu ile tam sayıya çevirebileceğinizi
biliyorsunuz:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="nb">int</span><span class="p">(</span><span class="mi">625</span> <span class="o">**</span> <span class="mf">0.5</span><span class="p">)</span>
<span class="go">25</span>
</pre></div>
</div>
<p>Kuvvet hesaplamaları için <cite>**</cite> işlecinin yanısıra <code class="docutils literal notranslate"><span class="pre">pow()</span></code> adlı bir
fonksiyondan da yararlanabileceğimizi öğrenmiştik:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="nb">pow</span><span class="p">(</span><span class="mi">25</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
<span class="go">625</span>
</pre></div>
</div>
<p>Bildiğiniz gibi <code class="docutils literal notranslate"><span class="pre">pow()</span></code> fonksiyonu aslında toplam üç parametre alabiliyor:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="nb">pow</span><span class="p">(</span><span class="mi">25</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
<span class="go">0</span>
</pre></div>
</div>
<p>Bu işlemin şununla aynı anlama geliyor:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="p">(</span><span class="mi">25</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span> <span class="o">%</span> <span class="mi">5</span>
<span class="go">0</span>
</pre></div>
</div>
<p>Yani <code class="docutils literal notranslate"><span class="pre">pow(25,</span> <span class="pre">2,</span> <span class="pre">5)</span></code> gibi bir komut verdiğimizde, <cite>25</cite> sayısının <cite>2.</cite>
kuvvetini alıp, elde ettiğimiz sayının <cite>5</cite>’e bölünmesinden kalan sayıyı
hesaplamış oluyoruz.</p>
<p>Böylece aritmetik işleçleri tamamlamış olduk. Artık karşılaştırma işleçlerini
inceleyebiliriz.</p>
</div>
<div class="section" id="karsilastirma-islecleri">
<h2>Karşılaştırma İşleçleri<a class="headerlink" href="#karsilastirma-islecleri" title="Bu başlık için kalıcı bağlantı">¶</a></h2>
<p>Adından da anlaşılacağı gibi, karşılaştırma işleçleri, işlenenler (<em>operands</em>)
arasında bir karşılaştırma ilişkisi kuran işleçlerdir. Bu işleçleri şöyle
sıralayabiliriz:</p>
<blockquote>
<div><table class="docutils align-default">
<colgroup>
<col style="width: 17%" />
<col style="width: 83%" />
</colgroup>
<tbody>
<tr class="row-odd"><td><p><cite>==</cite></p></td>
<td><p>eşittir</p></td>
</tr>
<tr class="row-even"><td><p><cite>!=</cite></p></td>
<td><p>eşit değildir</p></td>
</tr>
<tr class="row-odd"><td><p><cite>></cite></p></td>
<td><p>büyüktür</p></td>
</tr>
<tr class="row-even"><td><p><cite><</cite></p></td>
<td><p>küçüktür</p></td>
</tr>
<tr class="row-odd"><td><p><cite>>=</cite></p></td>
<td><p>büyük eşittir</p></td>
</tr>
<tr class="row-even"><td><p><cite><=</cite></p></td>
<td><p>küçük eşittir</p></td>
</tr>
</tbody>
</table>
</div></blockquote>
<p>Bu işleçlerin hiçbiri size yabancı değil, zira bunların hepsini aslında daha
önceki derslerde verdiğimiz örneklerde kullanmıştık. Burada da bunlarla ilgili
basit bir örnek vererek yolumuza devam edelim:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="n">parola</span> <span class="o">=</span> <span class="s2">"xyz05"</span>
<span class="n">soru</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span><span class="s2">"parolanız: "</span><span class="p">)</span>
<span class="k">if</span> <span class="n">soru</span> <span class="o">==</span> <span class="n">parola</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"doğru parola!"</span><span class="p">)</span>
<span class="k">elif</span> <span class="n">soru</span> <span class="o">!=</span> <span class="n">parola</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"yanlış parola!"</span><span class="p">)</span>
</pre></div>
</div>
<p>Burada <cite>soru</cite> değişkeniyle kullanıcıdan alınan verinin, programın başında
tanımladığımız <cite>parola</cite> değişkeninin değerine eşit olup olmadığını sorguluyoruz.
Buna göre, eğer kullanıcıdan gelen veri parolayla eşleşiyorsa (<code class="docutils literal notranslate"><span class="pre">if</span> <span class="pre">soru</span> <span class="pre">==</span>
<span class="pre">parola</span></code>), kullanıcıyı parolanın doğru olduğu konusunda bilgilendiriyoruz
(<code class="docutils literal notranslate"><span class="pre">print("doğru</span> <span class="pre">parola!")</span></code>). Ama eğer kullanıcıdan gelen veri parolayla
eşleşmiyorsa (<code class="docutils literal notranslate"><span class="pre">elif</span> <span class="pre">soru</span> <span class="pre">!=</span> <span class="pre">parola</span></code>), o zaman da kullanıcıya parolanın yanlış
olduğunu bildiriyoruz (<code class="docutils literal notranslate"><span class="pre">print("yanlış</span> <span class="pre">parola!")</span></code>).</p>
<p>Yukarıdaki örnekte <cite>==</cite> (eşittir) ve <cite>!=</cite> (eşit değildir) işleçlerinin
kullanımını örneklendirdik. Öteki karşılaştırma işleçlerinin de nasıl
kullanıldığını biliyorsunuz. Basit bir örnek verelim:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="n">sayı</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span><span class="s2">"sayı: "</span><span class="p">)</span>
<span class="k">if</span> <span class="nb">int</span><span class="p">(</span><span class="n">sayı</span><span class="p">)</span> <span class="o"><=</span> <span class="mi">100</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"sayı 100 veya 100'den küçük"</span><span class="p">)</span>
<span class="k">elif</span> <span class="nb">int</span><span class="p">(</span><span class="n">sayı</span><span class="p">)</span> <span class="o">>=</span> <span class="mi">100</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"sayı 100 veya 100'den büyük"</span><span class="p">)</span>
</pre></div>
</div>
<p>Böylece karşılaştırma işleçlerini de incelemiş olduk. O halde gelelim bool
işleçlerine…</p>
</div>
<div class="section" id="bool-islecleri">
<h2>Bool İşleçleri<a class="headerlink" href="#bool-islecleri" title="Bu başlık için kalıcı bağlantı">¶</a></h2>
<p>Bu bölümde bool işleçlerinden söz edeceğiz, ancak bool işleçlerine geçmeden önce
biraz bool kavramından bahsetmemiz yerinde olacaktır.</p>
<p>Nedir bu bool denen şey?</p>
<p>Bilgisayar bilimi iki adet değer üzerine kuruludur: <cite>1</cite> ve <cite>0</cite>. Yani sırasıyla
<cite>True</cite> ve <cite>False</cite>. Bilgisayar biliminde herhangi bir şeyin değeri ya <cite>True</cite>, ya
da <cite>False</cite>’tur. İşte bu <cite>True</cite> ve <cite>False</cite> olarak ifade edilen değerlere bool
değerleri adı verilir (George Boole adlı İngiliz matematikçi ve filozofun
adından). Türkçe olarak söylemek gerekirse, <cite>True</cite> değerinin karşılığı <cite>Doğru</cite>,
<cite>False</cite> değerinin karşılığı ise <cite>Yanlış</cite>’tır.</p>
<p>Örneğin:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">a</span> <span class="o">=</span> <span class="mi">1</span>
</pre></div>
</div>
<p>Burada <cite>a</cite> adlı bir değişken tanımladık. Bu değişkenin değeri <cite>1</cite>. Şimdi bu
değişkenin değerini sorgulayalım:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">a</span> <span class="o">==</span> <span class="mi">1</span> <span class="c1">#a değeri 1'e eşit mi?</span>
<span class="go">True</span>
</pre></div>
</div>
<p>Gördüğünüz gibi, <cite>a == 1</cite> sorgusu <cite>True</cite> (Doğru) çıktısı veriyor. Çünkü <cite>a</cite>
değişkeninin değeri gerçekten de <cite>1</cite>. Bir de şunu deneyelim:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">a</span> <span class="o">==</span> <span class="mi">2</span>
<span class="go">False</span>
</pre></div>
</div>
<p>Burada da <cite>a</cite> değişkeninin değerinin <cite>2</cite> sayısına eşdeğer olup olmadığını
sorguladık. <cite>a</cite> değişkeninin değeri <cite>2</cite> olmadığı için de Python bize <cite>False</cite>
(Yanlış) çıktısı verdi.</p>
<p>Gördüğünüz gibi, bool işleçleri herhangi bir ifadenin doğruluğunu veya
yanlışlığını sorgulamak için kullanılabiliyor. Buna göre, eğer bir sorgulamanın
sonucu doğru ise <cite>True</cite>, eğer yanlış ise <cite>False</cite> çıktısı alıyoruz.</p>
<p>Bool işleçleri sadece yukarıda verdiğimiz örneklerdeki gibi, salt bir
doğruluk-yanlışlık sorgulamaya yarayan araçlar değildir. Bilgisayar biliminde
her şeyin bir bool değeri vardır. Bununla ilgili genel kuralımız şu: <cite>0</cite> değeri
ve boş veri tipleri <cite>False</cite>’tur. Bunlar dışında kalan her şey ise <cite>True</cite>’dur.</p>
<p>Bu durumu <code class="docutils literal notranslate"><span class="pre">bool()</span></code> adlı özel bir fonksiyondan yararlanarak teyit edebiliriz:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="nb">bool</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
<span class="go">True</span>
<span class="gp">>>> </span><span class="nb">bool</span><span class="p">(</span><span class="s2">"elma"</span><span class="p">)</span>
<span class="go">True</span>
<span class="gp">>>> </span><span class="nb">bool</span><span class="p">(</span><span class="s2">" "</span><span class="p">)</span>
<span class="go">True</span>
<span class="gp">>>> </span><span class="nb">bool</span><span class="p">(</span><span class="s2">" "</span><span class="p">)</span>
<span class="go">True</span>
<span class="gp">>>> </span><span class="nb">bool</span><span class="p">(</span><span class="s2">"fdsdfsdg"</span><span class="p">)</span>
<span class="go">True</span>
<span class="gp">>>> </span><span class="nb">bool</span><span class="p">(</span><span class="s2">"0"</span><span class="p">)</span>
<span class="go">True</span>
<span class="gp">>>> </span><span class="nb">bool</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<span class="go">False</span>
<span class="gp">>>> </span><span class="nb">bool</span><span class="p">(</span><span class="s2">""</span><span class="p">)</span>
<span class="go">False</span>
</pre></div>
</div>
<p>Gördüğünüz gibi, gerçekten de <cite>0</cite> sayısının ve boş karakter dizilerinin bool
değeri <cite>False</cite>’tur. Geri kalan her şey ise <cite>True</cite>’dur.</p>
<div class="admonition note">
<p class="admonition-title">Not</p>
<p><cite>0</cite>’ın bir sayı, <cite>“0”</cite>’ın ise bir karakter dizisi olduğunu unutmayın.
Sayı olan <cite>0</cite>’ın bool değeri <cite>False</cite>’tur, ama karakter dizisi olan <cite>“0”</cite>’ın
değeri <cite>True</cite>’dur.</p>
</div>
<p>Yukarıdaki örneklere göre, içinde herhangi bir değer barındıran karakter
dizileri (<cite>0</cite> hariç) <cite>True</cite> çıktısı veriyor. Burada söylediğimiz şey bütün veri
tipleri için geçerlidir. Eğer herhangi bir veri tipi herhangi bir değer
içermiyorsa o veri tipi <cite>False</cite> çıktısı verir.</p>
<p>Peki bu bilgi bizim ne işimize yarar? Yani mesela boş veri tiplerinin <cite>False</cite>,
içinde bir veri barındıran veri tiplerinin ise <cite>True</cite> olması bizim için neden bu
kadar önemli? Bunu birazdan açıklayacağız. Ama önce isterseniz, bool değerleri
ile ilgili çok önemli bir konuya değinelim.</p>
<p>Belki kendiniz de farketmişsinizdir; bool değerleri Python’da koşul belirten
<code class="docutils literal notranslate"><span class="pre">if</span></code>, <code class="docutils literal notranslate"><span class="pre">elif</span></code> ve <code class="docutils literal notranslate"><span class="pre">else</span></code> deyimlerinin de temelini oluşturur. Şu örneği ele
alalım mesela:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="n">isim</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span><span class="s2">"İsminiz: "</span><span class="p">)</span>
<span class="k">if</span> <span class="n">isim</span> <span class="o">==</span> <span class="s2">"Ferhat"</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"Ne güzel bir isim bu!"</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="n">isim</span><span class="p">,</span> <span class="s2">"ismini pek sevmem!"</span><span class="p">)</span>
</pre></div>
</div>
<p>Burada <code class="docutils literal notranslate"><span class="pre">if</span> <span class="pre">isim</span> <span class="pre">==</span> <span class="pre">"Ferhat"</span></code> dediğimizde, aslında Python’a şu emri vermiş
oluyoruz:</p>
<blockquote>
<div><p>Eğer <code class="docutils literal notranslate"><span class="pre">isim</span> <span class="pre">==</span> <span class="pre">"Ferhat"</span></code> ifadesi <cite>True</cite> ise…</p>
</div></blockquote>
<p>Bunu teyit etmek için şöyle bir kod yazabilirsiniz:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="n">isim</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span><span class="s2">"İsminiz: "</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">isim</span> <span class="o">==</span> <span class="s2">"Ferhat"</span><span class="p">)</span>
</pre></div>
</div>
<p>Eğer burada kullanıcı ‘Ferhat’ ismini girecek olursa programımız <cite>True</cite> çıktısı
verir. Ama eğer kullanıcı başka bir isim girerse bu kez <cite>False</cite> çıktısını
alırız. İşte koşul bildiren deyimler, karar verme görevini, kendilerine verilen
ifadelerin bool değerlerine bakarak yerine getirir. Dolayısıyla yukarıdaki
örneği şu şekilde Türkçeye çevirebiliriz:</p>
<blockquote>
<div><p>Eğer <code class="docutils literal notranslate"><span class="pre">isim</span> <span class="pre">==</span> <span class="pre">"Ferhat"</span></code> ifadesinin bool değeri <cite>True</cite> ise, <cite>Ne güzel bir
isim bu!</cite> çıktısı ver! Ama eğer <code class="docutils literal notranslate"><span class="pre">isim</span> <span class="pre">==</span> <span class="pre">"Ferhat"</span></code> ifadesinin bool değeri
<cite>True</cite> dışında herhangi bir şey ise (yani <cite>False</cite> ise), <cite>… ismini pek
sevmem!</cite> çıktısı ver!</p>
</div></blockquote>
<p>Koşul bildiren deyimlerle bool değerleri arasındaki ilişkiyi daha iyi anlamak
için bir örnek daha verelim:</p>
<p>Hatırlarsanız içi boş veri tiplerinin bool değerinin her zaman <cite>False</cite> olacağını
söylemiştik. Yani:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">a</span> <span class="o">=</span> <span class="s2">""</span>
<span class="gp">>>> </span><span class="nb">bool</span><span class="p">(</span><span class="n">a</span><span class="p">)</span>
<span class="go">False</span>
</pre></div>
</div>
<p>Herhangi bir değere sahip veri tiplerinin bool değeri ise her zaman <cite>True</cite> olur
(<cite>0</cite> hariç):</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">a</span> <span class="o">=</span> <span class="s2">"gdfg"</span>
<span class="gp">>>> </span><span class="nb">bool</span><span class="p">(</span><span class="n">a</span><span class="p">)</span>
<span class="go">True</span>
</pre></div>
</div>
<p>İçi boş veri tiplerinin bool değerinin her zaman <cite>False</cite> olacağı bilgisini
kullanarak şöyle bir uygulama yazabiliriz:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="n">kullanıcı</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span><span class="s2">"Kullanıcı adınız: "</span><span class="p">)</span>
<span class="k">if</span> <span class="nb">bool</span><span class="p">(</span><span class="n">kullanıcı</span><span class="p">)</span> <span class="o">==</span> <span class="kc">True</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"Teşekkürler!"</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"Kullanıcı adı alanı boş bırakılamaz!"</span><span class="p">)</span>
</pre></div>
</div>
<p>Burada şöyle bir emir verdik:</p>
<blockquote>
<div><p>“Eğer <cite>kullanıcı</cite> değişkeninin bool değeri <cite>True</cite> ise <cite>Teşekkürler!</cite> çıktısı
ver! Değilse <cite>Kullanıcı adı alanı boş bırakılamaz!</cite> uyarısını göster!</p>
</div></blockquote>
<p>Eğer kullanıcı, kullanıcı adına herhangi bir şey yazdıktan sonra <cite>Enter</cite> tuşuna
basarsa <cite>kullanıcı</cite> değişkeni, kullanıcının girdiği değeri gösterecek ve böylece
<code class="docutils literal notranslate"><span class="pre">bool(kullanıcı)</span></code> komutu <cite>True</cite> çıktısı verecektir. Bu sayede de kodlarımızın
içindeki <code class="docutils literal notranslate"><span class="pre">if</span></code> bloğu çalışmaya başlayacaktır.</p>
<p>Ama eğer kullanıcı, kullanıcı adını yazmadan <cite>Enter</cite> tuşuna basarsa, <cite>kullanıcı</cite>
değişkeni boş kalacağı için (yani <code class="docutils literal notranslate"><span class="pre">kullanıcı</span> <span class="pre">=</span> <span class="pre">""</span></code> gibi bir durum ortaya
çıkacağı için) <code class="docutils literal notranslate"><span class="pre">bool(kullanıcı)</span></code> komutu <cite>False</cite> çıktısı verecek ve böylece
<code class="docutils literal notranslate"><span class="pre">else</span></code> bloğu çalışacaktır.</p>
<p>Yalnız bu noktada şöyle bir uyarı yapalım. Yukarıdaki komutlar sözdizimi
açısından tamamen doğru olsa da, etrafta yukarıdakine benzer bir kullanımı pek
görmezsiniz. Aynı iş için genellikle şöyle bir şeyler yazılır:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="n">kullanıcı</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span><span class="s2">"Kullanıcı adınız: "</span><span class="p">)</span>
<span class="k">if</span> <span class="n">kullanıcı</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"Teşekkürler!"</span><span class="p">)</span>
</pre></div>
</div>
<p>Gördüğünüz gibi, <code class="docutils literal notranslate"><span class="pre">if</span> <span class="pre">bool(kullanıcı)</span> <span class="pre">==</span> <span class="pre">True:</span></code> kodunu <code class="docutils literal notranslate"><span class="pre">if</span> <span class="pre">kullanıcı:</span></code>
şeklinde kısaltabiliyoruz. Bu ikisi tamamen aynı anlama gelir. Yani ikisi de
‘kullanıcı değişkeninin bool değeri <cite>True</cite> ise…’ demektir.</p>
<p>Bool kavramına aşinalık kazandığımıza göre şimdi bool işleçlerini incelemeye
başlayabiliriz.</p>
<p>Bool işleçleri, bool değerlerinden birini elde etmemizi sağlayan işleçlerdir. Bu
işleçler şunlardır:</p>
<blockquote>
<div><p><cite>and</cite></p>
<p><cite>or</cite></p>
<p><cite>not</cite></p>
</div></blockquote>
<p>Eğer mantık dersleri aldıysanız bu işleçler size hiç yabancı gelmeyecektir. Eğer
lisede mantık dersleri almadıysanız veya aldığınız derslerden hiçbir şey
hatırlamıyorsanız, yine de ziyanı yok. Biz burada bu işleçleri bütün
ayrıntılarıyla inceleyeceğiz.</p>
<p>Önce <cite>and</cite> ile başlayalım…</p>
<p>Türkçe söylemek gerekirse <cite>and</cite> ‘ve’ anlamına gelir. Peki bu <cite>and</cite> ne işimize
yarar? Çok basit bir örnek verelim:</p>
<p>Hatırlarsanız geçen bölümde koşullu durumlara örnek verirken şöyle bir durumdan
bahsetmiştik:</p>
<blockquote>
<div><p>Diyelim ki Google’ın Gmail hizmeti aracılığıyla bir e.posta hesabı aldınız.
Bu hesaba gireceğiniz zaman Gmail size bir kullanıcı adı ve parola sorar.
Siz de kendinize ait kullanıcı adını ve parolayı sayfadaki kutucuklara
yazarsınız. Eğer yazdığınız kullanıcı adı ve parola doğruysa hesabınıza
erişebilirsiniz. Ama eğer kullanıcı adınız ve parolanız doğru değilse
hesabınıza erişemezsiniz. Yani e.posta hesabınıza erişmeniz, kullanıcı adı
ve parolayı doğru girme koşuluna bağlıdır.</p>
</div></blockquote>
<p>Burada çok önemli bir nokta var. Kullanıcının Gmail sistemine girebilmesi için
hem kullanıcı adını hem de parolayı doğru yazması gerekiyor. Yani kullanıcı adı
veya paroladan herhangi biri yanlış ise sisteme giriş mümkün olmayacaktır.</p>
<p>Yukarıdaki durumu taklit eden bir programı, şu ana kadar olan bilgilerimizi
kullanarak şöyle yazabiliyoruz:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="n">kullanıcı_adı</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span><span class="s2">"Kullanıcı adınız: "</span><span class="p">)</span>
<span class="n">parola</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span><span class="s2">"Parolanız: "</span><span class="p">)</span>
<span class="k">if</span> <span class="n">kullanıcı_adı</span> <span class="o">==</span> <span class="s2">"aliveli"</span><span class="p">:</span>
<span class="k">if</span> <span class="n">parola</span> <span class="o">==</span> <span class="s2">"12345678"</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"Programa hoşgeldiniz"</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"Yanlış kullanıcı adı veya parola!"</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"Yanlış kullanıcı adı veya parola!"</span><span class="p">)</span>
</pre></div>
</div>
<p>Burada yeni bir bilgiyle daha karşılaşıyoruz. Gördüğünüz gibi, burada <code class="docutils literal notranslate"><span class="pre">if</span></code>
deyimlerini iç içe kullandık. Python’da istediğiniz kadar iç içe geçmiş <code class="docutils literal notranslate"><span class="pre">if</span></code>
deyimi kullanabilirsiniz. Ancak yazdığınız bir programda eğer üçten fazla iç içe
<code class="docutils literal notranslate"><span class="pre">if</span></code> deyimi kullandıysanız, benimsediğiniz yöntemi yeniden gözden geçirmenizi
tavsiye ederim. Çünkü iç içe geçmiş <code class="docutils literal notranslate"><span class="pre">if</span></code> deyimleri bir süre sonra anlaşılması
güç bir kod yapısı ortaya çıkarabilir. Neyse… Biz konumuza dönelim.</p>
<p>Yukarıdaki yazdığımız programda kullanıcının sisteme giriş yapabilmesi için hem
kullanıcı adını hem de parolayı doğru girmesi gerekiyor. Kullanıcı adı ve
paroladan herhangi biri yanlışsa sisteme girişe izin verilmiyor. Ancak
yukarıdaki yöntem dolambaçlıdır. Halbuki aynı işlevi yerine getirmenin,
Python’da çok daha kolay bir yolu var. Bakalım:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="n">kullanıcı_adı</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span><span class="s2">"Kullanıcı adınız: "</span><span class="p">)</span>
<span class="n">parola</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span><span class="s2">"Parolanız: "</span><span class="p">)</span>
<span class="k">if</span> <span class="n">kullanıcı_adı</span> <span class="o">==</span> <span class="s2">"aliveli"</span> <span class="ow">and</span> <span class="n">parola</span> <span class="o">==</span> <span class="s2">"12345678"</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"Programa hoşgeldiniz"</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"Yanlış kullanıcı adı veya parola!"</span><span class="p">)</span>
</pre></div>
</div>
<p>Burada <cite>and</cite> işlecini nasıl kullandığımızı görüyorsunuz. Bu işleci kullanarak
iki farklı ifadeyi birbirine bağladık. Böylece kullanıcının sisteme girişini hem
kullanıcı adının hem de parolanın doğru olması koşuluna dayandırdık.</p>
<p>Peki <cite>and</cite> işlecinin çalışma mantığı nedir? Dediğim gibi, <cite>and</cite> Türkçede ‘ve’
anlamına geliyor. Bu işleci daha iyi anlayabilmek için şu cümleler arasındaki
farkı düşünün:</p>
<blockquote>
<div><ol class="loweralpha simple">
<li><p>Toplantıya Ali ve Veli katılacak.</p></li>
<li><p>Toplantıya Ali veya Veli katılacak.</p></li>
</ol>
</div></blockquote>
<p>İlk cümlede ‘ve’ bağlacı kullanıldığı için, bu cümlenin gereğinin yerine
getirilebilmesi, hem Ali’nin hem de Veli’nin toplantıya katılmasına bağlıdır.
Sadece Ali veya sadece Veli’nin toplantıya katılması durumunda bu cümlenin
gereği yerine getirilememiş olacaktır.</p>
<p>İkinci cümlede ise toplantıya Ali ve Veli’den herhangi birisinin katılması
yeterlidir. Toplantıya sadece Ali’nin katılması, sadece Veli’nin katılması veya
her ikisinin birden katılması, bu cümlenin gereğinin yerine getirilebilmesi
açısından yeterlidir.</p>
<p>İşte Python’daki <cite>and</cite> işleci de aynı bu şekilde işler. Şu örneklere bir
bakalım:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">a</span> <span class="o">=</span> <span class="mi">23</span>
<span class="gp">>>> </span><span class="n">b</span> <span class="o">=</span> <span class="mi">10</span>
<span class="gp">>>> </span><span class="n">a</span> <span class="o">==</span> <span class="mi">23</span>
<span class="go">True</span>
<span class="gp">>>> </span><span class="n">b</span> <span class="o">==</span> <span class="mi">10</span>
<span class="go">True</span>
<span class="gp">>>> </span><span class="n">a</span> <span class="o">==</span> <span class="mi">23</span> <span class="ow">and</span> <span class="n">b</span> <span class="o">==</span> <span class="mi">10</span>
<span class="go">True</span>
</pre></div>
</div>
<p>Burada değeri <cite>23</cite> olan bir adet <cite>a</cite> değişkeni ve değeri <cite>10</cite> olan bir adet <cite>b</cite>
değişkeni tanımladık. Daha sonra bu iki değişkenin değerini tek tek sorguladık
ve bunların gerçekten de sırasıyla 23 ve 10 sayısına eşit olduğunu gördük. Son
olarak da bunları <cite>and</cite> işleci ile birbirine bağlayarak sorguladık. <cite>a</cite>
değişkeninin değeri 23, <cite>b</cite> değişkeninin değeri de 10 olduğu için, yani <cite>and</cite>
ile bağlanan her iki önerme de <cite>True</cite> çıktısı verdiği için <code class="docutils literal notranslate"><span class="pre">a</span> <span class="pre">==</span> <span class="pre">23</span> <span class="pre">and</span> <span class="pre">b</span> <span class="pre">==</span>
<span class="pre">10</span></code> ifadesi <cite>True</cite> değeri verdi.</p>
<p>Bir de şuna bakalım:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">a</span> <span class="o">=</span> <span class="mi">23</span>
<span class="gp">>>> </span><span class="n">b</span> <span class="o">=</span> <span class="mi">10</span>
<span class="gp">>>> </span><span class="n">a</span> <span class="o">==</span> <span class="mi">23</span>
<span class="go">True</span>
<span class="gp">>>> </span><span class="n">b</span> <span class="o">==</span> <span class="mi">54</span>
<span class="go">False</span>
<span class="gp">>>> </span><span class="n">a</span> <span class="o">==</span> <span class="mi">23</span> <span class="ow">and</span> <span class="n">b</span> <span class="o">==</span> <span class="mi">54</span>
<span class="go">False</span>
</pre></div>
</div>
<p>Burada ise <cite>a</cite> değişkenin değeri <cite>23</cite>’tür. Dolayısıyla <code class="docutils literal notranslate"><span class="pre">a</span> <span class="pre">==</span> <span class="pre">23</span></code> ifadesi
<cite>True</cite> çıktısı verir. Ancak <cite>b</cite> değişkeninin değeri <cite>54</cite> değildir. O yüzden de
<code class="docutils literal notranslate"><span class="pre">b</span> <span class="pre">==</span> <span class="pre">54</span></code> komutu <cite>False</cite> çıktısı verir. Gördüğünüz gibi, <cite>and</cite> işleci ile
bağlanan önermelerden herhangi biri <cite>False</cite> olduğunda çıktımız da <cite>False</cite>
oluyor. Unutmayın: <cite>and</cite> işlecinin <cite>True</cite> çıktısı verebilmesi için bu işleç
tarafından bağlanan her iki önermenin de <cite>True</cite> olması gerekir. Eğer
önermelerden biri bile <cite>True</cite> değilse çıktı da <cite>True</cite> olmayacaktır.</p>
<p>Tahmin edebileceğiniz gibi, <cite>and</cite> işleci en yaygın <code class="docutils literal notranslate"><span class="pre">if</span></code> deyimleriyle birlikte
kullanılır. Mesela yukarıda kullanıcıdan kullanıcı adı ve parola alırken de bu
<cite>and</cite> işlecinden yararlanmıştık.</p>
<p>Gelelim <cite>or</cite> işlecine…</p>
<p>Tıpkı <cite>and</cite> gibi bir bool işleci olan <cite>or</cite>’un Türkçede karşılığı ‘veya’dır.
Yukarıda ‘Toplantıya Ali veya Veli katılacak.’ cümlesini tartışırken aslında bu
<cite>or</cite> kelimesinin anlamını açıklamıştık. Hatırlarsanız <cite>and</cite> işlecinin <cite>True</cite>
çıktısı verebilmesi için bu işleçle bağlanan bütün önermelerin <cite>True</cite> değerine
sahip olması gerekiyordu. <cite>or</cite> işlecinin <cite>True</cite> çıktısı verebilmesi için ise
<cite>or</cite> işleciyle bağlanan önermelerden herhangi birinin <cite>True</cite> çıktısı vermesi
yeterli olacaktır. Söylediğimiz bu şeyleri birkaç örnek üzerinde
somutlaştıralım:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">a</span> <span class="o">=</span> <span class="mi">23</span>
<span class="gp">>>> </span><span class="n">b</span> <span class="o">=</span> <span class="mi">10</span>
<span class="gp">>>> </span><span class="n">a</span> <span class="o">==</span> <span class="mi">23</span>
<span class="go">True</span>
<span class="gp">>>> </span><span class="n">b</span> <span class="o">==</span> <span class="mi">10</span>
<span class="go">True</span>
<span class="gp">>>> </span><span class="n">a</span> <span class="o">==</span> <span class="mi">11</span>
<span class="go">False</span>
<span class="gp">>>> </span><span class="n">a</span> <span class="o">==</span> <span class="mi">11</span> <span class="ow">or</span> <span class="n">b</span> <span class="o">==</span> <span class="mi">10</span>
<span class="go">True</span>
</pre></div>
</div>
<p>Gördüğünüz gibi, <code class="docutils literal notranslate"><span class="pre">a</span> <span class="pre">==</span> <span class="pre">11</span></code> ifadesinin bool değeri <cite>False</cite> olduğu halde, <code class="docutils literal notranslate"><span class="pre">b</span> <span class="pre">==</span>
<span class="pre">10</span></code> ifadesinin bool değeri <cite>True</cite> olduğu için <code class="docutils literal notranslate"><span class="pre">a</span> <span class="pre">==</span> <span class="pre">11</span> <span class="pre">or</span> <span class="pre">b</span> <span class="pre">==</span> <span class="pre">10</span></code> ifadesi
<cite>True</cite> değerini veriyor.</p>
<p><cite>and</cite> ve <cite>or</cite> işleçlerini öğrendiğimize göre, bir sınavdan alınan notların harf
karşılıklarını gösteren bir uygulama yazabiliriz:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="n">x</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">input</span><span class="p">(</span><span class="s2">"Notunuz: "</span><span class="p">))</span>
<span class="k">if</span> <span class="n">x</span> <span class="o">></span> <span class="mi">100</span> <span class="ow">or</span> <span class="n">x</span> <span class="o"><</span> <span class="mi">0</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"Böyle bir not yok"</span><span class="p">)</span>
<span class="k">elif</span> <span class="n">x</span> <span class="o">>=</span> <span class="mi">90</span> <span class="ow">and</span> <span class="n">x</span> <span class="o"><=</span> <span class="mi">100</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"A aldınız."</span><span class="p">)</span>
<span class="k">elif</span> <span class="n">x</span> <span class="o">>=</span> <span class="mi">80</span> <span class="ow">and</span> <span class="n">x</span> <span class="o"><=</span> <span class="mi">89</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"B aldınız."</span><span class="p">)</span>
<span class="k">elif</span> <span class="n">x</span> <span class="o">>=</span> <span class="mi">70</span> <span class="ow">and</span> <span class="n">x</span> <span class="o"><=</span> <span class="mi">79</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"C aldınız."</span><span class="p">)</span>
<span class="k">elif</span> <span class="n">x</span> <span class="o">>=</span> <span class="mi">60</span> <span class="ow">and</span> <span class="n">x</span> <span class="o"><=</span> <span class="mi">69</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"D aldınız."</span><span class="p">)</span>
<span class="k">elif</span> <span class="n">x</span> <span class="o">>=</span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">x</span> <span class="o"><=</span> <span class="mi">59</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"F aldınız."</span><span class="p">)</span>
</pre></div>
</div>
<p>Bu programda eğer kullanıcı <cite>100</cite>’den büyük ya da <cite>0</cite>’dan küçük bir sayı girerse
<cite>Böyle bir not yok</cite> uyarısı alacaktır. 0-100 arası notlarda ise, her bir not
aralığına karşılık gelen harf görüntülecektir. Eğer isterseniz yukarıdaki
kodları şu şekilde de kısaltabilirsiniz:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="n">x</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">input</span><span class="p">(</span><span class="s2">"Notunuz: "</span><span class="p">))</span>
<span class="k">if</span> <span class="n">x</span> <span class="o">></span> <span class="mi">100</span> <span class="ow">or</span> <span class="n">x</span> <span class="o"><</span> <span class="mi">0</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"Böyle bir not yok"</span><span class="p">)</span>
<span class="k">elif</span> <span class="n">x</span> <span class="o">>=</span> <span class="mi">90</span> <span class="o"><=</span> <span class="mi">100</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"A aldınız."</span><span class="p">)</span>
<span class="k">elif</span> <span class="n">x</span> <span class="o">>=</span> <span class="mi">80</span> <span class="o"><=</span> <span class="mi">89</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"B aldınız."</span><span class="p">)</span>
<span class="k">elif</span> <span class="n">x</span> <span class="o">>=</span> <span class="mi">70</span> <span class="o"><=</span> <span class="mi">79</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"C aldınız."</span><span class="p">)</span>
<span class="k">elif</span> <span class="n">x</span> <span class="o">>=</span> <span class="mi">60</span> <span class="o"><=</span> <span class="mi">69</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"D aldınız."</span><span class="p">)</span>
<span class="k">elif</span> <span class="n">x</span> <span class="o">>=</span> <span class="mi">0</span> <span class="o"><=</span> <span class="mi">59</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"F aldınız."</span><span class="p">)</span>
</pre></div>
</div>
<p>Gördüğünüz gibi, <code class="docutils literal notranslate"><span class="pre">and</span> <span class="pre">x</span></code> kısımlarını çıkardığımızda da bir önceki kodlarla
aynı anlamı yakalayabiliyoruz.</p>
<p>Hatta yukarıdaki kodları şöyle de yazabilirsiniz:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="n">x</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">input</span><span class="p">(</span><span class="s2">"Notunuz: "</span><span class="p">))</span>
<span class="k">if</span> <span class="n">x</span> <span class="o">></span> <span class="mi">100</span> <span class="ow">or</span> <span class="n">x</span> <span class="o"><</span> <span class="mi">0</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"Böyle bir not yok"</span><span class="p">)</span>
<span class="c1">#90 sayısı x'ten küçük veya x'e eşit,</span>
<span class="c1">#x sayısı 100'den küçük veya 100'e eşit ise,</span>
<span class="c1">#Yani x, 90 ile 100 arasında bir sayı ise</span>
<span class="k">elif</span> <span class="mi">90</span> <span class="o"><=</span> <span class="n">x</span> <span class="o"><=</span> <span class="mi">100</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"A aldınız."</span><span class="p">)</span>
<span class="c1">#80 sayısı x'ten küçük veya x'e eşit,</span>
<span class="c1">#x sayısı 89'dan küçük veya 89'a eşit ise,</span>
<span class="c1">#Yani x, 80 ile 89 arasında bir sayı ise</span>
<span class="k">elif</span> <span class="mi">80</span> <span class="o"><=</span> <span class="n">x</span> <span class="o"><=</span> <span class="mi">89</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"B aldınız."</span><span class="p">)</span>
<span class="k">elif</span> <span class="mi">70</span> <span class="o"><=</span> <span class="n">x</span> <span class="o"><=</span> <span class="mi">79</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"C aldınız."</span><span class="p">)</span>
<span class="k">elif</span> <span class="mi">60</span> <span class="o"><=</span> <span class="n">x</span> <span class="o"><=</span> <span class="mi">69</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"D aldınız."</span><span class="p">)</span>
<span class="k">elif</span> <span class="mi">0</span> <span class="o"><=</span> <span class="n">x</span> <span class="o"><=</span> <span class="mi">59</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"F aldınız."</span><span class="p">)</span>
</pre></div>
</div>
<p>Bu kodlar bir öncekiyle aynı işi yapar. Yorumlardan da göreceğiniz gibi, bu iki
kod arasında sadece mantık farkı var.</p>
<p>Son bool işlecimiz <cite>not</cite>. Bu kelimenin İngilizce’deki anlamı ‘değil’dir. Bu
işleci şöyle kullanıyoruz:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">a</span> <span class="o">=</span> <span class="mi">23</span>
<span class="gp">>>> </span><span class="ow">not</span> <span class="n">a</span>
<span class="go">False</span>
<span class="gp">>>> </span><span class="n">a</span> <span class="o">=</span> <span class="s2">""</span>
<span class="gp">>>> </span><span class="ow">not</span> <span class="n">a</span>
<span class="go">True</span>
</pre></div>
</div>
<p>Bu işleç, özellikle kullanıcı tarafından bir değişkene veri girilip
girilmediğini denetlemek için kullanılabilir. Örneğin:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="n">parola</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span><span class="s2">"parola: "</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">parola</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"Parola boş bırakılamaz!"</span><span class="p">)</span>
</pre></div>
</div>
<p>Eğer kullanıcı herhangi bir parola belirlemeden doğrudan <cite>Enter</cite> tuşuna basacak
olursa <cite>parola</cite> değişkeninin değeri boş bir karakter dizisi olacaktır. Yani
<code class="docutils literal notranslate"><span class="pre">parola</span> <span class="pre">=</span> <span class="pre">""</span></code>. Boş veri tiplerinin bool değerinin <cite>False</cite> olacağını biliyoruz.
Dolayısıyla, yukarıdaki gibi bir örnekte, kullanıcı parolayı boş geçtiğinde
<code class="docutils literal notranslate"><span class="pre">not</span> <span class="pre">parola</span></code> kodu <cite>True</cite> verecek ve böylece ekrana <cite>“Parola boş bırakılamaz!”</cite>
karakter dizisi yazdırılacaktır. Eğer yukarıdaki örneğin mantığını kavramakta
zorluk çekiyorsanız şu örnekleri incelemenizi öneririm:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">parola</span> <span class="o">=</span> <span class="s2">""</span>
<span class="gp">>>> </span><span class="nb">bool</span><span class="p">(</span><span class="n">parola</span><span class="p">)</span>
<span class="go">False</span>
<span class="gp">>>> </span><span class="nb">bool</span><span class="p">(</span><span class="ow">not</span> <span class="n">parola</span><span class="p">)</span>
<span class="go">True</span>
<span class="gp">>>> </span><span class="n">parola</span> <span class="o">=</span> <span class="s2">"1243"</span>
<span class="gp">>>> </span><span class="nb">bool</span><span class="p">(</span><span class="n">parola</span><span class="p">)</span>
<span class="go">True</span>
<span class="gp">>>> </span><span class="nb">bool</span><span class="p">(</span><span class="ow">not</span> <span class="n">parola</span><span class="p">)</span>
<span class="go">False</span>
</pre></div>
</div>
<p>Aslında yukarıdaki örneklerde şuna benzer sorular sormuş gibi oluyoruz:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">parola</span> <span class="o">=</span> <span class="s2">""</span>
<span class="gp">>>> </span><span class="nb">bool</span><span class="p">(</span><span class="n">parola</span><span class="p">)</span> <span class="c1">#parola boş bırakılmamış, değil mi?</span>
<span class="gp">>>> </span><span class="kc">False</span> <span class="c1">#Hayır, parola boş bırakılmış.</span>
<span class="gp">>>> </span><span class="nb">bool</span><span class="p">(</span><span class="ow">not</span> <span class="n">parola</span><span class="p">)</span> <span class="c1">#parola boş bırakılmış, değil mi?</span>
<span class="gp">>>> </span><span class="kc">True</span> <span class="c1">#Evet, parola boş bırakılmış</span>
</pre></div>
</div>
<p>Kendi kendinize pratik yaparak bu işlecin görevini daha iyi anlayabilirsiniz.</p>
<p>Böylece kısmen çetrefilli bir konu olan bool işleçlerini de geride bırakmış
olduk. Sırada değer atama işleçleri var.</p>
</div>
<div class="section" id="deger-atama-islecleri">
<h2>Değer Atama İşleçleri<a class="headerlink" href="#deger-atama-islecleri" title="Bu başlık için kalıcı bağlantı">¶</a></h2>
<p>Bu noktaya kadar yaptığımız çalışmalarda sadece tek bir değer atama işleci
gördük. Bu işleç <cite>=</cite> işlecidir. Adından da anlaşılacağı gibi, bu işlecin görevi
bir değişkene değer atamaktır. Mesela:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">a</span> <span class="o">=</span> <span class="mi">23</span>
</pre></div>
</div>
<p>Burada <cite>=</cite> işleci <cite>a</cite> değişkenine <cite>23</cite> değerini atama işlevi görüyor.</p>
<p>Python’daki tek değer atama işleci elbette <cite>=</cite> değildir. Bunun dışında başka
değer atama işleçleri de bulunur. Tek tek inceleyelim:</p>
<p><strong>+= işleci</strong></p>
<p>Bu işlecin ne işe yaradığını anlamak için şöyle bir örnek düşünün:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">a</span> <span class="o">=</span> <span class="mi">23</span>
</pre></div>
</div>
<p><cite>a</cite> değerine mesela <cite>5</cite> ekleyip bu değeri <cite>28</cite>’e eşitlemek için ne yapmamız
lazım? Tabii ki şunu:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">a</span> <span class="o">=</span> <span class="n">a</span> <span class="o">+</span> <span class="mi">5</span>
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">a</span><span class="p">)</span>