http___programarcadegames.com_index.php_lang_tr_chapter_python_as_calculator_2.xml
1.1 2.1 3.1 3.2 3.3 3.4 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 6.1 6.2 6.3 6.4 6.5 6.6 7.1 7.2 7.3 7.4 7.5 8.1 8.2 8.3 9.1 9.2 10.1 11.1 11.2 11.3 11.4 12.1 12.2 12.3 12.4 13.1 13.2 14.1 14.2 15.1 15.2 15.3 16.1 16.2 16.3 17.1 17.2 18.1 18.2 18.3 19.1 19.2 19.3 20.1 20.2 20.3 20.4 21.1 21.2 22.1 23.1 23.2 23.3 23.4 23.5 24.1 24.2 24.3 24.4 24.5 25.1 25.2 25.3 27.1 29.1 30.1 30.2 31.1 31.2 31.3 32.1 32.2 32.3 32.4 33.1 33.2 33.3 34.1 35.1 36.1 36.2 36.3 36.4 36.5 37.1 38.1 38.2 38.3 38.4 39.1 39.2 40.1 40.2 42.1 44.1 44.2 44.3 45.1 45.2 46.1 46.2 47.1 48.1 49.1 49.2 49.3 49.4 50.1 50.2 50.3 50.4 51.1 52.1 53.1 53.2 53.3 53.4 53.5 53.6 53.7 54.1 55.1 55.2 56.1 56.2 56.3 56.4 56.5 57.1 58.1 59.1 60.1 60.2 60.3 60.4 60.5 60.6 60.7 60.8 60.9 61.1 61.2 62.1 63.1 63.2 64.1 65.1 65.2 66.1 67.1 69.1 70.1 71.1 71.2 73.1 74.1 75.1 76.1 77.1 78.1 79.1 80.1 80.2 80.3 81.1 81.2 81.3 81.4 82.1 82.2 83.1 84.1 85.1 86.1 86.2 87.1 88.1 88.2 88.3 89.1 90.1 91.1 92.1 92.2 92.3 92.4 92.5 92.6 92.7 92.8 92.9 92.10 92.11 92.12 93.1 94.1 95.1 96.1 96.2 96.3 97.1 98.1 98.2 99.1 99.2 99.3 100.1 101.1 101.2 101.3 102.1 103.1 103.2 103.3 104.1 105.1 106.1 106.2 107.1 108.1 109.1 109.2 110.1 111.1 112.1 113.1 114.1 115.1 117.1 118.1 118.2 119.1 120.1 121.1 122.1 123.1 124.1 125.1 126.1 127.1 128.1 129.1
Program Arcade GamesWith Python And Pygame Chapter 4: Guessing Games with Random Numbers and Loops The last step before we start with graphics is learning how to loop a section of code. Most games “loop.” They repeat the same code over and over. For example the number guessing game below loops for each guess that the user makes: I'm thinking of a random number between 1 and 100. --- Attempt 1 Guess what number I am thinking of: 50 Too high. --- Attempt 2 Guess what number I am thinking of: 25 Too high. --- Attempt 3 Guess what number I am thinking of: 17 Too high. --- Attempt 4 Guess what number I am thinking of: 9 Too low. --- Attempt 5 Guess what number I am thinking of: 14 Too high. --- Attempt 6 Guess what number I am thinking of: 12 Too high. --- Attempt 7 Guess what number I am thinking of: 10 Too low. Aw, you ran out of tries. The number was 11. Wait, what does this have to do with graphics and video games? A lot. Each frame the game displays is one time through a loop. You may be familiar with the frames-per-second (FPS) statistic that games show. The FPS represents the number of times the computer updates the screen each second. The higher the rate, the smoother the game. (Although an FPS rate past 60 is faster than most screens can update, so there isn't much point to push it past that.) Figure 4.1 shows the game Eve Online and a graph showing how many frames per second the computer is able to display. The loop in these games works like the flowchart in Figure 4.2. Despite the complexities of modern games, the inside of this loop is similar to the calculator program we did in Chapter 1. Get user input. Perform calculations. Output the result. In a video game, we try to repeat this up to 60 times per second. There can even be loops inside of other loops. A real “loop the loop.” Take a look at the “Draw Everything” box in Figure 4.2. This set of code loops through and draws each object in the game. That loop is inside of the larger loop that draws each frame of the game, which looks like Figure 4.3. There are two major types of loops in Python, for loops and while loops. If you want to repeat a certain number of times, use a for loop. If you want to repeat until something happens (like the user hits the quit button) then use a while loop. For example, a for loop can be used to print all student records since the computer knows how many students there are. A while loop would need to be used to check for when a user hits the mouse button since the computer has no idea how long it will have to wait. 4.1 For Loops The for loop example below runs the print statement five times. It could just as easily run 100 or 1,000,000 times just by changing the 5 to the desired number of times to loop. Note the similarities of how the for loop is written to the if statement. Both end in a colon, and both use indentation to specify which lines are affected by the statement. The i on line 1 is a variable that keeps track of how many times the program has looped. It is a new variable and can be named any legal variable name. Programmers often use i as for the variable name, because the i is short for increment. This variable helps track when the loop should end. The range function controls how many times the code in the loop is run. In this case, five times. The next example code will print “Please,” five times and “Can I go to the mall?” only once. “Can I go to the mall?” is not indented so it is not part of the for loop and will not print until the for loop completes. This next code example takes the prior example and indents line 3. This change will cause the program to print “Please," and "Can I go to the mall?” five times. Since the statement has been indented “Can I go to the mall?” is now part of the for loop and will repeat five times just like the word “Please,". The code below will print the numbers 0 to 9. Notice that the loop starts at 0 and does not include the number 10. It is natural to assume that range(10) would include 10, but it stops just short of it. A program does not need to name the variable i, it could be named something else. For example a programmer might use lineNumber if she was processing a text file. If a programmer wants to go from 1 to 10 instead of 0 to 9, there are a couple ways to do it. The first way is to send the range function two numbers instead of one. The first number is the starting value, the second is just beyond the ending value. It does take some practice to get used to the idea that the for loop will include the first number, but not the second number listed. The example below specifies a range of (1,11), and the numbers 1 to 10 are printed. The starting number 1 is included, but not the ending number of 11. Another way to print the numbers 1 to 10 is to still use range(10) and have the variable i go from 0 to 9. But just before printing out the variable the programmer adds one to it. This also works to print the numbers 1 to 10. Either method works just fine. # Print the numbers 1 to 10. for i in range(10): print(i + 1) 4.1.1 Counting By Numbers Other Than One If the program needs to count by 2's or use some other increment, that is easy. Just like before there are two ways to do it. The easiest is to supply a third number to the range function that tells it to count by 2's. The second way to do it is to go ahead and count by 1's, but multiply the variable by 2. The code example below shows both methods. It is also possible to count backwards down towards zero by giving the range function a negative step. In the example below, start at 10, go down to but not including 0, and do it by -1 increments. The hardest part of creating these loops is to accidentally switch the start and end numbers. The program starts at the larger value, so it goes first. Normal for loops that count up start with the smallest value listed first in the range function. If the numbers that a program needs to iterate through don't form an easy pattern, it is possible to pull numbers out of a list. (A full discussion of lists is covered in Chapter 7. This is just a preview of what you can do.) This prints: 4.1.2 Nesting Loops Try to predict what the code below will print. Then enter the code and see if you are correct. # What does this print? Why? for i in range(3): print("a") for j in range(3): print("b") This next block of code is almost identical to the one above. The second for loop has been indented one tab stop so that it is now nested inside of the first for loop. This changes how the code runs significantly. Try it and see. # What does this print? Why? for i in range(3): print("a") for j in range(3): print("b") print("Done") I'm not going to tell you what the code does, go to a computer and see. 4.1.3 Keeping a Running Total A common operation in working with loops is to keep a running total. This “running total” code pattern is used a lot in this book. Keep a running total of a score, total a person's account transactions, use a total to find an average, etc. You might want to bookmark this code listing because we'll refer back to it several times. In the code below, the user enters five numbers and the code totals up their values. total = 0 for i in range(5): new_number = int(input("Enter a number: " )) total += new_number print("The total is: ", total) Note that line 1 creates the variable total, and sets it to an initial amount of zero. It is easy to forget the need to create and initialize the variable to zero. Without it the computer will complain when it hits line 4. It doesn't know how to add new_number to total because total hasn't been given a value yet. A common mistake is to use i to total instead of new_number. Remember, we are keeping a running total of the values entered by the user, not a running total of the current loop count. Speaking of the current loop count, we can use the loop count value to solve some mathematical operations. For example: If you aren't familiar with this type of formula, it is just a fancy way of stating: The code below adds all the numbers from 1 to 100. It demonstrates a common pattern where a running total is kept inside of a loop. This also uses a separate variable sum to track the running total. # What is the value of sum? sum = 0 for i in range(1, 101): sum = sum + i print(sum) Here's a different variation. This takes five numbers from the user and counts the number of times the user enters a zero: total = 0 for i in range(5): new_number = int(input( "Enter a number: ")) if new_number == 0: total += 1 print("You entered a total of", total, "zeros") A programmer that understands the nested for loops and running totals should be able to predict the output of the code below. # What is the value of a? a = 0 for i in range(10): a = a + 1 print(a) # What is the value of a? a = 0 for i in range(10): a = a + 1 for j in range(10): a = a + 1 print(a) # What is the value of a? a = 0 for i in range(10): a = a + 1 for j in range(10): a = a + 1 print(a) Don't go over this section too fast. Give it a try and predict the output of the code above. Then copy it into a Python program and run it to see if you are right. If you aren't, figure out why. 4.2 Example for Loops This example code covers common for loops and shows how they work. # Sample Python/Pygame Programs # Simpson College Computer Science # http://programarcadegames.com/ # http://simpson.edu/computer-science/ # Print 'Hi' 10 times for i in range(10): print("Hi") # Print 'Hello' 5 times and 'There' once for i in range(5): print("Hello") print("There") # Print 'Hello' 'There' 5 times for i in range(5): print("Hello") print("There") # Print the numbers 0 to 9 for i in range(10): print(i) # Two ways to print the numbers 1 to 10 for i in range(1, 11): print(i) for i in range(10): print(i + 1) # Two ways to print the even numbers 2 to 10 for i in range(2, 12, 2): print(i) for i in range(5): print((i + 1) * 2) # Count down from 10 down to 1 (not zero) for i in range(10, 0, -1): print(i) # Print numbers out of a list for i in [2, 6, 4, 2, 4, 6, 7, 4]: print(i) # What does this print? Why? for i in range(3): print("a") for j in range(3): print("b") # What is the value of a? a = 0 for i in range(10): a = a + 1 print(a) # What is the value of a? a = 0 for i in range(10): a = a + 1 for j in range(10): a = a + 1 print(a) # What is the value of a? a = 0 for i in range(10): a = a + 1 for j in range(10): a = a + 1 print(a) # What is the value of sum? sum = 0 for i in range(1, 101): sum = sum + i 4.3 While Loops A for loop is used when a program knows it needs to repeat a block of code for a certain number of times. A while loop is used when a program needs to loop until a particular condition occurs. Oddly enough, a while loop can be used anywhere a for loop is used. It can be used to loop until an increment variable reaches a certain value. Why have a for loop if a while loop can do everything? The for loop is simpler to use and code. A for loop that looks like this: for i in range(10): print(i) ...can be done with a while loop that looks like this: i = 0 while i < 10: print(i) i = i + 1 Line 1 of the while loop sets up a “sentinel” variable that will be used to count the number of times the loop has been executed. This happens automatically in a for loop eliminating one line of code. Line 2 contains the actual while loop. The format of the while loop is very similar to the if statement. If the condition holds, the code in the loop will repeat. Line 4 adds to the increment value. In a for loop this happens automatically, eliminating another line of code. As one can see from the code, the for loop is more compact than a while loop and is easier to read. Otherwise programs would do everything with a while loop. A common mistake is to confuse the for loop and the while loop. The code below shows a programmer that can't quite make up his/her mind between a for loop or a while loop. while range(10): print(i) The range function only works with the for loop. Do not use it with the while loop! 4.3.1 Using Increment Operators Increment operators are often used with while loops. It is possible to short-hand the code: i = i + 1 With the following: In the while loop it would look like: i = 0 while i < 10: print(i) i += 1 This can be done with subtraction and multiplication as well. For example: Is the same as: i = i * 2 See if you can figure out what would this print: i = 1 while i <= 2 ** 32: print(i) i *= 2 4.3.2 Looping Until User Wants To Quit A very common operation is to loop until the user performs a request to quit: quit = "n" while quit == "n": quit = input("Do you want to quit? There may be several ways for a loop to quit. Using a Boolean variable to trigger the event is a way of handling that. Here's an example: done = False while not done: quit = input("Do you want to quit? ") if quit == "y": done = True attack = input("Does your elf attack the dragon? ") if attack == "y": print("Bad choice, you died.") done = True This isn't perfect though, because if the user says she wants to quit, the code will still ask if she wants to attack the dragon. How could you fix this? Here is an example of using a while loop where the code repeats until the value gets close enough to zero: value = 0 increment = 0.5 while value < 0.999: value += increment increment *= 0.5 print(value) 4.3.3 Common Problems With while Loops The programmer wants to count down from 10. What is wrong and how can it be fixed? i = 10 while i == 0: print(i) i -= 1 What is wrong with this loop that tries to count to 10? What will happen when it is run? How should it be fixed? i = 1 while i < 10: print(i) 4.4 Example while Loops Here's a program that covers the different uses of the while loop that we just talked about. # Sample Python/Pygame Programs # Simpson College Computer Science # http://programarcadegames.com/ # http://simpson.edu/computer-science/ # A while loop can be used anywhere a for loop is used: i = 0 while i < 10: print(i) i = i + 1 # This is the same as: for i in range(10): print(i) # It is possible to short hand the code: # i = i + 1 # With the following: # i += 1 # This can be done with subtraction, and multiplication as well. i = 0 while i < 10: print(i) i += 1 # What would this print? i = 1 while i <= 2**32: print(i) i *= 2 # A very common operation is to loop until the user performs # a request to quit quit = "n" while quit == "n": quit = input("Do you want to quit? ") # There may be several ways for a loop to quit. Using a boolean # to trigger the event is a way of handling that. done = False while not done: quit = input("Do you want to quit? ") if quit == "y": done = True attack = input("Does your elf attach the dragon? ") if attack == "y": print("Bad choice, you died.") done = True value = 0 increment = 0.5 while value < 0.999: value += increment increment *= 0.5 print(value) # -- Common problems with while loops -- # The programmer wants to count down from 10 # What is wrong and how to fix it? i = 10 while i == 0: print(i) i -= 1 # What is wrong with this loop that tries # to count to 10? What will happen when it is run? i = 1 while i < 10: print(i) 4.5 Random Numbers Random numbers are heavily used in computer science for programs that involve games or simulations. 4.5.1 The randrange Function By default, Python does not know how to make random numbers. It is necessary to have Python import a code library that can create random numbers. So to use random numbers, the first thing that should appear at the top of the program is an import statement: import random Just like with pygame, it is important not to create a file with the same name as what is being imported. Creating a file called random.py will cause Python to start importing that file instead of the system library that creates random numbers. After this, random numbers can be created with the randrange function. For example, this code creates random numbers from 0 to 49. By default the lower bound is 0. my_number = random.randrange(50) The next code example generates random numbers from 100 to 200. Just like the range function the second parameter specifies an upper-bound that is not inclusive. Therefore if you want random numbers up to and including 200, specify 201. my_number = random.randrange(100, 201) What if you don't want a number, but a random item? That requires a list. We don't cover lists in detail until Chapter 7, but to give you preview of what selecting a random item out of a list would look like, see below: my_list = ["rock", "paper", "scissors"] random_index = random.randrange(3) print(my_list[random_index]) 4.5.2 The random Function All of the prior code generates integer numbers. If a floating point number is desired, a programmer may use the random function. The code below generates a random number from 0 to 1 such as 0.4355991106620656. my_number = random.random() With some simple math, this number can be adjusted. For example, the code below generates a random floating point number between 10 and 15: my_number = random.random() * 5 + 10 4.6 Review 4.6.1 Multiple Choice Quiz Click here for a multiple-choice quiz. 4.6.2 Short Answer Worksheet Click here for the chapter worksheet. Click here for the chapter lab. 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 21.1 23.1 24.1 25.1 26.1 27.1 28.1 29.1 30.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 56.1 57.1 58.1 59.1 60.1 62.1 63.1 64.1 65.1 66.1 67.1 68.1 69.1 70.1 71.1 72.1 73.1 74.1 75.1 76.1 77.1 79.1 81.1 83.1 85.1 86.1 87.1 88.1 89.1 91.1 92.1 93.1 94.1 95.1 96.1 97.1 98.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 141.1 142.1 143.1 144.1 145.1 146.1 147.1 148.1 149.1 150.1 151.1 152.1 153.1 154.1 156.1 157.1 158.1 159.1 160.1 161.1 162.1 163.1 164.1 165.1 166.1 167.1 168.1
Arcade Türü Oyun Programlamayıve Bilgisayar Bilimleri Öğrenin 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 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