http___programarcadegames.com_index.php_chapter_python_as_calculator_lang_tr_2.xml
1.1 2.1 3.1 3.2 3.3 4.1 4.2 4.3 5.1 6.1 6.2 7.1 7.2 7.3 7.4 8.1 9.1 10.1 10.2 11.1 11.2 12.1 13.1 13.2 13.3 13.4 14.1 15.1 15.2 16.1 17.1 17.2 17.3 17.4 18.1 18.2 18.3 19.1 19.2 20.1 21.1 21.2 22.1 22.2 22.3 22.4 22.5 22.6 23.1 24.1 24.2 24.3 25.1 26.1 26.2 27.1 27.2 27.3 27.4 27.5 27.6 28.1 29.1 29.2 30.1 31.1 32.1 33.1 33.2 34.1 34.2 34.3 34.4 34.5 34.6 34.7 34.8 34.9 34.10 34.11 34.12 34.13 34.14 35.1 36.1 36.2 36.3 37.1 38.1 38.2 38.3 39.1 40.1 40.2 41.1 42.1 43.1 44.1 44.2 45.1 46.1 47.1 48.1 48.2 48.3 48.4 48.5 48.6 48.7 49.1 50.1 51.1 52.1 53.1 54.1 54.2 55.1 56.1 57.1 58.1 59.1 60.1 61.1 62.1 63.1 64.1 65.1
Program Arcade GamesWith Python And Pygame Chapter 18: Exceptions When something goes wrong with your program, do you want to keep the user from seeing a red Python error message? Do you want to keep your program from hanging? If so, then you need exceptions. Exceptions are used to handle abnormal conditions that can occur during the execution of code. Exceptions are often used with file and network operations. This allows code to gracefully handle running out of disk space, network errors, or permission errors. 18.1 Vocabulary There are several terms and phrases used while working with exceptions. Here are the most common: - Exception: This term could mean one of two things. First, the condition that results in abnormal program flow. Or it could be used to refer to an object that represents the data condition. Each exception has an object that holds information about it. - Exception handling: The process of handling an exception to normal program flow. - Catch block or exception block: Code that handles an abnormal condition is said to “catch” the exception. - Throw or raise: When an abnormal condition to the program flow has been detected, an instance of an exception object is created. It is then “thrown” or “raised” to code that will catch it. - Unhandled exception or Uncaught exception: An exception that is thrown, but never caught. This usually results in an error and the program ending or crashing. - Try block: A set of code that might have an exception thrown in it. Most programming languages use the terms “throw” and “catch.” Unfortunately Python doesn't. Python uses “raise” and “exception.” We introduce the throw/catch vocabulary here because they are the most prevalent terms in the industry. 18.2 Exception Handling The code for handling exceptions is simple. See the example below: # Divide by zero try: x = 5 / 0 except: print("Error dividing by zero") On line two is the try statement. Every indented line below it is part of the “try block.” There may be no unindented code below the try block that doesn't start with an except statement. The try statement defines a section of code that the code will attempt to execute. If there is any exception that occurs during the processing of the code the execution will immediately jump to the “catch block.” That block of code is indented under the except statement on line 4. This code is responsible for handling the error. A program may use exceptions to catch errors that occur during a conversion from text to a number. For example: # Invalid number conversion try: x = int("fred") except: print("Error converting fred to a number") An exception will be thrown on line 3 because “fred” can not be converted to an integer. The code on line 5 will print out an error message. Below is an expanded version on this example. It error-checks a user's input to make sure an integer is entered. If the user doesn't enter an integer, the program will keep asking for one. The code uses exception handling to capture a possible conversion error that can occur on line 5. If the user enters something other than an integer, an exception is thrown when the conversion to a number occurs on line 5. The code on line 6 that sets number_entered to True will not be run if there is an exception on line 5. number_entered = False while not number_entered: number_string = input("Enter an integer: ") try: n = int(number_string) number_entered = True except: print("Error, invalid integer") Files are particularly prone to errors during operations with them. A disk could fill up, a user could delete a file while it is being written, it could be moved, or a USB drive could be pulled out mid-operation. These types of errors may also be easily captured by using exception handling. # Error opening file try: my_file = open("myfile.txt") except: print("Error opening file") Multiple types of errors may be captured and processed differently. It can be useful to provide a more exact error message to the user than a simple “an error has occurred.” In the code below, different types of errors can occur from lines 5-8. By placing IOError after except on line 9, only errors regarding Input and Output (IO) will be handled by that code. Likewise line 11 only handles errors around converting values, and line 13 covers division by zero errors. The last exception handling occurs on line 15. Since line 15 does not include a particular type of error, it will handle any error not covered by the except blocks above. The “catch-all” except must always be last. Line 1 imports the sys library which is used on line 16 to print the type of error that has occurred. import sys # Multiple errors try: my_file = open("myfile.txt") my_line = my_file.readline() my_int = int(s.strip()) my_calculated_value = 101 / my_int except IOError: print("I/O error") except ValueError: print("Could not convert data to an integer.") except ZeroDivisionError: print("Division by zero error") except: print("Unexpected error:", sys.exc_info()[0]) A list of built-in exceptions is available from this web address: http://docs.python.org/library/exceptions.html 18.3 Example: Saving High Score This shows how to save a high score between games. The score is stored in a file called high_score.txt. """ Show how to use exceptions to save a high score for a game. Sample Python/Pygame Programs Simpson College Computer Science http://programarcadegames.com/ http://simpson.edu/computer-science/ """ def get_high_score(): # Default high score high_score = 0 # Try to read the high score from a file try: high_score_file = open("high_score.txt", "r") high_score = int(high_score_file.read()) high_score_file.close() print("The high score is", high_score) except IOError: # Error reading file, no high score print("There is no high score yet.") except ValueError: # There's a file there, but we don't understand the number. print("I'm confused. Starting with no high score.") return high_score def save_high_score(new_high_score): try: # Write the file to disk high_score_file = open("high_score.txt", "w") high_score_file.write(str(new_high_score)) high_score_file.close() except IOError: # Hm, can't write it. print("Unable to save the high score.") def main(): """ Main program is here. """ # Get the high score high_score = get_high_score() # Get the score from the current game current_score = 0 try: # Ask the user for his/her score current_score = int(input("What is your score? ")) except ValueError: # Error, can't turn what they typed into a number print("I don't understand what you typed.") # See if we have a new high score if current_score > high_score: # We do! Save to disk print("Yea! New high score!") save_high_score(current_score) else: print("Better luck next time.") # Call the main function, start up the game if __name__ == "__main__": main() 18.4 Exception Objects More information about an error can be pulled from the exception object. This object can be retrieved while catching an error using the as keyword. For example: try: x = 5 / 0 except ZeroDivisionError as e: print(e) The e variable points to more information about the exception that can be printed out. More can be done with exceptions objects, but unfortunately that is beyond the scope of this chapter. Check the Python documentation on-line for more information about the exception object. 18.5 Exception Generating Exceptions may be generated with the raise command. For example: # Generating exceptions def get_input(): user_input = input("Enter something: ") if len(user_input) == 0: raise IOError("User entered nothing") get_input() Try taking the code above, and add exception handling for the IOError raised. It is also possible to create custom exceptions, but that is also beyond the scope of this book. Curious readers may learn more by going to: http://docs.python.org/tutorial/errors.html#raising-exceptions 18.6 Proper Exception Use Exceptions should not be used when if statements can just as easily handle the condition. Normal code should not raise exceptions when running the “happy path” scenario. Well-constructed try/catch code is easy to follow but code involving many exceptions and jumps in code to different handlers can be a nightmare to debug. (Once I was assigned the task of debugging code that read an XML document. It generated dozens of exceptions for each line of the file it read. It was incredibly slow and error-prone. That code should have never generated a single exception in the normal course of reading a file.) 18.7 Review 18.7.1 Multiple Choice Quiz Click here for a multiple-choice quiz. 18.7.2 Short Answer Worksheet Click here for the chapter worksheet. You are not logged in. Log in here and track your progress. English version by Paul Vincent Craven Spanish version by Antonio Rodríguez Verdugo Russian version by Vladimir Slav Turkish version by Güray Yildirim Portuguese version by Armando Marques Sobrinho and Tati Carvalho Dutch version by Frank Waegeman Hungarian version by Nagy Attila Finnish version by Jouko Järvenpää French version by Franco Rossi Korean version by Kim Zeung-Il Chinese version by Kai Lin
1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 11.1 12.1 13.1 14.1 15.1 16.1 17.1 18.1 19.1 20.1 21.1 22.1 23.1 24.1 25.1 26.1 27.1 29.1 31.1 32.1 33.1 34.1 35.1 36.1 37.1 38.1 39.1 40.1 41.1 42.1 43.1 44.1 45.1 46.1 47.1 48.1 49.1 50.1 51.1 52.1 53.1 54.1 55.1 56.1 57.1 58.1 59.1 60.1 61.1 62.1 64.1 65.1 66.1 67.1 68.1 70.1 71.1 72.1 73.1 74.1 75.1 76.1 77.1 78.1 79.1 80.1 81.1 82.1 83.1 84.1 85.1 87.1 89.1 91.1 93.1 94.1 95.1 96.1 97.1 99.1 100.1 101.1 102.1 103.1 104.1 105.1 106.1 107.1 108.1 109.1 110.1 111.1 112.1 113.1 114.1 115.1 116.1 117.1 118.1 119.1 120.1 121.1 122.1 123.1 124.1 125.1 126.1 127.1 128.1 129.1 130.1 131.1 132.1 133.1 134.1 135.1 136.1 137.1 138.1 139.1 140.1 141.1 142.1 143.1 144.1 145.1 146.1 147.1 149.1 150.1 151.1 152.1 153.1 154.1 155.1 156.1 157.1 158.1 159.1 160.1 161.1 162.1 164.1 165.1 166.1 167.1 168.1 169.1 170.1 171.1 172.1
Arcade Türü Oyun Programlamayıve Bilgisayar Bilimleri Öğrenin English Dutch - Nederlands French Hungarian - Magyar Portuguese - Português Russian - Pycckий Spanish - Español Turkish - Türkçe Chapter 1: Bilindik Bir Hesap Makinesi Eğer bilgisayarınızda Python ve Pygame yüklü değilse, 'Önceki' bölüme geçebilir ve başlayabilmek için onları indirip kurabilirsiniz.. 1.1 Giriş Python ile yapılabilecek en basit şeylerden biri onu zevkli bir hesap makinesi şeklinde kullanmaktır. Bir saniye, hesap makinesi bir oyun değildir. Neden hesap makinelerinden bahsediyoruz? Düşen nesneleri, uçan mermileri ve yüksek skorları hesaplayabilmek için programlar hesaplamalara ihtiyaç duyar. Ayrıca, bir matematik gurusu hesap makinesini işkence aletinden daha çok bir oyuncak gibi görür. O halde, oyun eğitimimize hesaplamalarla başlayalım. Basit bir hesaplama programı mortgage ödemeleri, beygir gücü ya da bir evin yapım maaliyeti gibi hesaplamaları yapabilmek için kullanıcılardan bilgi alabilir. Bir oyunun fizik motorunu oluşturmaya hazırlanmak için, alttaki gibi bir hesaplama uygulaması oluşturabilmeliyiz: Bunu bir program yapabilmek için en iyi şey karışıklıkları gizleme yeteneğidir. Kullanıcının tüm ihtiyacı olan bilgi sağlamak ve sonuçları anlaşılması kolay bir şekilde alabilmektir. Benzer bir hesaplama programı bir cep telefonunda da çalışabilirdi, kullanıcıya hesaplamayı kolayca yapabilme olanağı sağlardı. 1.2 Ekrana Yazdırmak Hesap makinesi yapmayı öğrenmek için ilk adım, ekrana bir şeyler yazdırmayı öğrenmektir. Bunu yapabilmek için bir "Merhaba Dünya" uygulaması yapalım. Bu program en basit haliyle ekrana "Merhaba Dünya" yazdırsın. Python'da bu program şu şekildedir: print ("Merhaba Dünya.") "Merhaba Dünya" uygulaması diğer programlama dillerinde nasıl yazılır? Wikipedi bu konuda güzel bir "Merhaba Dünya" arşivini birçok farklı programlama dilinde sunuyor: http://en.wikipedia.org/wiki/Hello_world_program_examples Bir programlama dilinin karmaşıklık derecesini "Merhaba Dünya" programının ne kadar kolay yazıldığından anlayabilirsiniz. Ayrıca, linkte kaç farklı programlama dilinin olduğunu görmek de ilginç. Yani, Python'da bir şeyler yazdırmak için kullanacağımız komutun hatırlanması kolay, sadece print yazın. Print komutunun ardından parantez açar kaparız ( ). Bu parantezlerin içine ekranda görülmek istenenler gelir. Fonksiyonlara veri gönderirken parantez kullanımı matematikte ve programlama dillerinde standart bir işlemdir. Matematik öğrencileri $sin(\theta)=cos(\frac{\pi}{2}-\theta)$ gibi ifadeleri hesaplarken parantez kullanımı öğrenirler. $sin$ ve $cos$ fonksiyonlardır. Bu fonksiyonlara giden veri parantezlerin içerisindedir. Burada farklı olan olay, bizim fonksiyona gönderdiğimiz verinin yazıdan oluşması. Burada yazdırılacak metnin etrafında tırnaklar olduğuna dikkat edin. Eğer print ifadesindeki içeriğin etrafında tırnaklar varsa, bilgisayar onu aynen ekrana yazar. Mesela, bu program 2+3 yazacaktır: Bu sonraki program ise $2+3$ 'ün etrafında tırnak içermiyor, dolayısıyla bilgisayar bunu bir matematiksel ifade olarak değerlendiriyor. Program 2+3 yerine 5 yazacaktır. Alttaki kod ise hata verecektir. Çünkü bilgisayar "Merhaba Dünya" yı bir matematiksel ifade olarak işlemeye çalışacaktır, sonuç olarak şu kod çalışmaz: print (Merhaba Dünya) Yukarıdaki kod şöyle bir SyntaxError: invalid syntax hatası verecektir. Bunun anlamı bilgisayarın "Merhaba" ve "Dünya" kelimelerinin anlamını bilmemesidir. Bir print ifadesi tek seferde birden çok çıktı verebilir. Her nesne virgül ile ayrılır. Mesela alttaki kod ekrana 10+10 toplamının sonucu 20 yazacaktır. print ("10+10 toplamının sonucu",10+10) The next line of code will print out The answer to 10+10 is 10+10. The numbers are not added together because they are inside the quotes. Anything inside quotes, the computer treats as text. Anything outside the computer thinks is a mathematical statement or computer code. Sonraki satırda yer alan kod 10+10 toplamının sonucu 10+10 yazacaktır. Bu sayılar tırnak içerisinde yer aldıkları için toplanmayacaktır. Bilgisayar, tırnak içerisinde yer alan her şeyi metin olarak algılar. Tırnak içerisinde olmayan her şeyi ise matematiksel ifade veya bilgisayar kodu olarak değerlendirir. print ("10+10 toplamının sonucu","10+10") Alttaki kod hiçbir şekilde çalışmayacaktır. Sebebi ise tırnaklar içerisinde bulunan metin ile 10+10'u ayıran bir tırnak işaretinin olmamasıdır. Başlarda, bir virgül varmış izlenimi verebilir, fakat virgül tırnakların arasındadır. Öğeleri ayıran virgül tırnakların dışında yer almalıdır. Programcı ekrana virgül yazdırmak istiyorsa, virgül tırnakların içerisinde de yer almalıdır: print ("10+10 toplamının sonucu," 10+10) Bir sonraki kod çalışacaktır. Çünkü öğeler arasına virgül koyulmuştur. Yazdıracağı şey ise: 10+10 toplamının sonucu, 20 Sadece bir tane virgül işaretinin yazıldığına dikkat edin. Tırnakların dışındaki virgüller öğeleri ayırır, tırnakların içindeki virgüller ekrana yazdırılır. İlk virgül işareti yazdırılmıştır, ikincisi ise öğeleri ayırmada kullanılmıştır. print ("10+10 toplamının sonucu,", 10+10) 1.3 Yorumlar Bazen kodlar onu okuyacak kişi için açıklanmaya ihtiyaç duyar.. Bunu yapabilmek için, kodlara “yorumlar” ekleriz. Yorumlar kodları insanların okuyabilmesi için yazılır, bilgisayar için değildir. Yorum oluşturmak için iki yol vardır. İlk yöntem # sembolünü kullanmaktır. Bilgisayar Python programında # sembolünden sonraki her yazıyı görmezden gelecektir. Mesela: # Bu bir yorumdur, # işareti ile başlar # ve bilgisayar onu görmezden gelir. print("Bu bir yorum değildir, bilgisayar") print("bunu çalıştırır ve ekrana yazar.") Tırnaklar arasındaki # işaretleri yorum olarak algılanmaz. Programcı bir satır kodu başına # işareti koyarak etkisiz hale getirebilir. Ayrıca, yorumu satırın sonuna koymak da mümkündür. print("Tırnakların içerisindeki # işareti yorum işlemini yapmaz.") # print ("Kod bile olsa, bu bir yorumdur.") print ("Selam") # Bu bir satır-sonu yorumdur. Birden fazla satırı yorum haline getirmek için üç adet tek tırnak kullanmak damümkündür. Bitirebilmek için de yorum dizisine sınırlama uygulanır. (ÇN. Üç tırnak ile başlayıp üç tırnak ile biten kısım yorum kabul edilir.) print("Selam") ''' Bu bir çok satırlı yorumdur. Bu satırlar arasındaki hiçbir şey çalıştırılmaz. print("Burada") ''' print("Bitti") Bu kitaba koymaya başladığımız kod örneklerinde yorum satırlarına bir göz atın. Yazdığınız kodu okuyacak olan tek siz bile olsanız, yorumlar zaman kazanmanıza yardımcı olabilirler. "Uzaylı bombalarını tutan kısım" şeklinde yazdığınız bir yorum o bölümdeki kodun ne yaptığını tekrar okuyarak ve ne işe yaradığını çözerek anlama zorunluluğundan kurtarır. 1.4 Atama Operatörleri Oyunumuzda skoru nasıl tutacağız? Ya da düşmanın gücünü nasıl takip edeceğiz? Bunu yapabilmek için atama operatörüne ihtiyacımız var. (Operatör basitçe + veya - gibi sembollere denir.) Bu, değeri daha sonra kullanılmak üzere saklamak için bir değişken kullanır. Alttaki kod 10 değerini x isimli değişkene atamaya yarar, ardından x'te saklanan değer ekrana yazdırılmıştır. Not: Yukarıdaki listeleme aynı zamanda x 'in tırnakların içerisinde ve x 'in tırnakların dışarısında yer alması arasındaki farkı da gösteriyor. Eğer x tırnak işaretleri arasındaysa, bilgisayar ekrana x yazacaktır. Eğer x tırnak işaretlerinin dışındaysa, bilgisayar x'in değerini ekrana yazacaktır. Bu programlama öğrenenlerin yaptığı oldukça yaygın bir hatadır. Bir atama ifadesi matematiksel bir eşitlikten farklıdır. Onları aynı gibi düşünmeyin. Atama ifadelerinde, eşittir işaretinin solunda sadece bir değişken yer alabilir. Burada başka hiçbir şey olamaz. Eşittir işaretinin sağ tarafı bir ifadedir. Değer hesaplayan her şey bir ifadedir. Alttaki kodu inceleyin. Matematiksel bir eşitlik yapmasa bile bu kod geçerlidir. Değişkenlere, numaralara ve eşittir işaretine sahip olsalarbile matematiksel eşitlikler farklıdır. Bu ifade x'in o anki değerini alır, ona bir ekler, ve sonucu tekrar x'te depo eder. x = x + 1 Sonuç olarak alttaki ifade 6 çıktısını verecektir. x=5 x = x + 1 print(x) Sonraki ifade de geçerlidir ve çalışacaktır, fakat anlamsızdır. Bilgisayar x'e bir ekler, fakat sonuç hiçbir yerde saklanmaz veya ekrana bastırılmaz. Alttaki kod 6 yerine 5 yazdıracaktır. Çünkü programcı $x + 1$ işleminin sonucunu x değişkenine aktarmayı unutmuştur. x=5 x + 1 print(x) Alttaki ifade geçersizdir çünkü eşittir işaretinin sol tarafı bir değişkenden daha fazlasını içeriyor. x + 1 = x Python ayrıca atama operatörlerine sahiptir. Bu programcının bir değişkeni kolayca değiştirmesini sağlar. Örneğin: Üstteki ifade alttaki kodla aynı işi yapar: x = x + 1 There are also assignment operators for addition, subtraction, multiplication and division. Ayrıca, ekleme, çıkarma, çarpma ve bölme için de atma operatörleri mevcuttur. 1.5 Değişkenler Değişken isimleri küçük harfle başlamalıdır. Değişkenler büyük harfle veya alt çizgi ile başlayabilir, fakat bunlar özel durumlardadır ve normalde prensip olarak yapılmamalıdır. İlk küçük harfin ardından değişken büyük ve küçük harfler ve bunlarla birlikte rakamlar ve alt çizgiler içarebilir. Değişken isimleri boşluk içermemelidir. (Ç.N. Küçük harf bir zorunluluk değil, kuvvetli bir gelenektir. Bu yüzden başlamalıdır deniyor.) Değişkenler büyük/küçük harf duyarlıdır. Programcı bunu beklemiyorsa kafa karıştırıcı olabilir. Alttaki kodta, çıktı 6 yerine 5 olacaktır çünkü burada iki adet değişken var. x=6 X=5 print(x) 1.6 Operatörler Çok kullanılan matematiksel operatörler, daha karmaşık matematik işlemlerinin yapılabilmesi için tanımlanmış halde gelir. Ayrıca birkaç tane çok-yaygın-olmayan da mevcuttur: “Yuvarlayarak bölme”nin yaptığı iş elde edilen sonucu en yakın tam sayıya yuvarlamaktır. Örneğin, 11//2 işleminin sonucu 5'tir, 5.5 değildir, ayrıca 99//100'ün sonucu da 0 olacaktır. Yan yana yazarak çarpma işlemi Python'da çalışmaz. Alttaki iki satırda yer alan kodlar çalışmayacaktır: # Bu çalışmaz x=5y x=5(3/2) Bu satırlardaki kodları çalışır duruma getirmek için aralarına çarpma operatörü eklenmelidir: # Bu çalışır x=5*y x=5*(3/2) 1.7 Operatörlerin Sırası Python elinizdeki komutları standart matematik ifadeleriyle aynı sırada işler. Örneğin, bu eşitlik ortalamayı doğru bir şekilde hesaplamayacaktır: Yapılan ilk işlem 98/5 işlemidir. Bilgisayarın hesapladığı: bu alttaki ise istenendir: Parantez kullanılarak bu sorun çözülebilir: 1.8 Trigonometrik Fonksiyonlar Trigonometrik fonksiyonlar formüllerde sinüs ve kosinüs değerleri hesaplanırken kullanılırlar. Varsayılan olarak, Python sinüs ve kosinüsü nasıl hesaplayacağını bilmez. Ancak uygun kütüphane içe aktarıldığında (import edildiğinde) kullanılabilir. Birimler radyandır. # math kütüphanesi import ediliyor(içe aktarılıyor) # Bu satır sadece bir kez yapılır ve programın # en üstünde yer alır. from math import * # Sinüs ve kosinüs kullanılarak x'i hesaplayalım x = sin(0) + cos(0) 1.9 Özel Denklemlerin Hesabı 294 milde 10.5 galon benzin harcayan bir otomobilin her milde ne kadar benzin harcadığı Python ile yazılan bir program yardımıyla hesaplanabilir. Bu program değişkenlerden faydalanılarak geliştirilebilir. Bu, denklemi değiştirmeden değerlerle oynanmasına izin verir. m=294 g=10.5 m2=m/g # Bu onun yerine değişken kullanıyor print(m2) Bu halde, bu program aslında anlaşılması zor bir programdır. m ve g değişkenleri belirli bir bağlam dışında bir anlam ifade etmiyor. Uygun isimlendirilmiş değişkenler kullanılarak program daha kolay anlaşılabilir hale getirilebilir: (Ç.N. mpg = miles per gallon - 1 galon benzinle alınan yol) surulenMil=294 kullanilanBenzin=10.5 mpg=surulenMil/kullanilanBenzin print(mpg) Şu an, programcı olmayan biri bile baksa muhtemelen programın ne yaptığıyla ilgili iyi bir fikir ortaya atabilir. İyiye karşı bir de kötü değişken isimlendirme örneği: # Anlaşılması zor fo=0.12 h=12123.34 f=fo*h # Anlaşılması kolay faizOrani=0.12 hesapBakiyesi=12123.34 faizTutari=faizOrani*hesapBakiyesi IDLE editöründe önceki satırı tekrar yazmadan düzenlemek mümkündür. Bunu imleci o satıra götürüp ardından "enter" tuşuna basarak yapabilirsiniz. O an aktif olan satıra kopyalanacaktır. Python kodunu >>> 'un ardından yazmak yavaştır ve her seferinde sadece bir satır kod girilebilir. Ayrıca kodu bir başka kişinin çalıştırması için saklamak da mümkün değildir. Neyse ki, Python kodu yazmak için daha basit bir yol var. Python kodu bir komut dosyası kullanılarak yazılabilir. Bir komut dosyası, tek seferde çalıştırılacak olan ve çok satırdan oluşan koda denir. Bir komut dosyası oluşturmak için, Şekilde gösterildiği gibi bir pencere açın 1.2. Benzin kullanım oranını hesaplayan bir Python programı yazıp, dosyayı kaydedin. Dosyayı flash bellek, network sürücüsü veya seçimizine bağlı başka bir yere kayededin. Python programları her zaman .py ile bitmelidir. Resim 1.3 'e bakın. Yazılı programı "Run" menüsüne ve o menüde "Run Module" seçeneğine basarak çalıştırın. Farklı mil ve galon değerleri kullanarak programı güncellemeyi deneyin. Bu noktadan sonra, yazılan her kod komut dosyası ya da modül olmalıdır. Programınızı IDLE'nin >>> komut satırında yazmayın. Buraya yazılan kod kaydedilmeyecektir. Bu gerçekleşirse yeniden başlamak gerekecektir. Bu yeni başlayan programcıların yaptığı oldukça yaygın bir hatadır. Bu program kullanıcıyla etkileşime geçip gidilen milleti ve kaç galon benzin kullanıldığını sorsa çok daha kullanışlı olurdu. Bu işlemi input komutuyla yapabiliriz. Alttaki kodu inceleyin: (Ç.N Türkiye'de çok yaygın kullanılmayan 1 galon = 3,78 litreye denk gelir.) # Bu kod neredeyse çalışıyor surulenMil=input("Enter miles driven:") kullanilanBenzin=input("Enter gallons used:") mpg=surulenMil/kullanilanBenzin print ("Galon başına mil:",mpg) Bu program çalıştığında kullanıcıya milleri ve galonları sorar, fakat Resim 1.4 'de görüldüğü gibi garip bir hata verir. Bu hatanın sebebi program birazcık değiştirilerek anlaşılabilir: surulenMil=input("Sürülen mili girin:") kullanilanBenzin=input("Kullanılan galonu girin:") x=surulenMil+kullanilanBenzin print("m+g toplamı:",x) Yukarıdaki programı çalıştırmak Resim 1.5 'de gösterilen hataya sebep olacaktır. Bu program iki sayıyı birbirine eklemiyor, sadece birini diğerinin sağ tarafına koyuyor. Bunun sebebi programın kullanıcının sayı girdiğini bilmemesi. Kullanıcı "Bob" ve "Mary" de girebilirdi, ve bu ikisinin birbirine eklenmesi "BobMary" olacaktı; bu da daha mantıklı olurdu. Bilgisayara girilenlerin sayı olduğunu söylemek için input fonksiyonunun etrafı int( ) ya da float( ) ile çevrilmelidir. İlkini tamsayılar(integer) için, sonrakini ondalıklı sayılar(float) için kullanın. Çalışan Final Hali: (Ç.N milesDriven: Gidilen yol, mil cinsinden; gallonsUsed: Harcanan Benzin, galon cinsinden) Başka bir örnek olarak, bir nesnenin kinetik enerjisinin hesaplanması: # Sample Python/Pygame Programs # Simpson College Computer Science # http://programarcadegames.com/ # http://simpson.edu/computer-science/ # Calculate Kinetic Energy print("This program calculates the kinetic energy of a moving object.") m_string = input("Enter the object's mass in kilograms: ") m = float(m_string) v_string = input("Enter the object's speed in meters per second: ") v = float(v_string) e = 0.5 * m * v * v print("The object has " + str(e) + " joules of energy.") Programı kısaltmak için, input komutunu float komutu ile iç içe yazabiliriz. Bunun örnek kodları: milesDriven=input("Enter miles driven:") milesDriven=float(milesDriven) Bu kod da aynı işi yapar: milesDriven=float(input("Enter miles driven:")) Bu durumda, input fonksiyonunun çıktısı direk float fonksiyonuna aktarılıyor. Her iki hal de çalışır, hangisinin seçileceği programcının tercihine kalmıştır. Ancak, önemli olan, iki şekli de anlayabilmektir. 1.10 Tekrar Bir çoktan seçmeli test için burayı tıklayın. - Adınızı ekrana yazdıran tek satırlık bir kod yazın. - Bir programa nasıl yorum ekleyebilirsiniz? - Alttaki satırlarda yer alan kod çıktı olarak ne verir? print (2/3) print (2//3) - pi isimli bir değişken içeren bir değişken oluşturan ve ona uygun değeri atayan tek satırlık bir kod yazın. - Bu kod neden çalışmaz? A=22 print(a) - Alttaki değişken isimlerinin tamamı kullanılabilirdir. Fakat hangileri kullanılmak için daha iyidir? a A Area AREA area areaOfRectangle AreaOfRectangle - Bu değişken isimlerinden hangisine Python'da izin verilmez? (Birden fazlası yanlış olabilir.) apple Apple APPLE Apple2 1Apple account number account_number account.number accountNumber account# - Bu kod neden çalışmaz? print(a) a=45 - Bu kodtaki hatayı açıklayın: pi = float(3.14) - Bu kodtaki hatayı açıklayın: radius=input("Radius:") x=3.14 pi=x area=pi*radius**2 - Bu kodtaki hatayı açıklayın: - Bu kodtaki hatayı açıklayın: radius = input(float("Enter the radius:")) - Bu kodtaki hatayı açıklayın: area=π*radius**2 - Kullanıcıya bir karenin kenar uzunluğunu soran ve onu bir değişkende saklayan tek satırlık bir kod yazın. Değeri tamsayıya çevirdiğinizden emin olun. - Write a line of code that prints the area of the square, using the number the user typed in that you stored in question 9. Karenin alanını ekrana yazdıran tek satırlık bir kod yazın. Kenar uzunluğu olarak 9. soruda kullanıcı tarafından girilen sayıyı kullanın. - 9. ve 10. soru ile aynı işi yapan, fakat elips alanını hesaplayan bir kod yazın. $a$ ve $b$ büyük yarıçap uzunlukları iken $s=\pi ab$ - 9. ve 10. soru ile aynı işi yapan, fakat gazın basıncını formülle bulan bir program yazın. $P=\dfrac{nRT}{V}$ Burada $n$ mol sayısı, $T$ mutlak sıcaklık, $V$ hacım ve $R$ gaz sabiti olan 8.3144. Gaz sabiti hakkında daha fazla bilgi için http://en.wikipedia.org/wiki/Gas_constant adresine göz atın. Kitabın bu kısmını gözden geçirmek için, devam etmeden önce Lab 1 kısmını tamamlayın. You are not logged in. Log in here and track your progress. English version by Paul Vincent Craven Spanish version by Antonio Rodríguez Russian version by Vladimir Slav Turkish version by Güray Yildirim Portuguese version by Armando Marques Sobrinho and Tati Carvalho Dutch version by Frank Waegeman Hungarian version by Nagy Attila French version by Franco Rossi