forked from yazbel/python-istihza
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgelistirme_ortami.html
527 lines (491 loc) · 38.3 KB
/
gelistirme_ortami.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
<!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, program geliştirme işlerimiz için nasıl uygun bir ortam hazırlayacağımızı öğreneceğiz" name="description" />
<meta content="Python, çalışma ortamı tavsiyesi, Windows, GNU/Linux, metin düzenleyici" name="keywords" />
<title>Çalışma Ortamı Tavsiyesi — 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="Yorum ve Açıklama Cümleleri" href="yorum.html" />
<link rel="prev" title="Programları Kaydetme ve Çalıştırma" href="kaydetme_ve_calistirma.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="yorum.html" title="Yorum ve Açıklama Cümleleri"
accesskey="N">sonraki</a></li>
<li class="right" >
<a href="kaydetme_ve_calistirma.html" title="Programları Kaydetme ve Çalıştırma"
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="">Çalışma Ortamı Tavsiyesi</a></li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="body" role="main">
<div class="section" id="calisma-ortami-tavsiyesi">
<h1>Çalışma Ortamı Tavsiyesi<a class="headerlink" href="#calisma-ortami-tavsiyesi" title="Bu başlık için kalıcı bağlantı">¶</a></h1>
<p>Bu bölümde, Python programları geliştirirken rahat bir çalışma ortamı elde
edebilmek için yapmanız gerekenleri sıralayacağız. Öncelikle Windows
kullanıcılarından başlayalım.</p>
<div class="section" id="windows-kullanicilari">
<h2>Windows Kullanıcıları<a class="headerlink" href="#windows-kullanicilari" title="Bu başlık için kalıcı bağlantı">¶</a></h2>
<p>Windows’ta bir Python programı yazıp kaydettikten sonra bu programı komut
satırından çalıştırabilmek için, MS-DOS’u açıp, öncelikle <code class="docutils literal notranslate"><span class="pre">cd</span></code> komutuyla
programın bulunduğu dizine ulaşmamız gerekir. İlgili dizine ulaştıktan sonra
programımızı <code class="docutils literal notranslate"><span class="pre">python</span> <span class="pre">program_adı</span></code> komutuyla çalıştırabiliriz. Ancak bir süre
sonra, programı çalıştırmak için her defasında programın bulunduğu dizine
ulaşmaya çalışmak sıkıcı bir hal alacaktır. Ama bu konuda çaresiz değiliz.</p>
<p>Windows 7, istediğimiz dizin altında bir MS-DOS ekranı açabilmemiz için bize çok
güzel bir kolaylık sunuyor. Normal şartlar altında mesela masaüstünde bir MS-DOS
ekranı açabilmek için şu yolu izlemeniz gerekiyor:</p>
<ol class="arabic simple">
<li><p>Windows logolu tuşa ve <cite>R</cite> tuşuna birlikte bas,</p></li>
<li><p>Açılan pencereye <code class="docutils literal notranslate"><span class="pre">cmd</span></code> yazıp <cite>Enter</cite> düğmesine bas,</p></li>
<li><p>Bu şekilde ulaştığın MS-DOS ekranında <code class="docutils literal notranslate"><span class="pre">cd</span> <span class="pre">Desktop</span></code> komutunu ver.</p></li>
</ol>
<p>Bu üç adımla, MS-DOS ekranı üzerinden masaüstüne ulaşmış oluyoruz. Ama aslında
bunun çok daha kolay bir yolu var: Masaüstüne sağ tıklarken <cite>Shift</cite> tuşunu da
basılı tutarsanız, sağ-tık menüsünde ‘Komut penceresini burada aç’ adlı bir
satır görürsünüz. İşte bu satıra tıklayarak, MS-DOS komut satırını tek harekette
masaüstü konumunda çalıştırabilirsiniz. Elbette bu özellik sadece masaüstü için
değil, bütün konumlar için geçerlidir. Yani bilgisayarınızda herhangi bir yere
sağ tıklarken <cite>Shift</cite> tuşunu da basılı tutarak o konumda bir MS-DOS penceresi
açabilirsiniz.</p>
<p>Ayrıca, herhangi bir klasör açıkken dosya tarayıcısının adres çubuğuna <code class="docutils literal notranslate"><span class="pre">cmd</span></code>
yazıp <cite>Enter</cite> düğmesine basarak da, o klasörün bulunduğu konumda bir komut
ekranı açabilirsiniz. Örneğin eğer o anda önünüzde ‘İndirilenler’ (veya
‘Karşıdan Yüklenenler’) dizini açıksa, adres çubuğuna (aşağıdaki resimde kırmızı
ile gösterilen bölge) <code class="docutils literal notranslate"><span class="pre">cmd</span></code> yazarak <cite>C:\Users\Kullanıcı\Downloads></cite>
konumunda bir komut ekranı açabilirsiniz.</p>
<div class="figure align-center">
<img alt="_images/explorer.png" src="_images/explorer.png" />
</div>
<p>İkinci olarak, çalışma kolaylığı açısından Windows’ta dosya uzantılarının her
zaman görünmesini sağlamanızı da tavsiye ederim. Windows ilk kurulduğunda hiçbir
dosyanın uzantısı görünmez. Yani mesela <cite>deneme.txt</cite> adlı bir dosya Windows ilk
kurulduğunda <cite>deneme</cite> şeklinde görünecektir. Bu durumda, bir dosyanın uzantısını
değiştirmek istediğinizde bazı sıkıntılar yaşarsınız. Örneğin, masaüstünde bir
metin dosyası oluşturduğunuzu varsayalım. Diyelim ki amacınız bu dosyanın içine
bir şeyler yazıp daha sonra mesela bu dosyanın uzantısını <cite>.bat</cite> veya <cite>.py</cite>
yapmak olsun. Böyle bir durumda, dosya uzantılarını göremediğiniz için, metin
dosyasının uzantısını değiştirmeye çalıştığınızda <cite>deneme.bat.txt</cite> gibi bir
dosya adı elde edebilirsiniz. Tabii ki bu dosya bir <cite>.bat</cite> dosyası değil, bir
<cite>.txt</cite>, yani metin dosyasıdır. Dolayısıyla aslında dosya uzantısını
değiştirememiş oluyorsunuz.</p>
<p>Yukarıdaki nedenlerden ötürü, ben size şu yolu takip ederek dosya uzantılarını
her zaman görünür hale getirmenizi öneririm:</p>
<ol class="arabic simple">
<li><p><em>Başlat > Denetim Masası</em> yolunu takip ederek denetim masasına ulaşın,</p></li>
<li><p>Denetim masasında ‘Görünüm ve Kişiselleştirme’ seçeneğine tıklayın,</p></li>
<li><p>Açılan menünün sağ tarafında ‘Klasör Seçenekleri’ satırına tıklayın,</p></li>
<li><p>Açılan pencerede ‘Görünüm’ sekmesine tıklayın,</p></li>
<li><p>‘Gelişmiş Ayarlar’ listesinde ‘Bilinen dosya türleri için uzantıları gizle’
seçeneğinin yanındaki onay işaretini kaldırın,</p></li>
<li><p><cite>Uygula</cite> ve <cite>Tamam</cite> düğmelerine basarak bütün pencereleri kapatın,</p></li>
<li><p>Artık bütün dosyalarınızın uzantısı da görüneceği için, uzantı değiştirme
işlemlerini çok daha kolay bir şekilde halledebilirsiniz.</p></li>
</ol>
</div>
<div class="section" id="gnu-linux-kullanicilari">
<h2>GNU/Linux Kullanıcıları<a class="headerlink" href="#gnu-linux-kullanicilari" title="Bu başlık için kalıcı bağlantı">¶</a></h2>
<p>Eğer KDE temelli bir GNU/Linux dağıtımı kullanıyorsanız, yazıp kaydettiğiniz
Python programını barındıran dizin açıkken <cite>F4</cite> tuşuna bastığınızda, komut
satırı o dizin altında açılacaktır.</p>
<p>Unity ve GNOME kullanıcılarının ise benzer bir kolaylığa ulaşmak için
nautilus-open-terminal adlı betiği sistemlerine kurmaları gerekiyor. Eğer Ubuntu
kullanıyorsanız bu betiği şu komutla kurabilirsiniz:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">get</span> <span class="n">install</span> <span class="n">nautilus</span><span class="o">-</span><span class="nb">open</span><span class="o">-</span><span class="n">terminal</span>
</pre></div>
</div>
<p>Bu betiği kurduktan sonra bilgisayarınızı yeniden başlatın veya şu komutu
verin:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="n">killall</span> <span class="n">nautilus</span>
</pre></div>
</div>
<p>Artık komut satırını hangi dizin altında başlatmak istiyorsanız o dizine sağ
tıklayın. Menüler arasında <em>Open in Terminal</em> [Uçbirimde aç] adlı bir seçenek
göreceksiniz. Buna tıkladığınızda o dizin altında bir komut satırı penceresi
açılacaktır.</p>
</div>
<div class="section" id="metin-duzenleyici-ayarlari">
<h2>Metin Düzenleyici Ayarları<a class="headerlink" href="#metin-duzenleyici-ayarlari" title="Bu başlık için kalıcı bağlantı">¶</a></h2>
<p>Daha önce de söylediğimiz gibi, Python ile program yazmak için istediğiniz metin
düzenleyiciyi kullanabilirsiniz. Ama kodlarınızın kusursuz görünmesi ve hatasız
çalışması için kullandığınız metin düzenleyicide birtakım ayarlamalar yapmanız
gerekir. İşte bu bölümde bu ayarların neler olduğunu göstereceğiz.</p>
<p>Eğer programlarınızı IDLE ile yazıyorsanız aslında bir şey yapmanıza gerek yok.
IDLE Python ile program yazmak üzere tasarlanmış bir düzenleyici olduğu için bu
programın bütün ayarları Python ile uyumludur. Ama eğer IDLE dışında bir metin
düzenleyici kullanıyorsanız bu düzenleyicide temel olarak şu ayarları yapmanız
gerekir:</p>
<ol class="arabic simple">
<li><p>Sekme genişliğini [<em>TAB width</em>] 4 olarak ayarlayın.</p></li>
<li><p>Girinti genişliğini [<em>Indent width</em>] 4 olarak ayarlayın.</p></li>
<li><p>Girintilemede sekme yerine boşluk kullanmayı tercih edin [<em>Use spaces instead
of tabs</em>]</p></li>
<li><p>Tercih edilen kodlama biçimini [<em>Preferred encoding</em>] utf-8 olarak ayarlayın.</p></li>
</ol>
<p>Özellikle son söylediğimiz ‘kodlama biçimi’ ayarı çok önemlidir. Bu ayarın
yanlış olması halinde, yazdığınız programı çalıştırmak istediğinizde şöyle bir
hata alabilirsiniz:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="ne">SyntaxError</span><span class="p">:</span> <span class="n">Non</span><span class="o">-</span><span class="n">UTF</span><span class="o">-</span><span class="mi">8</span> <span class="n">code</span> <span class="n">starting</span> <span class="k">with</span> <span class="s1">'</span><span class="se">\xfe</span><span class="s1">'</span> <span class="ow">in</span> <span class="n">file</span> <span class="n">deneme</span><span class="o">.</span><span class="n">py</span> <span class="n">on</span> <span class="n">line</span> <span class="mi">1</span><span class="p">,</span>
<span class="n">but</span> <span class="n">no</span> <span class="n">encoding</span> <span class="n">declared</span><span class="p">;</span> <span class="n">see</span> <span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">python</span><span class="o">.</span><span class="n">org</span><span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">peps</span><span class="o">/</span><span class="n">pep</span><span class="o">-</span><span class="mi">0263</span><span class="o">/</span> <span class="k">for</span> <span class="n">details</span>
</pre></div>
</div>
<p>Eğer yazdığınız bir program böyle bir hata mesajı üretiyorsa, ilk olarak metin
düzenleyicinizin kodlama biçimi (<em>encoding</em>) ayarlarını kontrol edin. Metin
düzenleyiciler genellikle tercih edilen kodlama biçimini aşağıdaki örnek resimde
görüldüğü gibi, durum çubuğunda sürekli olarak gösterir.</p>
<a class="reference internal image-reference" href="_images/utf-8.png"><img alt="_images/utf-8.png" class="align-center" src="_images/utf-8.png" style="width: 65%;" /></a>
<p>Ancak kodlama biçimi doğru bir şekilde utf-8 olarak ayarlanmış metin
düzenleyicilerde, özellikle internet üzerinden kod kopyalanıp yapıştırılması
sırasında bu ayar siz farkında olmadan değişebilir. Böyle bir durumda da program
çalışırken yukarıda bahsedilen hatayı alabilirsiniz. Dolayısıyla, programınızı
yazdığınız metin düzenleyicinin kodlama ayarlarının siz farkında olmadan değişme
ihtimaline karşı uyanık olmanız gerekir.</p>
<p>Elbette piyasada yüzlerce metin düzenleyici olduğu için yukarıda bahsedilen
ayarların her metin düzenleyicide nasıl yapılacağını tek tek göstermemiz mümkün
değil. Ancak iyi bir metin düzenleyicide yukarıdaki ayarların hepsi bulunur. Tek
yapmanız gereken, bu ayarların, kullandığınız metin düzenleyicide nereden
yapıldığını bulmak. Eğer kullandığınız metin düzenleyiciyi ayarlamakta
zorlanıyorsanız, her zamanki gibi <a class="reference external" href="https://forum.yazbel.com/">yazbel</a> adresinde sıkıntınızı dile getirebilirsiniz.</p>
<p>‘Kodlama biçimi’ kavramından söz etmişken, Python’la ilgili önemli bir konuya
daha değinelim. En başta da söylediğimiz gibi, şu anda piyasada Python iki
farklı seri halinde geliştiriliyor. Bunlardan birinin 2.x serisi, öbürünün de
3.x serisi olduğunu biliyoruz. Python’ın 2.x serisinde Türkçe karakterlerin
gösterimi ile ilgili çok ciddi problemler vardı. Örneğin Python’ın 2.x serisinde
şöyle bir kod yazamıyorduk:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="nb">print</span><span class="p">(</span><span class="s2">"Günaydın Şirin Baba!"</span><span class="p">)</span>
</pre></div>
</div>
<p>Bu kodu bir dosyaya kaydedip, Python’ın 2.x serisine ait bir sürümle çalıştırmak
istediğimizde Python bize şöyle bir hata mesajı veriyordu:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="ne">SyntaxError</span><span class="p">:</span> <span class="n">Non</span><span class="o">-</span><span class="n">ASCII</span> <span class="n">character</span> <span class="s1">'</span><span class="se">\xc3</span><span class="s1">'</span> <span class="ow">in</span> <span class="n">file</span>
<span class="n">test</span><span class="o">.</span><span class="n">py</span> <span class="n">on</span> <span class="n">line</span> <span class="mi">1</span><span class="p">,</span> <span class="n">but</span> <span class="n">no</span> <span class="n">encoding</span> <span class="n">declared</span><span class="p">;</span>
<span class="n">see</span> <span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">www</span><span class="o">.</span><span class="n">python</span><span class="o">.</span><span class="n">org</span><span class="o">/</span><span class="n">peps</span><span class="o">/</span><span class="n">pep</span><span class="o">-</span><span class="mf">0263.</span><span class="n">html</span> <span class="k">for</span> <span class="n">details</span>
</pre></div>
</div>
<p>Bunun sebebi, Python’ın 2.x sürümlerinde <cite>ASCII</cite> adlı kodlama biçiminin
kullanılıyor olmasıdır. Zaten hata mesajına baktığımızda da, Python’ın ASCII
olmayan karakterlerin varlığından şikayet ettiğini görüyoruz.</p>
<p>Yukarıdaki kodların çalışabilmesi için programımıza şöyle bir ekleme yapmamız
gerekiyordu:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># -*- coding: utf-8 -*-</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"Günaydın Şirin Baba!"</span><span class="p">)</span>
</pre></div>
</div>
<p>Buradaki ilk satıra dikkat edin. Bu kodlarla yaptığımız şey, Python’ın <cite>ASCII</cite>
adlı kodlama biçimi yerine <cite>UTF-8</cite> adlı kodlama biçimini kullanmasını
sağlamaktır. <cite>ASCII</cite> adlı kodlama biçimi Türkçe karakterleri gösteremez, ama
<cite>UTF-8</cite> adlı kodlama biçimi Türkçe karakterleri çok rahat bir şekilde
gösterebilir.</p>
<div class="admonition note">
<p class="admonition-title">Not</p>
<p>Kodlama biçimlerinden, ileride ayrıntılı bir şekilde söz edeceğiz. O
yüzden bu anlattıklarımızda eğer anlamadığınız yerler olursa bunlara takılmanıza
gerek yok.</p>
</div>
<p>Python’ın 3.x serisinin gelişi ile birlikte Python’da öntanımlı olarak <cite>ASCII</cite>
yerine <cite>UTF-8</cite> kodlama biçimi kullanılmaya başlandı. Dolayısıyla yazdığımız
programlara <code class="docutils literal notranslate"><span class="pre">#</span> <span class="pre">-*-</span> <span class="pre">coding:</span> <span class="pre">utf-8</span> <span class="pre">-*-</span></code> satırını eklememize gerek kalmadı. Çünkü
zaten Python <cite>UTF-8</cite> kodlama biçimini öntanımlı olarak kendisi kullanıyor. Ama
eğer <cite>UTF-8</cite> dışında başka bir kodlama biçimine ihtiyaç duyarsanız yine bu
satırdan yararlanabilirsiniz.</p>
<p>Örneğin GNU/Linux dağıtımlarının geleneksel olarak UTF-8 kodlama biçimi ile
arası iyidir. Dolayısıyla eğer GNU/Linux üzerinde Python programları
geliştiriyorsanız bu satırı hiç yazmadan bir ömür geçirebilirsiniz. Ama Windows
işletim sistemleri <cite>UTF-8</cite>’i desteklemekle birlikte, bu destek GNU/Linux’taki
kadar iyi değildir. Dolayısıyla zaman zaman Windows’ta <cite>UTF-8</cite> dışında başka bir
kodlama biçimini kullanmanız gerekebilir. Örneğin yazdığınız bir programda
Türkçe karakterleri göremiyorsanız, programınızın ilk satırını şöyle
düzenleyebilirsiniz:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># -*- coding: cp1254 -*-</span>
</pre></div>
</div>
<p>Burada <cite>UTF-8</cite> yerine <cite>cp1254</cite> adlı kodlama biçimini kullanmış oluyoruz. Windows
işletim sisteminde <cite>cp1254</cite> adlı kodlama biçimi <cite>UTF-8</cite>’e kıyasla daha fazla
desteklenir.</p>
</div>
<div class="section" id="ms-dos-komut-satiri-ayarlari">
<h2>MS-DOS Komut Satırı Ayarları<a class="headerlink" href="#ms-dos-komut-satiri-ayarlari" title="Bu başlık için kalıcı bağlantı">¶</a></h2>
<p>Eğer yukarıda anlattığımız bütün ayarları doğru bir şekilde yapmanıza rağmen,
özellikle MS-DOS komut satırında hala Türkçe karakterleri düzgün
görüntüleyemiyorsanız, kullandığınız Windows sürümünün komut satırı, öntanımlı
olarak Türkçe karakterleri gösteremeyen bir yazı tipine ayarlanmış olabilir.
Dolayısıyla Türkçe karakterleri gösterebilmek için öncelikle uygun bir yazı tipi
seçmeniz gerekir. Bunun için şu basamakları takip ediyoruz:</p>
<ol class="arabic simple">
<li><p>Komut satırını açıyoruz,</p></li>
<li><p>Açılan pencerenin başlık çubuğuna sağ tıklayarak, ‘özellikler’ menüsüne
giriyoruz,</p></li>
<li><p>‘Yazı tipi’ sekmesinde yazı tipi olarak ‘Lucida Console’u (veya varsa
‘Consolas’ı) seçiyoruz,</p></li>
<li><p>‘Tamam’ düğmesine basıyoruz.</p></li>
<li><p>Eğer önünüze bir onay penceresi açılırsa, ‘Özellikleri aynı başlıkla ileride
oluşturulacak pencereler için kaydet’ seçeneğini işaretleyip ‘Tamam’a bastıktan
sonra çıkıyoruz.</p></li>
<li><p>Bu işlemin nasıl yapılacağını gösteren bir videoyu
<a class="reference external" href="http://media.istihza.com/videos/ms-dos.swf">http://media.istihza.com/videos/ms-dos.swf</a> adresinden izleyebilirsiniz.</p></li>
</ol>
<p>Böylece MS-DOS komut satırı için Türkçe karakterleri gösterebilen bir yazı tipi
belirlemiş olduk. Ancak bu, Türkçe karakterleri düzgün görüntülemeye
yetmeyebilir. Eğer Türkçe karakterler hala düzgün görünmüyorsa, kullandığınız
sistemde MS-DOS’un dil kodlaması Türkçe karakterleri görüntülemeye uygun
olmayabilir. Türkçe karakterleri gösterebilen bir dil kodlaması belirlemek için
komut satırında şu komutu verin:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="n">chcp</span> <span class="mi">1254</span>
</pre></div>
</div>
<p><cite>CP1254</cite>, Türkçe karakterleri de içeren bir dil kodlamasıdır. Bu komutu
verdikten sonra artık Türkçe karakterleri düzgün görüntüleyebiliyor olmanız
lazım.</p>
</div>
<div class="section" id="program-ornekleri">
<h2>Program Örnekleri<a class="headerlink" href="#program-ornekleri" title="Bu başlık için kalıcı bağlantı">¶</a></h2>
<p>Yukarıda Python ve programlamaya ilişkin pek çok teknik bilgi verdik. Bunları
öğrenmemiz, işlerimizi kuru kuruya ezberleyerek değil, anlayarak yapmamızı
sağlaması açısından büyük önem taşıyordu. Ancak yukarıda pratiğe yönelik pek bir
şey sunamadık. İşte bu bölümde pratik eksikliğimizi biraz olsun kapamaya dönük
örnekler yapacağız.</p>
<p>Hatırlarsanız Python’la tanışmamızı sağlayan ilk örneğimiz ekrana basit bir
<cite>“Merhaba Zalim Dünya!”</cite> cümlesi yazdırmaktı. Bu ilk örneği etkileşimli kabukta
verdiğimizi hatırlıyorsunuz:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="s2">"Merhaba Zalim Dünya!"</span>
</pre></div>
</div>
<p>Ama artık programlarımızı dosyaya kaydetmeyi öğrendiğimize göre bu kodları
etkileşimli kabuğa yazmak yerine bir dosyaya yazmayı tercih edebiliriz. Bu
sayede yazdığımız kodlar kalıcılık kazanacaktır.</p>
<p>Hemen bir deneme yapalım. Boş bir metin belgesi açıp oraya şu satırı yazalım:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="s2">"Merhaba Zalim Dünya!"</span>
</pre></div>
</div>
<p>Şimdi de bu dosyayı daha önce anlattığımız şekilde masaüstüne <cite>deneme.py</cite> adıyla
kaydedip programımızı çalıştıralım.</p>
<p>Ne oldu? Programınız hiçbir çıktı vermeden kapandı, değil mi?</p>
<p>Hemen hatırlayacağınız gibi, <code class="docutils literal notranslate"><span class="pre">print()</span></code> fonksiyonu içine alınmayan ifadelerin
ekrana çıktı olarak verilebilmesi sadece etkileşimli kabuğa özgü bir durumdur.
Programlarımızı dosyadan çalıştırırken, <code class="docutils literal notranslate"><span class="pre">print()</span></code> fonksiyonu içine alınmayan
ifadeler ekranda görünmeyecektir. Yukarıdaki örnek bu durumun bir göstergesidir.
Dolayısıyla yukarıdaki ifadenin ekrana çıktı olarak verilebilmesi için o kodu
şöyle yazmamız gerekiyor:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="nb">print</span><span class="p">(</span><span class="s2">"Merhaba Zalim Dünya!"</span><span class="p">)</span>
</pre></div>
</div>
<p>Programınızı bu şekilde tekrar çalıştırdığınızda şöyle bir çıktı alıyoruz:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span>Merhaba Zalim Dünya!
</pre></div>
</div>
<p>Bu oldukça basit bir örnekti. Şimdi biraz daha karmaşık bir örnek verelim.</p>
<p>Yine hatırlayacağınız gibi, önceki bölümlerden birinde aylık yol masrafımızı
hesaplayan bir program yazmıştık.</p>
<p>Orada elimizdeki verilerin şunlar olduğunu varsaymıştık:</p>
<ol class="arabic simple">
<li><p>Cumartesi-Pazar günleri çalışmıyoruz.</p></li>
<li><p>Dolayısıyla ayda <cite>22</cite> gün çalışıyoruz.</p></li>
<li><p>Evden işe gitmek için kullandığımız vasıtanın ücreti <cite>1.5</cite> TL</p></li>
<li><p>İşten eve dönmek için kullandığımız vasıtanın ücreti <cite>1.4</cite> TL</p></li>
</ol>
<p>Elimizdeki bu bilgilere göre aylık yol masrafımızı hesaplamak için de şöyle bir
formül üretmiştik:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="n">masraf</span> <span class="o">=</span> <span class="n">gün</span> <span class="n">sayısı</span> <span class="n">x</span> <span class="p">(</span><span class="n">gidiş</span> <span class="n">ücreti</span> <span class="o">+</span> <span class="n">dönüş</span> <span class="n">ücreti</span><span class="p">)</span>
</pre></div>
</div>
<p>Gelin şimdi yukarıdaki bilgileri kullanarak programımızı dosyaya yazalım:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="n">gün</span> <span class="o">=</span> <span class="mi">22</span>
<span class="n">gidiş_ücreti</span> <span class="o">=</span> <span class="mf">1.5</span>
<span class="n">dönüş_ücreti</span> <span class="o">=</span> <span class="mf">1.4</span>
<span class="n">masraf</span> <span class="o">=</span> <span class="n">gün</span> <span class="o">*</span> <span class="p">(</span><span class="n">gidiş_ücreti</span> <span class="o">+</span> <span class="n">dönüş_ücreti</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">masraf</span><span class="p">)</span>
</pre></div>
</div>
<p>Tıpkı öncekiler gibi, bu programı da masaüstüne <cite>deneme.py</cite> adıyla kaydedelim ve
komut satırında masaüstünün bulunduğu konuma giderek <code class="docutils literal notranslate"><span class="pre">python3</span> <span class="pre">deneme.py</span></code>
komutuyla programımızı çalıştıralım. Programı çalıştırdığımızda şöyle bir çıktı
alıyoruz:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="mf">63.8</span>
</pre></div>
</div>
<p>Programımız gayet düzgün çalışıyor. Ancak gördüğünüz gibi, elde ettiğimiz çıktı
çok yavan. Ama eğer isterseniz yukarıdaki programa daha profesyonel bir görünüm
de kazandırabilirsiniz. Dikkatlice inceleyin:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="n">gün</span> <span class="o">=</span> <span class="mi">22</span>
<span class="n">gidiş_ücreti</span> <span class="o">=</span> <span class="mf">1.5</span>
<span class="n">dönüş_ücreti</span> <span class="o">=</span> <span class="mf">1.4</span>
<span class="n">masraf</span> <span class="o">=</span> <span class="n">gün</span> <span class="o">*</span> <span class="p">(</span><span class="n">gidiş_ücreti</span> <span class="o">+</span> <span class="n">dönüş_ücreti</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"-"</span><span class="o">*</span><span class="mi">30</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"çalışılan gün sayısı</span><span class="se">\t</span><span class="s2">:"</span><span class="p">,</span> <span class="n">gün</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"işe gidiş ücreti</span><span class="se">\t</span><span class="s2">:"</span><span class="p">,</span> <span class="n">gidiş_ücreti</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"işten dönüş ücreti</span><span class="se">\t</span><span class="s2">:"</span><span class="p">,</span> <span class="n">dönüş_ücreti</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"-"</span><span class="o">*</span><span class="mi">30</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"AYLIK YOL MASRAFI</span><span class="se">\t</span><span class="s2">:"</span><span class="p">,</span> <span class="n">masraf</span><span class="p">)</span>
</pre></div>
</div>
<p>Bu defa programımız şöyle bir çıktı verdi:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="o">------------------------------</span>
<span class="n">çalışılan</span> <span class="n">gün</span> <span class="n">sayısı</span> <span class="p">:</span> <span class="mi">22</span>
<span class="n">işe</span> <span class="n">gidiş</span> <span class="n">ücreti</span> <span class="p">:</span> <span class="mf">1.5</span>
<span class="n">işten</span> <span class="n">dönüş</span> <span class="n">ücreti</span> <span class="p">:</span> <span class="mf">1.4</span>
<span class="o">------------------------------</span>
<span class="n">AYLIK</span> <span class="n">YOL</span> <span class="n">MASRAFI</span> <span class="p">:</span> <span class="mf">63.8</span>
</pre></div>
</div>
<p>Gördüğünüz gibi, bu kodlar sayesinde kullanıcıya daha ayrıntılı bilgi vermiş
olduk. Üstelik elde ettiğimiz çıktı daha şık görünüyor.</p>
<p>Yukarıdaki kodlarda şimdiye kadar öğrenmediğimiz hiçbir şey yok. Yukarıdaki
kodların tamamını anlayabilecek kadar Python bilgimiz var. Bu kodlarda çok basit
parçaları bir araya getirerek istediğimiz çıktıyı nasıl elde ettiğimizi
dikkatlice inceleyin. Mesela elde etmek istediğimiz çıktının görünüşünü
güzelleştirmek için iki yerde şu satırı kullandık:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="nb">print</span><span class="p">(</span><span class="s2">"-"</span><span class="o">*</span><span class="mi">30</span><span class="p">)</span>
</pre></div>
</div>
<p>Böylece <cite>30</cite> adet <cite>-</cite> işaretini yan yana basmış olduk. Bu sayede elde ettiğimiz
çıktı daha derli toplu bir görünüme kavuştu. Ayrıca kodlarımız içinde <cite>\t</cite> adlı
kaçış dizisinden de yararlandık. Böylelikle ekrana basılan çıktılar alt alta
düzgün bir şekilde hizalanmış oldu.</p>
<p>Bu arada, yukarıdaki kodlar sayesinde değişken kullanımının işlerimizi ne kadar
kolaylaştırdığına da birebir tanık olduk. Eğer değişkenler olmasaydı yukarıdaki
kodları şöyle yazacaktık:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="nb">print</span><span class="p">(</span><span class="s2">"-"</span><span class="o">*</span><span class="mi">30</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"çalışılan gün sayısı</span><span class="se">\t</span><span class="s2">:"</span><span class="p">,</span> <span class="mi">22</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"işe gidiş ücreti</span><span class="se">\t</span><span class="s2">:"</span><span class="p">,</span> <span class="mf">1.5</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"işten dönüş ücreti</span><span class="se">\t</span><span class="s2">:"</span><span class="p">,</span> <span class="mf">1.4</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"-"</span><span class="o">*</span><span class="mi">30</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"AYLIK YOL MASRAFI</span><span class="se">\t</span><span class="s2">:"</span><span class="p">,</span> <span class="mi">22</span> <span class="o">*</span> <span class="p">(</span><span class="mf">1.5</span> <span class="o">+</span> <span class="mf">1.4</span><span class="p">))</span>
</pre></div>
</div>
<p>Eğer günün birinde mesela çalışılan gün sayısı değişirse yukarıdaki kodların iki
farklı yerinde değişiklik yapmamız gerekecekti. Bu kodların çok büyük bir
programın parçası olduğunu düşünün. Kodların içinde değer arayıp bunları tek tek
değiştirmeye kalkışmanın ne kadar hataya açık bir yöntem olduğunu tahmin
edebilirsiniz. Ama değişkenler sayesinde, sadece tek bir yerde değişiklik
yaparak kodlarımızı güncel tutabiliriz. Mesela çalışılan gün sayısı <cite>20</cite>’ye
düşmüş olsun:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="n">gün</span> <span class="o">=</span> <span class="mi">20</span>
<span class="n">gidiş_ücreti</span> <span class="o">=</span> <span class="mf">1.5</span>
<span class="n">dönüş_ücreti</span> <span class="o">=</span> <span class="mf">1.4</span>
<span class="n">masraf</span> <span class="o">=</span> <span class="n">gün</span> <span class="o">*</span> <span class="p">(</span><span class="n">gidiş_ücreti</span> <span class="o">+</span> <span class="n">dönüş_ücreti</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"-"</span><span class="o">*</span><span class="mi">30</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"çalışılan gün sayısı</span><span class="se">\t</span><span class="s2">:"</span><span class="p">,</span> <span class="n">gün</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"işe gidiş ücreti</span><span class="se">\t</span><span class="s2">:"</span><span class="p">,</span> <span class="n">gidiş_ücreti</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"işten dönüş ücreti</span><span class="se">\t</span><span class="s2">:"</span><span class="p">,</span> <span class="n">dönüş_ücreti</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"-"</span><span class="o">*</span><span class="mi">30</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"AYLIK YOL MASRAFI</span><span class="se">\t</span><span class="s2">:"</span><span class="p">,</span> <span class="n">masraf</span><span class="p">)</span>
</pre></div>
</div>
<p>Gördüğünüz gibi, sadece en baştaki <cite>gün</cite> adlı değişkenin değerini değiştirerek
istediğimiz sonucu elde ettik.</p>
<p>Kendiniz isterseniz yukarıdaki örnekleri çeşitlendirebilirsiniz.</p>
<p>Gördüğünüz gibi, Python’da az da olsa işe yarar bir şeyler yazabilmek için çok
şey bilmemize gerek yok. Sırf şu ana kadar öğrendiklerimizi kullanarak bile ufak
tefek programlar yazabiliyoruz.</p>
</div>
</div>
<div class='glyph'><a href='https://yazbel.com'>♣</a></div>
<div class='extrarelbar'>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Gezinti</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="yorum.html" title="Yorum ve Açıklama Cümleleri"
>sonraki</a></li>
<li class="right" >
<a href="kaydetme_ve_calistirma.html" title="Programları Kaydetme ve Çalıştırma"
>önceki</a> |</li>
<li class="nav-item nav-item-0"><a href=".">⌂</a></li>
<li class="nav-item nav-item-this"><a href="">Çalışma Ortamı Tavsiyesi</a></li>
</ul>
</div> </div>
<div class='addcomment'>Yorumlar</div>
<div class='how-to-use'>
<h3>Önemli Not</h3>
Eğer yazdığınız yorum içinde kod kullanacaksanız, kodlarınızı
<span class='tag'><pre><code></span> etiketleri içine alın. Örneğin:
<pre>
<span class='tag'><pre><code class="python"></span>
<span class='keyword'>print</span>(<span class='string'>"Merhaba Dünya!"</span>)
<span class='tag'></code></pre></span>
</pre>
</div>
<div id="disqus_thread"></div>
<script type="text/javascript">
/* * * CONFIGURATION VARIABLES * * */
var disqus_shortname = 'istihza';
/* * * DON'T EDIT BELOW THIS LINE * * */
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a></noscript>
<script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-4eca48eb2d83faf9" async="async"></script>
<div class="clearer"></div>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Gezinti</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="yorum.html" title="Yorum ve Açıklama Cümleleri"
>sonraki</a></li>
<li class="right" >
<a href="kaydetme_ve_calistirma.html" title="Programları Kaydetme ve Çalıştırma"
>önceki</a> |</li>
<li class="nav-item nav-item-0"><a href=".">⌂</a></li>
<li class="nav-item nav-item-this"><a href="">Çalışma Ortamı Tavsiyesi</a></li>
</ul>
</div>
<div class="footer">
© Copyright 2007-2020, Fırat Özgül | <a href="https://yazbel.com">yazbel.com</a>.
Son güncelleme: 08.08.2020.
<a href="http://sphinx-doc.org/">Sphinx</a> 3.2.0 kullanılarak oluşturuldu.
<br>
<br>
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img
alt="Creative Commons License" style="border-width:0"
src="https://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" /></a><br />
<br>
</div>
<!-- Start of StatCounter Code for Default Guide -->
<script type="text/javascript">
var sc_project=10396326;
var sc_invisible=1;
var sc_security="fb5cd679";
var scJsHost = (("https:" == document.location.protocol) ?
"https://secure." : "http://www.");
document.write("<sc"+"ript type='text/javascript' src='" +
scJsHost+
"statcounter.com/counter/counter.js'></"+"script>");
</script>
<noscript><div class="statcounter"><a title="hit counter"
href="http://statcounter.com/" target="_blank"><img
class="statcounter"
src="http://c.statcounter.com/10396326/0/fb5cd679/1/"
alt="hit counter"></a></div></noscript>
<!-- End of StatCounter Code for Default Guide -->
</body>
</html>