﻿<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>GreekTuts &#187; Python</title>
	<atom:link href="http://greektuts.net/category/programming/python/feed/" rel="self" type="application/rss+xml" />
	<link>http://greektuts.net</link>
	<description>Ελληνικά Βοηθήματα</description>
	<lastBuildDate>Thu, 22 Jul 2010 19:56:16 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<image>
  <link>http://greektuts.net</link>
  <url>http://www.greektuts.net/images/favicon4.ico</url>
  <title>GreekTuts</title>
</image>
		<item>
		<title>Γιατί η Python μοιάζει με τον Chuck Norris</title>
		<link>http://greektuts.net/why-python-is-like-chuck-norris/</link>
		<comments>http://greektuts.net/why-python-is-like-chuck-norris/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 07:20:02 +0000</pubDate>
		<dc:creator>KrAp</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Άρθρα]]></category>
		<category><![CDATA[apostolos]]></category>
		<category><![CDATA[apostolos kritikos]]></category>
		<category><![CDATA[chuck norris]]></category>
		<category><![CDATA[krap]]></category>
		<category><![CDATA[kritikos]]></category>
		<category><![CDATA[python and chuck norris]]></category>
		<category><![CDATA[απόστολος]]></category>
		<category><![CDATA[Γιατί η Python μοιάζει με τον Chuck Norris]]></category>

		<guid isPermaLink="false">http://greektuts.net/?p=4020</guid>
		<description><![CDATA[Ο οδηγός Python αποτελεί τον πιο ανεπτυγμένο, από άποψη περιεχομένου οδηγό, που έχω καταθέσει στο GreekTuts.net. Οι έμπειροι προγραμματιστές εντοπίζουν εύκολα πότε μια γλώσσα προγραμματισμού αξίζει της προσοχής τους. Με βάση αυτό το σκεπτικό ξεκίνησα να γράφο τον οδηγό της Python χωρίς να σκεφθώ ότι για κάποιους, η δύναμη της Python μπορεί να είναι ασαφής ή ακόμη και άγνωστη.]]></description>
			<content:encoded><![CDATA[<p>Μία πρόσφατη κουβέντα που είχα με μερικούς φίλους κατέληξε, ούτε λίγο ούτε πολύ στο εξής. «Γιατί να αρχίσεις έναν οδηγό για Python;». Φαίνεται πως η απάντησή μου «γιατί πήρε  το όνομά της από ταινία των Monty Python» δεν ήταν αρκετή. «Ε και; Θα χρειαστούν καλύτερα επιχειρήματα από αυτό για να πείσεις κάποιον να διαβάσει τον οδηγό σου!».</p>
<p>Όπως είπα παραπάνω, ο έμπειρος προγραμματιστής έχει μια σειρά τρόπων για να κατανοεί τη σπουδαιότητα μιας γλώσσας προγραμματισμού. Ένα πολύ πρακτικός τρόπος, που αποτελεί και γενική πρακτική, είναι η αξιολόγηση των εφαρμογών που έχουν υλοποιηθεί κάνοντας χρήση της γλώσσας αυτής.</p>
<h1><strong>Ο </strong><strong>Chuck </strong><strong>Norris και η </strong><strong>Python</strong></h1>
<p><strong> </strong></p>
<blockquote>
<p style="text-align: center;"><img class="size-full wp-image-4021 aligncenter" src="http://greektuts.net/wp-content/uploads3/2010/07/chuckthon.png" alt="" width="342" height="348" /></p>
</blockquote>
<p>Ο Chuck Norris αποτελεί πλέον persona – φαινόμενο χάρη στο διαδικτυακό καλαμπούρι που ξεκίνησε στις τάξεις των geeks του διαδικτύου (<a href="http://www.chucknorrisfacts.com/">http://www.chucknorrisfacts.com/</a>). Αποτελεί δηλαδή ένα παράδειγμα χαρακτήρα που, ενώ η πρωταρχική του ιδιότητα θα μπορούσε να χαρακτηρισθεί αδιάφορη, η χρήση του σε ένα πετυχημένο (και παράλληλα έξυπνο) project, όχι μόνον τον έφερε και πάλι στο προσκήνιο, αλλά εκτίναξε και το «κασέ» του, στα ύψη.</p>
<p>Με παρόμοιο τρόπο η Python αντλεί μεγάλη δύναμη μέσα από τις εφαρμογές για την υλοποίηση των οποίων έχει χρησιμοποιηθεί. Προφανώς η Python, σαν γλώσσα προγραμματισμού, έχει κάποια δυνατά σημεία και κάποιες αδυναμίες. Και οι δύο αυτές κατηγορίες σημείων όμως, κατά την προσωπική μου άποψη, περιλαμβάνουν ζητήματα υποκειμενικά. Μία εφαρμογή αντίθετα, χαρακτηρίζεται από χαρακτηριστικά όπως λειτουργικότητα, ορθότητα (ύπαρξη κατά το δυνατό λιγότερων λαθών), φορητότητα (υποστήριξη διαφορετικών λειτουργικών συστημάτων, κλπ. Αυτά τα χαρακτηριστικά, όντας εύληπτα από τους περισσότερους χρήστες, έμπειρους και μη, διευκολύνουν την αξιολόγηση της ίδιας της γλώσσας προγραμματισμού (κρίση δια του αποτελέσματος) μέσα από μία, θεωρώ, αντικειμενικότερη ματιά.</p>
<p>Αν λοιπόν η επιτυχία του Chuck Norris εκτινάχθηκε στα ύψη από την δημοσιοποίηση ενός καλοστημένου project σκεφθείτε που πρέπει να κατατάξουμε την γλώσσα Python μετά την παρουσίαση όχι μιας, ούτε δύο αλλά 4 + 1 εκπληκτικών εφαρμογών.</p>
<p>Έχετε δίπλα σας την κούπα με τον αγαπημένο καφέ ή τσάι; Ας ξεκινήσουμε…</p>
<h1><strong>Mercurial: Δουλέψτε ευκολότερα, δουλέψτε ταχύτερα</strong></h1>
<p>Αποτελεί εργαλείο που απευθύνεται κυρίως σε ανθρώπους που ασχολούνται με την ανάπτυξη λογισμικού. Πρόκειται για μια εφαρμογή ανοικτού λογισμικού (δηλαδή ο κώδικας διατίθεται ελεύθερα προς χρήση και τροποποίηση) η οποία λειτουργεί σε Windows, Mac OS X και στα περισσότερα συστήματα τύπου UNIX. Αποστολή του είναι η ομαδική ανάπτυξη ενός έργου λογισμικού με ταυτόχρονη παρακολούθηση, καταγραφή και τήρηση ιστορικού των αλλαγών που γίνονται από τους προγραμματιστές που συμμετέχουν στο έργο. Παρακολουθούνται αρχεία τύπου text αλλά και binary αρχεία.</p>
<p>Η εφαρμογή διατίθεται κάτω από άδεια GNU GPL ενώ ο δημιουργός και κύριος προγραμματιστής του έργου είναι ο Matt Mackall. Η υλοποίησή της βασίζεται στις γλώσσες Python και C.</p>
<p><span style="text-decoration: underline;">Επίσημη ιστοσελίδα</span>: <a href="http://mercurial.selenic.com/">http://mercurial.selenic.com/</a></p>
<h1><strong>Gwibber: </strong><strong>Microblogging Freedom</strong></h1>
<p><strong> </strong></p>
<blockquote>
<p style="text-align: center;"><img class="size-full wp-image-4022 aligncenter" src="http://greektuts.net/wp-content/uploads3/2010/07/gwibber.png" alt="" width="580" height="197" /></p>
</blockquote>
<p>Η εφαρμογή gwibber αποτελεί μια δωρεάν εφαρμογή πελάτη για τη διαχείριση γνωστών ιστοσελίδων κοινωνικής δικτύωσης (Twitter, Identi.ca, StatusNet, Facebook, FriendFeed, Digg, Flickr, Qaiku). Είναι φτιαγμένη για εμφανίζει στον χρήστη, ανά πάσα στιγμή, διαφορετικές ροές. Απευθύνεται σε λειτουργικά συστήματα Linux (είναι μάλιστα προεγκατεστημένη στην έκδοση 10.04 της διανομής Ubuntu).</p>
<p><span style="text-decoration: underline;">Επίσημη ιστοσελίδα</span>: <a href="http://gwibber.com/">http://gwibber.com/</a></p>
<h1><strong>Emesen: An IM for the WLM<sup>TM</sup> network</strong></h1>
<p>Πρόκειται για μία από τις αγαπημένες μου εφαρμογές για λειτουργικά συστήματα Linux. Αντικαθιστά επάξια το MSN των Windows.</p>
<p>Αποστολή του είναι να «αντιγράψει» τις ιδιότητες του MSN προσφέροντας στον χρήστη Linux Λειτουργικών συστημάτων ένα εύχρηστο αλλά παράλληλα οικείο περιβάλλον αποστολής προσωπικών μηνυμάτων.</p>
<p>Λειτουργεί άψογα με λογαριασμούς Microsoft και φυσικά διατίθεται δωρεάν με άδεια GNU GPL.</p>
<p>Όπως και πριν, το Emesen είναι γραμμένο σε Python.</p>
<p><span style="text-decoration: underline;">Επίσημη ιστοσελίδα</span>: <a href="http://www.emesene.org/">http://www.emesene.org/</a> <strong> </strong></p>
<h1><strong>Trac: Integrated SCM &amp; Project Management</strong></h1>
<p><strong> </strong></p>
<blockquote>
<p style="text-align: center;"><img class="size-full wp-image-4023 aligncenter" src="http://greektuts.net/wp-content/uploads3/2010/07/traclogo.png" alt="" width="512" height="512" /></p>
</blockquote>
<p>Ακόμη ένα εξαιρετικό εργαλείο για ανάπτυξη και εκσφαλμάτωση λογισμικού γραμμένο αποκλειστικά σε Python. Διατίθεται δωρεάν και αποτελεί λογισμικό ανοικτού κώδικα. Η αρχική του ονομασία ήταν svntrac λόγω της ικανότητάς του να συνεργάζεται με το Subversion.</p>
<p><span style="text-decoration: underline;">Επίσημη ιστοσελίδα</span>: <a href="http://trac.edgewall.org/">http://trac.edgewall.org/</a></p>
<h1><strong>(+1) </strong><strong>Django: </strong><strong>Web </strong><strong>framework για τελειομανείς με </strong><strong>deadlines</strong></h1>
<p><strong> </strong></p>
<blockquote>
<p style="text-align: center;"><img class="size-full wp-image-4024 aligncenter" src="http://greektuts.net/wp-content/uploads3/2010/07/django.jpg" alt="" width="350" height="122" /></p>
</blockquote>
<p>Το Jango αποτελεί στην κυριολεξία ένα trend της εποχής. Πρόκειται για ένα Web Framework που διατίθεται δωρεάν κάτω από BSD License και φυσικά ο κώδικάς του είναι ανοικτός. Η μυστήρια ονομασία του προέρχεται από τον τσιγγάνο κιθαρίστα <a title="Django  Reinhardt" href="http://en.wikipedia.org/wiki/Django_Reinhardt">Django Reinhardt</a>. Είναι γραμμένο εξ’ ολοκλήρου σε Python.</p>
<p><span style="text-decoration: underline;">Επίσημη ιστοσελίδα</span>: <a href="http://www.djangoproject.com/">http://www.djangoproject.com</a></p>
<p>Για όσους από εσάς λοιπόν δεν είναι ξεκάθαρο το πόσο σημαντική γλώσσα είναι η Python, οι παραπάνω εφαρμογές έρχονται να «ξεκαθαρίσουν» το τοπίο, κάνοντας σαφές με τον καλύτερο τρόπο ότι κάποιος που γνωρίζει καλά Python, μπορεί να υλοποιήσει μια μεγάλη γκάμα πραγμάτων, που εμπίπτουν σε ποικιλία τεχνολογιών.</p>
<p>Μέχρι την επόμενη λοιπόν φορά που θα τα πούμε…</p>
<p><em><span style="text-decoration: underline;">…να είστε καλά και να προσέχετε τον εαυτό σας</span>.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://greektuts.net/why-python-is-like-chuck-norris/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Μαθαίνοντας Python – Μέρος 6α</title>
		<link>http://greektuts.net/python-part-6a/</link>
		<comments>http://greektuts.net/python-part-6a/#comments</comments>
		<pubDate>Tue, 08 Jun 2010 06:30:58 +0000</pubDate>
		<dc:creator>KrAp</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[krap]]></category>
		<category><![CDATA[απόστολος]]></category>
		<category><![CDATA[απόστολος κρητικός]]></category>
		<category><![CDATA[Γλώσσα Προγραμματισμού]]></category>
		<category><![CDATA[Προγραμματισμός]]></category>

		<guid isPermaLink="false">http://greektuts.net/?p=3928</guid>
		<description><![CDATA[Μετά από απουσία αρκετών μηνών, ήρθε η στιγμή να συνεχίσουμε το οδοιπορικό μας στην γλώσσα Python περνώντας πια σε προχωρημένα θέματα. Στο σημερινό μας άρθρο θα μιλήσουμε για συναρτήσεις (functions).]]></description>
			<content:encoded><![CDATA[<p>Οι συναρτήσεις αποτελούν χαρακτηριστικό κλειδί σε πολλές γλώσσες προγραμματισμού. Δεν θα μπορούσαν λοιπόν να απουσιάζουν και από την Python. Μία συνάρτηση στο προγραμματισμό λειτουργεί αντίστοιχα με μια μαθηματική συνάρτηση με μόνη (ίσως) διαφορά ότι στις προγραμματιστικές συναρτήσεις το αποτέλεσμα των συναρτήσεων <span style="text-decoration: underline;">μπορεί να επιστραφεί (με τη μορφή κάποιου αντικειμένου) ή όχι</span>.</p>
<p>Στο τέλος του οδηγού θα μπορούμε:</p>
<ul>
<li>Να ορίσουμε συναρτήσεις με σταθερές τιμές παραμέτρων</li>
<li>Να ορίσουμε συναρτήσεις με παραμέτρους που αποτελούν λέξεις &#8211; κλειδιά</li>
<li>Να ορίσουμε συναρτήσεις με λίστες για παραμέτρους</li>
<li>Να δημιουργήσουμε ανώνυμες συναρτήσεις τύπου lambda</li>
<li>Να τεκμηριώνουμε σωστά τις συναρτήσεις μας</li>
</ul>
<p>Για την καλύτερη κατανόηση αυτού του αντικειμένου ο συγκεκριμένος οδηγός χωρίστηκε σε δύο τμήματα…</p>
<h1>Προαπαιτούμενα</h1>
<p><strong> </strong></p>
<p>Μαθαίνοντας Python:  <a href="../archives/1571">Μέρος Ι</a>, <a href="../archives/1713">Μέρος  ΙΙ</a>, <a href="../archives/1838">Μέρος ΙΙΙ</a>, <a href="../archives/1930">Μέρος IV</a>, <a href="../python-part5/">Μέρος V</a></p>
<h1>Πριν ξεκινήσουμε…</h1>
<p><strong> </strong></p>
<p>… θα ήθελα να επισημάνω ένα – δύο πρακτικά ζητήματα.</p>
<p>Στη συνέχεια παρουσιάζεται ο τρόπος για να επιτευχθούν οι στόχοι που περιγράψαμε στην εισαγωγή. Θα παρατηρήσετε ότι το άρθρο ακολουθεί τη δομή:</p>
<p><em>Μικρή περιγραφή του τι θέλουμε να επιτύχουμε (+ επιπλέον σχόλια)</em></p>
<p><em>Παράδειγμα κώδικα</em></p>
<p>Στο τέλος του αρχείου θα βρείτε συνημμένο ένα python script που περιέχει συγκεντρωμένα όλα τα παραδείγματα.</p>
<p>Για να τα χρησιμοποιήσετε, αντιγράφετε το εκάστοτε παράδειγμα σε ένα νέο αρχείο python και το εκτελείτε (βλ. <a title="Permanent Link to Μαθαίνοντας Python – Μέρος 1ο" href="../archives/1571">Μαθαίνοντας Python – Μέρος 1ο</a> ). Τα παραδείγματα είναι φτιαγμένα με τέτοιον τρόπο ώστε να τυπώνουν τα αποτελέσματα στην οθόνη ώστε να μπορείτε να πιστοποιήσετε εύκολα τη λειτουργικότητά τους. Για διευκόλυνσή σας έχουμε χωρίσει τα παραδείγματα με σχόλια που δίνουν μια μικρή περιγραφή του τι επιχειρούμε κάθε φορά.</p>
<p>Βεβαιωθείτε ότι δεν ξεχάσατε το μάτι της κουζίνας ανοικτό, ετοιμάστε μία κούπα καφέ ή τσάι, βάλτε απαλή μουσική και ξεκινάμε…</p>
<h1>Συντάσσοντας μια συνάρτηση </h1>
<pre name="code" class="python">
def triangle_area(a, b):

area = a * b / 2

print("Το εμβαδό του τριγώνου είναι:", area)
</pre>
<p>Παραπάνω μπορείτε να δείτε την βασική δήλωση της συνάρτησης υπολογισμού του εμβασδού τριγώνου. Αρχικά δηλώνουμε τη συνάρτηση χρησιμοποιώντας την δεσμευμένη λέξη def ακολουθούμενη από το όνομα της συνάρτησης (στην προκειμένη περίπτωση triangle_area). Σε παρένθεση τοποθετούνται οι απαιτούμενες παράμετροι (a, b) που στην προκειμένη περίπτωση υποδηλώνουν την βάση και το ύψος του τριγώνου αντίστοιχα). Στη συνέχεια μια νέα μεταβλητή ορίζεται, η μεταβλητή area, στην οποία θα ανατεθεί το αποτέλεσμα της φόρμουλας υπολογισμού του εμβαδού του τριγώνου (βάση * ύψος / 2). Τέλος η συνάρτηση αναλαμβάνει να εκτυπώσει το αποτέλεσμα στην οθόνη.</p>
<p><strong> </strong></p>
<h1>Κλήση συνάρτησης</h1>
<p><strong> </strong></p>
<p>Η κλήση μιας συνάρτησης σε Python γίνεται γράφοντας απλά το όνομα της συνάρτησης και περικλείοντας μέσα σε παρένθεση τις τιμές των παραμέτρων (εφόσον χρειάζεται). Έτσι για να χρησιμοποιήσουμε την συνάρτηση που ορίσαμε λίγο νωρίτερα χρησιμοποιούμε την παρακάτω γραμμή κώδικα.</p>
<pre name="code" class="python">
triangle_area(66, 2010)
</pre>
<p>Προφανώς η ύπαρξη παραμέτρων σε μία συνάρτηση δεν είναι υποχρεωτική. Ας δούμε μαζί την δήλωση της παρακάτω απλής συνάρτησης που τυπώνει ένα συγκεκριμένο μήνυμα στην κονσόλα όταν κληθεί:</p>
<pre name="code" class="python">
def no_params_function():

print("Αυτή η συνάρτηση δε δέχεται παραμέτρους...")
</pre>
<p>Όπως παρατηρείτε η παρένθεση δεν περιέχει τίποτε, δηλαδή δεν έχουν δηλωθεί παράμετροι. Η κλήση αυτής της συνάρτησης γίνεται ως εξής…</p>
<pre name="code" class="python">
no_params_function()
</pre>
<p>και όπως θα δείτε αν το δοκιμάσετε, δουλεύει άψογα παρόλη την απουσία των παραμέτρων.</p>
<p><strong> </strong></p>
<h1>Αναθέτοντας μια συνάρτηση σε μια μεταβλητή </h1>
<p><strong> </strong></p>
<p>Ναι! Είναι εφικτό. Στην Python μια συνάρτηση μπορεί να ανατεθεί σε μια μεταβλητή (ακόμη ένα σημείο που υποδηλώνει τη δύναμη της συγκεκριμένης γλώσσας προγραμματισμού.</p>
<pre name="code" class="python">
aVariable = triangle_area

aVariable(5,8)
</pre>
<p>Αν τρέξετε τον παραπάνω κώδικα θα διαπιστώσετε ότι θα πάρετε τα ίδια αποτελέσματα με αυτά που θα παίρνατε αν χρησιμοποιούσατε την αρχική συνάρτηση triangle_area(x,y) που δημιουργήσαμε νωρίτερα. Ας δούμε όμως αναλυτικότερα τις δύο αυτές γραμμές.</p>
<p>Στην πρώτη γραμμή αναθέτουμε την συνάρτησή μας στην μεταβλητή aVariable. Δώστε προσοχή στην απουσία παραμέτρων. Αυτό συμβαίνει γιατί δεν θέλουμε να γίνει ανάθεση της συνάρτησής μας για δύο συγκεκριμένες τιμές αλλά του μηχανισμού της.</p>
<p>Έτσι, στην δεύτερη γραμμή, συμπεριφερόμαστε στην μεταβλητή aVariable σαν να είναι η συνάρτησή μας. Για αυτόν τον λόγο και η το όνομα της μεταβλητής μας ακολουθείται από την παρένθεση με τις παραμέτρους που θα ορίζαμε αν τρέχαμε την αρχική μας συνάρτηση. Δοκιμάστε το και θα διαπιστώσετε ότι το αποτέλεσμα είναι σωστό.</p>
<h1>Επιστροφή του αποτελέσματος αντί για εκτύπωση</h1>
<p><strong> </strong></p>
<p>Ας δούμε άλλη μια εκδοχή της αγαπημένης μας συνάρτησης υπολογισμού του εμβαδού τριγώνου J.</p>
<pre name="code" class="python">
def triangle_area_return(a, b):

area = a * b / 2

return area
</pre>
<p>Σε αυτήν την εκδοχή της συνάρτησής μας ο προσεκτικός αναγνώστης παρατηρεί (εκτός από το διαφορετικό όνομα της συνάρτησης) μία ακόμη σημαντική διαφορά. Αντί για τη γραμμή εκτύπωσης του αποτελέσματος, χρησιμοποιούμε την δεσμευμένη λέξη return. Αυτή η αλλαγή έχει σαν αποτέλεσμα η τιμή του αποτελέσματος <span style="text-decoration: underline;">να επιστρέφεται αντί να εκτυπώνεται</span>.</p>
<p>Έτσι, αν θέλουμε να εμφανίσουμε το αποτέλεσμα της συνάρτησης αυτής θα πρέπει να εκτελέσουμε την παρακάτω γραμμή κώδικα:</p>
<pre name="code" class="python">
print( triangle_area_return( 5, 5 ) )
</pre>
<p>Δοκιμάστε να εκτελέσετε την ίδια γραμμή χωρίς να περικλείεται από την εντολή print( ) και θα διαπιστώσετε ότι τίποτε δε συμβαίνει.</p>
<p><strong> </strong></p>
<h1>Πως το χρησιμοποιώ πραγματικά;</h1>
<p><strong> </strong></p>
<p>Οι συναρτήσεις χρησιμοποιούνται συνήθως για να υλοποιούν συχνά χρησιμοποιούμενες διαδικασίες. Πολύ συχνά το αποτέλεσμα μιας συνάρτησης χρειάζεται να τροφοδοτήσει μία άλλη. Αυτό επιτυγχάνεται με τη χρήση της return. Ας το δούμε στην πράξη:</p>
<p>Υπενθυμίζω την τελευταία έκδοση της συνάρτησής μας:</p>
<pre name="code" class="python">
def triangle_area_return(a, b):

area = a * b / 2

return area
</pre>
<p>Δημιουργούμε μία δεύτερη, πολύ απλή συνάρτηση η οποία λαμβάνει στην είσοδο ένα εμβαδό και τυπώνει ένα ειδικά διαμορφωμένο μήνυμα…</p>
<pre name="code" class="python">
def print_triangle_area_return(data):

print("Το εμβαδό του τριγώνου που διάβασα είναι:", data)
</pre>
<p>…στην τιμή myData ανατίθεται το αποτέλεσμα της συνάρτησης υπολογισμού του εμβαδού…</p>
<pre name="code" class="python">
myData = triangle_area_return(2, 155)
</pre>
<p>…τέλος τροφοδοτούμε το περιεχόμενο του myData στην συνάρτηση εκτύπωσης:</p>
<pre name="code" class="python">
print_triangle_area_return(myData)
</pre>
<p>Σε αυτό το άρθρο πήραμε μία γεύση από τα σημαντικότερα σημεία ορισμού και διαχείρισης συναρτήσεων σε Python. Μείνετε συντονισμένη για τη συνέχεια του οδηγού στον οποίο και θα ολοκληρωθεί το αντικείμενο αυτό.</p>
<p>Μέχρι τότε,</p>
<p><em><span style="text-decoration: underline;">να είστε καλά και να φροντίζεται τον εαυτό σας</span></em>.</p>
<p><strong><p style="text-align: center; font-weight: bold;"><br><img src="http://greektuts.net/images/GTMemberAccess.png" alt="Member Area" /> <br>Άν είστε ήδη συνδρομητής κάντε login με τα στοιχεία σας. Για να γίνετε συνδρομητής πατήστε <a href="/wp-login.php?action=register">εδώ</a> </p></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://greektuts.net/python-part-6a/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Μαθαίνοντας Python – Μέρος 5ο</title>
		<link>http://greektuts.net/python-part5/</link>
		<comments>http://greektuts.net/python-part5/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 17:15:29 +0000</pubDate>
		<dc:creator>KrAp</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Pyhton part 5]]></category>
		<category><![CDATA[Python – Μέρος 5ο]]></category>

		<guid isPermaLink="false">http://greektuts.net/?p=2098</guid>
		<description><![CDATA[Στο σημερινό μας άρθρο θα ασχοληθούμε με μερικά ειδικά θέματα που αφορούν τον έλεγχο της ροής των προγραμμάτων σε Python. Επειδή πρόκειται για ένα θέμα που βασανίζει τους αρχάριους προγραμματιστές δε θα σας κουράσω με κάποιο άλλο θέμα σε αυτό το μέρος. Θα σας κουράσω όμως με ένα προαιρετικό διαγωνισμό, τον οποίο θα βρείτε στο τέλος του άρθρου.]]></description>
			<content:encoded><![CDATA[<p>Μετά το ευχάριστο διάλειμμα της προηγούμενης εβδομάδας, ήρθε η στιγμή να συνεχίσουμε το οδοιπορικό μας στην γλώσσα Python.</p>
<p>Στο τέλος του σημερινού οδηγού θα μπορούμε:</p>
<ul>
<li>Να επεμβαίνουμε στην εκτέλεση των βρόγχων for, while, κλπ. χρησιμοποιώντας τα break, continue, else, pass.</li>
</ul>
<h2><strong>Προαπαιτούμενα</strong></h2>
<p><strong> </strong></p>
<p>Μαθαίνοντας Python:  <a href="../archives/1571">Μέρος Ι</a>, <a href="../archives/1713">Μέρος  ΙΙ</a>, <a href="../archives/1838">Μέρος ΙΙΙ</a>, <a href="../archives/1930">Μερος IV</a></p>
<h2><strong>Πριν ξεκινήσουμε…</strong></h2>
<p><strong> </strong></p>
<p>… θα ήθελα να επισημάνω ένα – δύο πρακτικά ζητήματα.</p>
<p>Στη συνέχεια παρουσιάζεται ο τρόπος για να επιτευχθούν οι στόχοι που περιγράψαμε στην εισαγωγή. Θα παρατηρήσετε ότι το άρθρο ακολουθεί τη δομή:</p>
<blockquote><p><em>Μικρή περιγραφή του τι θέλουμε να επιτύχουμε (+ επιπλέον σχόλια)</em></p>
<p><em>Παράδειγμα κώδικα</em></p></blockquote>
<p>Στο τέλος του αρχείου θα βρείτε συνημμένο ένα python script που περιέχει συγκεντρωμένα όλα τα παραδείγματα.</p>
<p>Για να τα χρησιμοποιήσετε, αντιγράφετε το εκάστοτε παράδειγμα σε ένα νέο αρχείο python και το εκτελείτε (βλ. <a title="Permanent Link to Μαθαίνοντας Python – Μέρος 1ο" href="../archives/1571">Μαθαίνοντας Python – Μέρος 1ο</a> ). Τα παραδείγματα είναι φτιαγμένα με τέτοιον τρόπο ώστε να τυπώνουν τα αποτελέσματα στην οθόνη ώστε να μπορείτε να πιστοποιήσετε εύκολα τη λειτουργικότητά τους. Για διευκόλυνσή σας έχουμε χωρίσει τα παραδείγματα με σχόλια που δίνουν μια μικρή περιγραφή του τι επιχειρούμε κάθε φορά.</p>
<p>Βεβαιωθείτε ότι δεν ξεχάσατε το μάτι της κουζίνας ανοικτό, ετοιμάστε μία κούπα καφέ ή τσάι, βάλτε απαλή μουσική και ξεκινάμε…</p>
<h2><strong>Η δήλωση </strong><strong>break</strong></h2>
<p><strong> </strong></p>
<p>Για όσους από εσάς γνωρίζουν C / C++ η λειτουργία της δήλωση break πρέπει να είναι προφανής (λειτουργεί με τον ίδιο ακριβώς τρόπο και στην Python). Τοποθετώντας μια δήλωση break σε κάποιο σημείο ενός βρόγχου (for ή while) επιβάλλεται στον Διερμηνευτή της Python να διακόψει την λειτουργία του πλησιέστερου βρόγχου και να εξέλθει από αυτόν.</p>
<pre name="code" class="python">
for i in range(10):

    if i == 5:

        break

    print(i)
</pre>
<p>Όπως παρατηρείτε στην οθόνη των αποτελεσμάτων σας έχετε νούμερα μέχρι κι το 4. Αυτό συμβαίνει διότι μόλις ο Διερμηνευτής της Python συνάντησε τον αριθμό 5, η εντολή break διέκοψε το βρόγχο.</p>
<p><strong> </strong></p>
<h2><strong>H δήλωση </strong><strong>continue</strong></h2>
<p><strong> </strong></p>
<p>Αντίθετα με την break, η δήλωση continue, περνάει στο επόμενο βήμα του βρόγχου, αγνοώντας τις εντολές για το τρέχον βήμα.</p>
<p><strong> </strong></p>
<pre name="code" class="python">
for i in range(10):

    if i == 5:

        continue

    print(i)
</pre>
<p>Τρέχοντας το παραπάνω παράδειγμα θα διαπιστώσετε ότι στην οθόνη των αποτελεσμάτων σας εμφανίζονται όλοι οι αριθμοί εκτός του 5. Αυτό συμβαίνει διότι όταν ο βρόγχος φθάσει στον αριθμό 5 (έκτο βήμα του βρόγχου), αγνοεί, λόγω της continue την εντολή print(i) με αποτέλεσμα ο αριθμός 5 να μην τυπώνεται ποτέ.</p>
<p><strong> </strong></p>
<h2><strong>Η δήλωση </strong><strong>else (για έναν βρόγχο </strong><strong>for)</strong></h2>
<p><strong> </strong></p>
<p>Η εμφάνιση μιας δήλωσης else σε βρόγχους είναι κάτι καινούριο. Ενεργοποιείται σε έναν βρόγχο τύπου for όταν η λίστα αντικειμένων τελειώσει ή, αντίστοιχα, σε έναν βρόγχο τύπου while, όταν η συνθήκη γίνει ψευδής.</p>
<pre name="code" class="python">
myCellar = ['apples', 'pork', 'cranberries', 'oil', 'wine', 'retsina']

productsInDemand = ['retsina', 'ouzo']

for demand in productsInDemand:

    for supply in myCellar:

        if demand == supply:

            print("we do have ", demand)

            break
else:

    print("we ran out of ", demand)
</pre>
<p>Ας δούμε ένα παράδειγμα που συνδυάζει τη χρήση break και else σε βρόγχους τύπου for. Στο παραπάνω παράδειγμα υποθέτουμε ότι έχουμε ένα κελάρι με προϊόντα. Το απεικονίζουμε με μια λίστα myCellar στην οποία είναι παρόντα μόνον όσα προϊόντα υπάρχουν (ανεξαρτήτου ποσότητας) στο κελάρι. Μια δεύτερη λίστα (productsInDemand) περιλαμβάνει προϊόντα που μας ζητά κάποιος και εμείς πρέπει να ψάξουμε αν είναι διαθέσιμα στο κελάρι.</p>
<p>Το εξωτερικό for loop διατρέχει τα προϊόντα που ζητήθηκαν και, για κάθε ένα ζητούμενο, το εσωτερικό for τσεκάρει αν το ζητούμενο προϊόν υπάρχει στο κελάρι. Αν βρεθεί, τυπώνεται μήνυμα επιτυχίας της αναζήτησης και ο εσωτερικός βρόγχος σταματά να εκτελείται. Στην περίπτωση που τα στοιχεία της λίστας που διατρέχει ο εσωτερικός βρόγχος (myCellar)  εξαντληθούν, εκτελούνται οι εντολές του else, δηλαδή τυπώνεται μήνυμα αποτυχίας.</p>
<p><strong> </strong></p>
<h2><strong>H δήλωση </strong><strong>pass</strong></h2>
<p><strong> </strong></p>
<p>Η δήλωση pass, είναι μια εξαιρετικά ενδιαφέρουσα δήλωση, ίσως η πιο χρήσιμη για έναν προγραμματιστή. Όταν ο Διερμηνευτής τη συναντήσει, δεν κάνει απολύτως τίποτε.</p>
<pre name="code" class="python">
while True:

    pass
</pre>
<p>Ο συγκεκριμένος κώδικας (υπάρχει και στο παράδειγμα του σημερινού οδηγού) θα προκαλέσει έναν ατέρμονα βρόγχο (δηλ έναν βρόγχο που θα απασχολεί αιώνια τον διερμηνευτή σας). Μην αγχωθείτε, ανά πάσα στιγμή τον διακόπτετε πατώντας την ακολουθία πλήκτρων ctrl + c</p>
<p>Γιατί είναι κάτι τέτοιο χρήσιμο; Θα αναρωτηθείτε εύλογα. Σκεφτείτε ότι έχετε να κατασκευάσετε ένα μεγάλο πρόγραμμα κάνοντας χρήση αντικειμενοστρεφούς σχεδίασης. Ο αντικειμενοστρέφής προγραμματισμός, όπως ίσως να ξέρετε, κάνει χρήση αντικειμένων (θα δούμε αναλυτικά το θέμα των αντικειμένων σε μεταγενέστερους οδηγούς). Ας υποθέσουμε λοιπόν ότι σχεδιάζεται ένα σκελετό του προγράμματός σας που αποτελείτε από τα αντικείμενα vehicle, car, human.</p>
<p>Κάνοντας αυτό:</p>
<pre name="code" class="python">
class Vehicle:

    pass

class Car:

    pass

class Human:

    pass
</pre>
<p>μπορείτε να έχετε τις κλάσεις που αποφασίσατε να δημιουργήσετε, κενές, ώστε σιγά – σιγά να υλοποιείτε το σύστημά σας, γνωρίζοντας πάντα όλα όσα έχετε να κάνετε.</p>
<p>Σκεφτείτε το και θα δείτε ότι θα κάνει τη ζωή σας ευκολότερη…</p>
<h2><strong><span style="color: #ff0000">Mini Διαγωνισμός</span><br />
</strong></h2>
<p>Κατασκευάστε ένα πρόγραμμα σε Python το οποίο, δεδομένου ενός ονόματος (δωσμένο με λατινικούς χαρακτήρες), να εμφανίζει μόνον τα σύμφωνα.</p>
<ul>
<blockquote>
<li>Υποθέστε      ότι έχουμε να κάνουμε με ονόματα στα λατινικά (John, Mary, Aristides, Isocrates, κλπ.), όχι Greeklish (Kwstas, Evgenia)</li>
<li>Το      όνομα μπορεί να περιέχει κεφαλαίους και πεζούς χαρακτήρες (Christine, Apostolos)</li>
<li>Τα      φωνήεντα στο αγγλικό αλφάβητο είναι τα a, o,      e, i, u, y</li>
<li>Να      γίνει χρήση break και else δηλώσεων</li>
</blockquote>
</ul>
<p>Μπορείτε να στείλετε τις απαντήσεις σας στο προσωπικό μου email (<a href="mailto:akritiko@gmail.com">akritiko@gmail.com</a>) με θέμα «GreekTuts: Διαγωνισμός Python». <strong>Οι 3 καλύτερες λύσεις (που δουλεύουν) μέχρι τέλος Δεκεμβρίου κερδίζουν από μια Basic συνδρομή ενός μηνός για την ιστοσελίδα μας.</strong></p>
<p>Περιμένω τις σκέψεις σας… Μέχρι την επόμενη φορά,</p>
<p><em><span style="text-decoration: underline">να είστε καλά και να φροντίζεται τον εαυτό σας</span></em>.</p>
<blockquote>
<p style="text-align: center"><em><strong>Μπορείτε να κατεβάσετε τα αρχεία του βοηθήματος εδώ</strong></em></p>
<p style="text-align: center"><a href="http://greektuts.net/wp-content/uploads/2009/11/py_tuts_part_5.rar" target="_self"><em><strong><img class="alignnone" src="../wp-content/uploads/2009/10/membersdownload1.png" alt="download" width="200" height="200" /></strong></em></a></p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://greektuts.net/python-part5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Μαθαίνοντας Python – Μέρος 4ο</title>
		<link>http://greektuts.net/python-part-4/</link>
		<comments>http://greektuts.net/python-part-4/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 08:19:26 +0000</pubDate>
		<dc:creator>KrAp</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Γλώσσα Προγραμματισμού]]></category>
		<category><![CDATA[Μαθαίνοντας Python – Μέρος 4ο]]></category>
		<category><![CDATA[Μέρος 4]]></category>
		<category><![CDATA[Προγραμματσμός]]></category>

		<guid isPermaLink="false">http://greektuts.net/?p=1930</guid>
		<description><![CDATA[Σε προηγούμενα βοηθήματα κάναμε την εισαγωγή στην Γλώσσα προγραμματισμού Python, και είδαμε όλα τα βασικά θέματα της γλώσσας Python. Στο σημερινό μας άρθρο θα ασχοληθούμε με τον έλεγχο της ροής των προγραμμάτων σε Python. Αυτό σημαίνει ότι θα μάθουμε να εκτελούμε εντολές υπό συνθήκη αλλά και βρόγχους επαναλήψεων.]]></description>
			<content:encoded><![CDATA[<p>Στο τέλος του σημερινού οδηγού θα μπορούμε:</p>
<ul>
<li>Να εκτελούμε εντολές υπό συνθήκη με την εντολή if</li>
<li>Να δημιουργούμε βρόγχους επαναλήψεων κάνοντας χρήση των εντολών
<ul>
<li>For</li>
<li>While</li>
<li>Να δημιουργούμε ακολουθίες αριθμών με την συνάρτηση range()</li>
</ul>
</li>
</ul>
<h2><strong>Προαπαιτούμενα</strong></h2>
<p>Μαθαίνοντας Python:  <a href="../archives/1571">Μέρος Ι</a>, <a href="../archives/1713">Μέρος  ΙΙ</a>, <a href="../archives/1838">Μέρος ΙΙΙ</a></p>
<h2><strong>Πριν ξεκινήσουμε…</strong></h2>
<p>… θα ήθελα να επισημάνω ένα – δύο πρακτικά ζητήματα.</p>
<p>Στη συνέχεια παρουσιάζεται ο τρόπος για να επιτευχθούν οι στόχοι που περιγράψαμε στην εισαγωγή. Θα παρατηρήσετε ότι το άρθρο ακολουθεί τη δομή:</p>
<blockquote><p><em>Μικρή περιγραφή του τι θέλουμε να επιτύχουμε (+ επιπλέον σχόλια)</em></p>
<p><em>Παράδειγμα κώδικα</em></p></blockquote>
<p>Στο τέλος του άρθρου θα βρείτε συνημμένο ένα python script που περιέχει συγκεντρωμένα όλα τα παραδείγματα.</p>
<p>Για να τα χρησιμοποιήσετε, αντιγράφετε το εκάστοτε παράδειγμα σε ένα νέο αρχείο python και το εκτελείτε (βλ. <a title="Permanent Link to Μαθαίνοντας Python – Μέρος 1ο" href="../archives/1571">Μαθαίνοντας Python – Μέρος 1ο</a> ). Τα παραδείγματα είναι φτιαγμένα με τέτοιον τρόπο ώστε να τυπώνουν τα αποτελέσματα στην οθόνη ώστε να μπορείτε να πιστοποιήσετε εύκολα τη λειτουργικότητά τους. Για διευκόλυνσή σας έχουμε χωρίσει τα παραδείγματα με σχόλια που δίνουν μια μικρή περιγραφή του τι επιχειρούμε κάθε φορά.</p>
<p>Βεβαιωθείτε ότι δεν ξεχάσατε το μάτι της κουζίνας ανοικτό, ετοιμάστε μία κούπα καφέ ή τσάι, βάλτε απαλή μουσική και ξεκινάμε…</p>
<h2><strong>Εντολές υπό συνθήκη</strong></h2>
<p>Στην Python, όπως και στις περισσότερες γλώσσες υψηλού επιπέδου οι εντολές υπό συνθήκη πραγματοποιούνται κάνοντας χρήση της δήλωσης if.</p>
<p>Η σύνταξή της είναι η ακόλουθη:</p>
<pre name="code" class="python">

if συνθήκη1:
    εντολή1
    εντολή2
    …

elif συνθήκη2:
    εντολή3
    εντολή4
    …

else:
    εντολή5
    εντολή6
    …
</pre>
<p><span style="text-decoration: underline;">Παρατηρήσεις</span>:</p>
<ul>
<li>Το τμήμα if … θα πρέπει να εμφανίζεται αυστηρά μία μόνον φορά σε μια δήλωση if</li>
<li>Το τμήμα elif… μπορεί να εμφανίζεται καμία, μία, ή περισσότερες φορές</li>
<li>Το τμήμα else μπορεί να εμφανιστεί καμία ή μία φορά</li>
<li>Τα τμήματα if και elif πρέπει να ακολουθούνται υποχρεωτικά από μία συνθήκη και το σύμβολο ‘:’</li>
<li>Το τμήμα else ακολουθείται μόνον από το σύμβολο ‘:’ (χωρίς συνθήκη)</li>
<li>Οι εντολές στο σώμα<sup>1</sup> κάθε τμήματος πρέπει να εισέχουν ένα tab απόσταση από το αντίστοιχο τμήμα τους (If, elif, else)</li>
</ul>
<p>[1] Σώμα ενός τμήματος καλούμε την εντολή ή τις εντολές που αφορούν το τμήμα αυτό. Στην Python ένα σώμα κειμένου διακρίνεται με τις εσοχές. Κάθε σύνολο εντολών που εισέχουν αποτελούν σώμα της αμέσως προηγούμενης γραμμής, που η δήλωσής της ξεκινά μία εσοχή αριστερότερα.</p>
<p>Ας δούμε ένα παράδειγμα:</p>
<pre name="code" class="python">
number = int(input("Please enter an integer: "))
if number < 0:
    print("The number is a negative")
elif number > 0:
    print("The number is a positive")
else:
    print("The number is a zero")
</pre>
<p>Σας υποσχέθηκα ότι από αυτή τη φορά θα αρχίσουμε να γράφουμε mini προγράμματα και διατείνομαι ότι είμαι άνθρωπος που κρατά τον λόγο του. Στον παραπάνω κώδικα η πρώτη γραμμή ζητά έναν ακέραιο αριθμό από τον χρήστη. Επειδή όπως είπαμε η Python δεν έχει τύπους ουσιαστικά ζητούμε από τον χρήστη μια ροή χαρακτήρων με την input(“Please enter an integer: ”) και περικλείουμε την εντολή αυτή στην int( ) ώστε οι χαρακτήρες που δίνει ο χρήστης να μετατραπούν σε ακέραιο. Προφανώς δεν γίνεται κανένας έλεγχος για το αν πράγματι ο χρήστης έδωσε ακέραιο αλλά δεδομένου ότι ο σημερινός οδηγός έχει σαν θέμα τον έλεγχο ροής θα θεωρήσουμε δεδομένο ότι οι τιμές που θα δοθούν θα είναι ακέραιοι (αν θέλετε να δείτε τι γίνεται αν δώσετε κάποια άκυρη τιμή, π.χ. αλφαριθμητικό, δοκιμάστε το, απλά για πειραματισμό).</p>
<p>Αφότου ο χρήστης δώσει η τιμή, χρησιμοποιώντας μία δήλωση if ελέγχουμε αν η τιμή είναι αρνητική, θετική, ή μηδέν και σε κάθε περίπτωση εμφανίζουμε το αντίστοιχο μήνυμα.</p>
<h2><strong>Δημιουργία βρόγχων επαναλήψεων (</strong><strong>for)</strong></h2>
<p>Μία άλλη κλασική προγραμματιστική ανάγκη είναι η δημιουργία βρόγχων, τμημάτων δηλαδή που επαναλαμβάνονται έναν αριθμό Ν φορών , ανάλογα με τις ανάγκες της εκάστοτε εφαρμογής. Η δήλωση for κάνει ακριβώς αυτό.</p>
<p>Η σύνταξή της είναι η ακόλουθη:</p>
<pre name="code" class="python">
for μεταβλητή in ακολουθία:
    εντολή1
    εντολή2
    …
</pre>
<p><span style="text-decoration: underline;">Παρατηρήσεις</span>:</p>
<ul>
<li>Με τον όρο “ακολουθία” στην Python εννοούμε τα αλφαριθμητικά και τις λίστες</li>
<li>Η “μεταβλητή” μπορεί να ονομάζεται όπως θέλετε και το μόνο που κάνει είναι να παίρνει σαν τιμή, με τη σειρά, την τιμή κάθε ενός από τα στοιχεία που απαρτίζουν την ακολουθία</li>
</ul>
<p>Για παράδειγμα:</p>
<pre name="code" class="python">
fruits = ['apple', 'orange', 'strawbery', 'pineapple', 'cranberries']

for fruit in fruits:
    print(fruit)
</pre>
<p>Έχουμε την λίστα fruits που αποτελείται από τα στοιχεία που μπορείτε να δείτε στην πρώτη γραμμή του κώδικά μας. Δημιουργούμε ένα for (δηλαδή έναν βρόγχο επανάληψης) στον οποίο η μεταβλητή fruit θα πάρει μία – μία τις τιμές των στοιχείων της λίστας fruits και όπως ορίζει η εντολή στο σώμα της δήλωσης for, θα τις εκτυπώσει. Έτσι το αποτέλεσμά σας θα μοιάζει κάπως έτσι:</p>
<pre name="code" class="python">
apple

orange

strawbery

pineapple

cranberries
</pre>
<h2><strong>Δημιουργία βρόγχων επαναλήψεων (</strong><strong>while)</strong></h2>
<p>Με τον ίδιο ακριβώς τρόπο συντάσσεται δήλωση while.</p>
<pre name="code" class="python">
while συνθήκη:
    εντολή1
    εντολή2
    …
</pre>
<p>με τη μόνη διαφορά ότι αντί για μια μεταβλητή που διαβάζει διαδοχικά τα στοιχεία μιας ακολουθίας, εξετάζουμε αν μια συνθήκη επαληθεύεται. Όσο αυτή η συνθήκη είναι αληθής, θα εκτελούνται οι εντολές που βρίσκονται στο σώμα της while. Αν κάποια στιγμή η συνθήκη γίνει ψευδής, ο βρόγχος επαναλήψεων θα τερματιστεί.</p>
<p>Ας ρίξουμε μια ματιά στον παρακάτω κώδικα:</p>
<pre name="code" class="python">
number = 500

current, next = 0, 1

while next &lt; number:

    print(current, end=' ')

        current, next = next, current + next
</pre>
<p>Για όσους δεν τον αναγνώρισαν πρόκειται για τον αλγόριθμο υπολογισμού της ακολουθίας Fibonacci. Στην ακολουθία αυτή τα δύο πρώτα στοιχεία είναι τα 0 και 1 ενώ κάθε επόμενο στοιχείο αποτελεί το άθροισμα των δύο προηγούμενων στοιχείων. Έχουμε δηλαδή:</p>
<pre name="code" class="python">
0

1

1 + 0 = 1

1 + 1 = 2

3 + 2 = 3

2 + 3 = 5

κλπ.
</pre>
<p>Στο παράδειγμά μας ορίζουμε σαν όριο τον αριθμό 500 δηλαδή ζητούμε τους αριθμούς Fibonacci που είναι μικρότεροι του 500. Στην δεύτερη γραμμή αναθέτουμε τις τιμές 0, 1 στις μεταβλητές current και next αντιστοίχως.</p>
<p>Ακολουθεί η δήλωση while στο σώμα της οποίας βρίσκεται ουσιαστικά όλη η ουσία του αλγορίθμου (παραμείνετε ψύχραιμοι, δεν είναι κάτι δύσκολο).</p>
<p>Όσο η μεταβλητή next είναι μικρότερη από τη μεταβλητή number (το όριο δηλαδή που θέσαμε στην αρχή), εκτελείτε το σώμα του while. Δηλαδή:</p>
<ul>
<li>Τυπώνεται ο αριθμός current</li>
<li>Γίνονται δύο ταυτόχρονες αναθέσεις τιμών
<ul>
<li>Current γίνεται ο αριθμός next</li>
<li>Ο next παίρνει την τιμή current + next</li>
</ul>
</li>
</ul>
<p>Αν νιώθετε μπερδεμένοι, είναι λογικό και φταίει η Python για αυτό. Στην Python υπάρχει η «ψυχεδελική» ανάθεση μεταβλητών (π.χ. a, b = 5, 12 ). Οι τιμές όμως των μεταβλητών αλλάζουν πραγματικά από την αμέσως επόμενη εντολή.</p>
<p>Έτσι, στο παράδειγμα μας τα αποτελέσματα της εντολής current, next = next, current + next θα ισχύσουν από την επόμενη γραμμή κώδικα. Ας παρακολουθήσουμε τώρα κάτι το παρανοϊκό:</p>
<p>Η μεταβλητή current θα πάρει την τιμή next αφότου τελειώσει η εντολή current, next = next, current + next. Έτσι για την ανάθεση τιμής στην next (που βρίσκεται στην ίδια εντολή) η current έχει ακόμη την παλιά της τιμή.</p>
<p>Την πρώτη φορά που εισερχόμαστε στο while η μεταβλητή current έχει την τιμή 0 και η next την τιμή 1. Αφότου τυπωθεί 0 (η τιμή της current δηλαδή) η μεταβλητή current ΘΑ πάρει την τιμή την μεταβλητής next. Στην ίδια εντολή η μεταβλητή next θα πάρει την τιμή του αθροίσματος current + next (δηλαδή 0 + 1 αφού η ανάθεση της τιμής στην current δεν έχει ισχύ ακόμη εφόσον δεν άλλαξε η εντολή). Έτσι μετά την εκτέλεση της μυστήριας αυτής ανάθεσης, η μεταβλητή current έχει γίνει 1 και η next (0+1=) 1.</p>
<p>Για όσους προβληματίστηκαν με την εντολή print(current, end=&#8217; &#8216;), το end=’ ‘ ουσιαστικά επιβάλει τις τιμές να εκτυπώνονται η μία δίπλα στην άλλη διαχωριζόμενες από τον κενό χαρακτήρα ‘ ‘. Αν στην θέση της βάλετε print(current) θα διαπιστώσετε ότι οι τιμές της ακολουθίας Fibonacci σας θα εμφανίζονται κατακόρυφα.</p>
<h2><strong>Η συνάρτηση </strong><strong>range()</strong></h2>
<p><strong> </strong>Η συνάρτηση range() δημιουργεί ακολουθίες αριθμών. Έχει διάφορες μορφές:</p>
<ul>
<li>range(number) : Δημιουργείται μια ακολουθία αριθμών από το 0 ως την προηγούμενη ακέραια τιμή της μεταβλητής number</li>
<li>range(from, to) : Δημιουργείται μια ακολουθία αριθμών από την τιμή της μεταβλητής from μέχρι την προηγούμενη ακέραια τιμή της μεταβλητής to</li>
<li>range(from, to, step) : Δημιουργείται μια ακολουθία αριθμών από την τιμή της μεταβλητής from μέχρι την προηγούμενη ακέραια τιμή της μεταβλητής to με βήμα step.</li>
</ul>
<p><span style="text-decoration: underline;">Στην πράξη</span>:</p>
<pre name="code" class="python">
for iterator in range(10):

    print(iterator, end=' ')
</pre>
<p>Θα δώσει σαν αποτέλεσμα: 0 1 2 3 4 5 6 7 8 9</p>
<pre name="code" class="python">
for iterator in range(4, 10):

    print(iterator, end=' ')
</pre>
<p>Θα δώσει σαν αποτέλεσμα: 4 5 6 7 8 9</p>
<pre name="code" class="python">
for iterator in range(1, 11, 2):

    print(iterator, end=' ')
</pre>
<p>Θα δώσει σαν αποτέλεσμα: 1 3 5 7 9</p>
<p>Η συνάρτηση range() αν συνδυαστεί με την συνάρτηση len() μπορεί να μας δώσει έναν πολύ ωραίο τρόπο να απαριθμούμε τα αποτελέσματα που τυπώνονται μέσα σε έναν βρόγχο επανάληψης.</p>
<p>Έχουμε το ακόλουθο πρόγραμμα που τυπώνει στην οθόνη τις 10+2 εντολές αγοράς gadget.</p>
<pre name="code" class="python">
commandments = ["Thou shalt use a standard plug (preferably USB)",

    "Thou shalt have good battery life",

    "Thou shalt give nothing unneeded in the box, but always give necessary items",

    "Thou shalt offer accessories, or at least help partners to",

    "Thine gadgetry shall make sense",

    "Thou shalt have a reasonable price for the life of thine gadget",

    "Thou shalt not package crap software",

    "Thou shalt allow thine gadgetry to be hacked",

    "Thou shalt make thine gadgetry easy to interface",

    "Thou shalt allow thine gadgetry to be acted upon by standard OS means",

    "Thou shalt not cripple thine feature set",

    "Thou shalt allow thine gadget to do whatever it needs to on its own"]

print("The 10+2 commandments of Geek Gadgetry")

print()

for iterator in range(len(commandments)):

    print(iterator, commandments[iterator])
</pre>
<p>Δέχομαι την κατηγορία ότι ο ορισμός της λίστας των 10+2 εντολών πιάνει περισσότερο χώρο από το πρόγραμμα αυτό κάθε αυτό (μία δήλωση for των δύο γραμμών) αλλά πρέπει να παραδεχθείτε ότι είναι cool εντολές…</p>
<p>Μετά λοιπόν τη δήλωση της λίστας και την εκτύπωση ενός τίτλου (για αισθητικούς περισσότερο λόγους) έχουμε την δήλωση for.</p>
<p>Ο iterator είναι η μεταβλητή που θα πάρει την τιμή των στοιχείων που βρίσκονται μέσα στην λίστα commandments. Ωστόσο αντί να πούμε for iterator in commandments (πράγμα που θα ήταν απόλυτα σωστό) περικλείουμε το commandments σε μία συνάρτηση len() που θα μας επιστρέψει τον αριθμό τον στοιχείων της λίστας commandments. Η len() με τη σειρά της περικλείεται σε μια συνάρτηση range() η οποία θα μας επιστρέψει μια ακολουθία αριθμών με τόσα στοιχεία όσα και αυτά της λίστας commandments.</p>
<p>Στη συνέχεια η εντολή print τυπώνει:</p>
<ul>
<li>Τον αριθμό της θέσης του στοιχείου στη λίστα (0, 1, 2, 3). Υπενθυμίζουμε ότι στην Python η πρώτη θέση πινάκων και λιστών θεωρείται η θέση 0.</li>
<li>Το στοιχείο που βρίσκεται στην εκάστοτε θέση της λίστας, στην περίπτωσή μας δηλαδή κάθε μία από τις 10 + 2 εντολές.</li>
</ul>
<p>Αν όλα πήγαν καλά το αποτέλεσμά σας πρέπει να μοιάζει με το παρακάτω:</p>
<pre name="code" class="python">
0 Thou shalt use a standard plug (preferably USB)

1 Thou shalt have good battery life

2 Thou shalt give nothing unneeded in the box, but always give necessary items

3 Thou shalt offer accessories, or at least help partners to

4 Thine gadgetry shall make sense

5 Thou shalt have a reasonable price for the life of thine gadget

6 Thou shalt not package crap software

7 Thou shalt allow thine gadgetry to be hacked

8 Thou shalt make thine gadgetry easy to interface

9 Thou shalt allow thine gadgetry to be acted upon by standard OS means

10 Thou shalt not cripple thine feature set

11 Thou shalt allow thine gadget to do whatever it needs to on its own
</pre>
<p>Σε αυτό το σημείο ο σημερινός μας οδηγός έφθασε στο τέλος του και αισίως έχετε γράψει τα πρώτα σας mini προγράμματα σε Python. Σας αξίζει λοιπόν μία δεύτερη κούπα από τον αγαπημένο σας καφέ ή τσάι. Στον επόμενο οδηγό μας θα ασχοληθούμε με συναρτήσεις στην Python αφού δούμε κάποια συμπληρωματικά στοιχεία σε όσα έχουμε ήδη πει.</p>
<p><em><span style="text-decoration: underline;">Να είστε καλά και να φροντίζεται τον εαυτό σας</span></em>.</p>
<blockquote>
<p style="text-align: center;"><em><strong>Μπορείτε να κατεβάσετε τα αρχεία του βοηθήματος εδώ</strong></em></p>
<p style="text-align: center;"><a href="http://greektuts.net/wp-content/uploads/2009/10/py_tuts_part_4.rar" target="_blank"><em><strong><img class="alignnone" src="../wp-content/uploads/2009/10/membersdownload1.png" alt="download" width="200" height="200" /></strong></em></a></p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://greektuts.net/python-part-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Μαθαίνοντας Python – Μέρος 3ο</title>
		<link>http://greektuts.net/python-part-3/</link>
		<comments>http://greektuts.net/python-part-3/#comments</comments>
		<pubDate>Sun, 18 Oct 2009 23:00:55 +0000</pubDate>
		<dc:creator>KrAp</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Μαθαίνοντας Python – Μέρος 3ο]]></category>
		<category><![CDATA[Μέρος 3ο]]></category>
		<category><![CDATA[Προγραμματισμός]]></category>

		<guid isPermaLink="false">http://greektuts.net/?p=1838</guid>
		<description><![CDATA[Σε προηγούμενα βοηθήματα κάναμε την εισαγωγή στην Γλώσσα προγραμματισμού Python, και είδαμε κάποια βασικά προβλήματα που μπορεί να αντιμετωπήσουμε. Το σημερινό μας άρθρο συμπληρώνει την παρουσίαση των βασικών θεμάτων της γλώσσας Python και θα μας επιτρέψει, από την επόμενη φορά, να αρχίσουμε να σχεδιάζουμε τα πρώτα μας προγράμματα. ]]></description>
			<content:encoded><![CDATA[<h2><strong>Προαπαιτούμενα</strong></h2>
<p>Δημιουργία ενός Python script (βλ. <a title="Permanent Link to Μαθαίνοντας Python – Μέρος 1ο" href="../archives/1571">Μαθαίνοντας Python – Μέρος 1ο</a> )</p>
<p>Εισαγωγή στην Python (βλ. <a href="../archives/1713">Μαθαίνοντας Python – Μέρος 2ο</a>)</p>
<h2><strong>Πριν ξεκινήσουμε…</strong></h2>
<p>… θα ήθελα να επισημάνω ένα – δύο πρακτικά ζητήματα.</p>
<p>Στη συνέχεια παρουσιάζεται ο τρόπος για να επιτευχθούν οι στόχοι που περιγράψαμε στην εισαγωγή. Θα παρατηρήσετε ότι το άρθρο ακολουθεί τη δομή:</p>
<blockquote><p><em>Μικρή περιγραφή του τι θέλουμε να επιτύχουμε (+ επιπλέον σχόλια)</em></p>
<p><em>Παράδειγμα κώδικα</em></p></blockquote>
<p>Στ ο τέλος του αρχείου θα βρείτε συνημμένο ένα python script που περιέχει συγκεντρωμένα όλα τα παραδείγματα.</p>
<p>Για να τα χρησιμοποιήσετε, αντιγράφετε το εκάστοτε παράδειγμα σε ένα νέο αρχείο python και το εκτελείτε (βλ. <a title="Permanent Link to Μαθαίνοντας Python – Μέρος 1ο" href="../archives/1571">Μαθαίνοντας Python – Μέρος 1ο</a> ). Τα παραδείγματα είναι φτιαγμένα με τέτοιον τρόπο ώστε να τυπώνουν τα αποτελέσματα στην οθόνη ώστε να μπορείτε να πιστοποιήσετε εύκολα τη λειτουργικότητά τους. Για διευκόλυνσή σας έχουμε χωρίσει τα παραδείγματα με σχόλια που δίνουν μια μικρή περιγραφή του τι επιχειρούμε κάθε φορά.</p>
<p>Καθίστε αναπαυτικά γιατί, θα πάρει λίγο χρόνο…</p>
<h2><strong>Συνένωση αλφαριθμητικών</strong></h2>
<p>Στην python μπορούμε να συνενώσουμε αλφαριθμητικά με 3 τρόπους.</p>
<ul>
<li>Τα αλφαριθμητικά σε παράθεση χωρισμένα με τον χαρακτήρα ‘+’</li>
<li>Τα αλφαριθμητικά απλά σε παράθεση</li>
<li>Με χρήση της συνάρτησης .strip()</li>
</ul>
<p>Η πρώτη περίπτωση έχει καλυφθεί σε προηγούμενο άρθρο μας. Σας παραθέτουμε παραδείγματα για τις υπόλοιπες δύο:</p>
<pre name="code" class="python">

print("Are you suggesting" " coconuts migrate?")

print('Are you suggesting'.strip() + ' coconuts migrate?')
</pre>
<h2><strong>Το αλφαριθμητικό ως πίνακας χαρακτήρων</strong></h2>
<p>Ένα αλφαριθμητικό στην Python μπορεί κανείς να το διαχειριστεί και ως πίνακα χαρακτήρων (λειτουργικότητα που παρέχεται και από άλλες γλώσσες όπως για παράδειγμα η C).</p>
<p>Για να καταλάβουμε λίγο καλύτερα γιατί ακριβώς μιλάμε αν έχουμε το αλφαριθμητικό “test” σαν πίνακας χαρακτήρων αυτό αναπαρίσταται ως:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="142" valign="top">
<p align="center">0</p>
</td>
<td width="142" valign="top">
<p align="center">1</p>
</td>
<td width="142" valign="top">
<p align="center">2</p>
</td>
<td width="142" valign="top">
<p align="center">3</p>
</td>
</tr>
<tr>
<td width="142" valign="top">
<p align="center">t</p>
</td>
<td width="142" valign="top">
<p align="center">e</p>
</td>
<td width="142" valign="top">
<p align="center">s</p>
</td>
<td width="142" valign="top">
<p align="center">t</p>
</td>
</tr>
</tbody>
</table>
<p>Δηλαδή αν η μεταβλητή μας που περιέχει το αλφαριθμητικό καλείται myString τότε δίνοντας στον διερμηνευτή της Python myString[0] θα πρέπει να μας επιστρέψει τον χαρακτήρα ‘t’.</p>
<p>Ας δούμε λίγο πιο αναλυτικά τι ενέργειες μας επιτρέπει η Python να εκτελέσουμε σε έναν πίνακα χαρακτήρων.</p>
<pre name="code" class="python">

text = "Are you suggesting coconuts migrate?"

text[8]

text[0:3]

text[4:7]

text[:19]

text[19:]
</pre>
<p>Δημιουργούμε το αλφαριθμητικό text. Εν συνέχεια, οι γραμμές κώδικα που σας δίνουμε έχουν τα εξής αποτελέσματα (κατά σειρά εμφάνισης):</p>
<ul>
<li>Επιστρέφεται ο χαρακτήρας που βρίσκεται στην θέση 8 (δηλαδή ο 9<sup>ος</sup> κατά σειρά χαρακτήρας του αλφαριθμητικού αφού η αρίθμηση των θέσεων ξεκινά από το 0)</li>
<li>Επιστρέφονται οι χαρακτήρες από τη θέση 0 ως την 3</li>
<li>Επιστρέφονται οι χαρακτήρες από τη θέση 4 ως την 7</li>
<li>Επιστρέφονται οι χαρακτήρες από τη θέση 19 και πριν’</li>
<li>Επιστρέφονται οι χαρακτήρες από τη θέση 19 και μετά</li>
</ul>
<p>Εκτός από θετικούς δείκτες θέσεων μπορούμε να έχουμε και αρνητικούς</p>
<pre name="code" class="python">

text = "Are you suggesting coconuts migrate?"

text[-1]

text[-2]

text[-3:]

text[:-10]

text[-0]
</pre>
<p>Και πάλι κατά σειρά εμφάνισης:</p>
<ul>
<li>Επιστρέφεται ο τελευταίος χαρακτήρας</li>
<li>Επιστρέφεται ο προ-τελευταίος χαρακτήρας</li>
<li>Επιστρέφονται οι 3 τελευταίοι χαρακτήρες</li>
<li>Επιστρέφονται οι χαρακτήρες από την δέκατη, από το τέλος, θέση και πριν</li>
<li>Επιστρέφεται ο πρώτος χαρακτήρας [το  -0 θεωρείται ίσο με το 0 ]</li>
</ul>
<p>Μπορούμε να συνδυάσουμε την συνένωση αλφαριθμητικών με τους πίνακες χαρακτήρων ως εξής:</p>
<pre name="code" class="python">

'Do ' + text[4:]
</pre>
<p>Η συγκεκριμένη γραμμή κώδικα συνενώνει το αλφαριθμητικό ‘Do’ με τους χαρακτήρες του αλφαριθμητικού της μεταβλητής text από την τέταρτη θέση και μετά.</p>
<h2><strong>Hacks πινάκων χαρακτήρων</strong></h2>
<p>Αν θεωρήσουμε το ίδιο αλφαριθμητικό</p>
<pre name="code" class="python">

text = "Are you suggesting coconuts migrate?"

text[1:2000]

text[120:]

text[5:4]

text[-100:]
</pre>
<p>Κατά σειρά εμφάνισης:</p>
<ul>
<li>Παίρνουμε το κομμάτι του πίνακα χαρακτήρων στο οποίο υπάρχει πληροφορία</li>
<li>Παίρνουμε “ “ (κενό χαρακτήρα)</li>
<li>Παίρνουμε “ “ (κενό χαρακτήρα)</li>
<li>Παίρνουμε το κομμάτι του πίνακα χαρακτήρων στο οποίο υπάρχει πληροφορία</li>
</ul>
<p>Από τα παραπάνω συμπεραίνουμε δηλαδή πως όταν οι θέσεις που ζητούμε δεν υπάρχουν ή δεν έχουν πληροφορία η Python μας επιστρέφει έναν κενό χαρακτήρα.</p>
<p><span style="text-decoration: underline;">ΠΡΟΣΟΧΗ</span>: Αν ζητήσουμε τον χαρακτήρα μιας θέσης με αρνητικό δείκτη που βρίσκεται έξω από τα όρια του αλφαριθμητικού μας τότε η Python θα μας επιστρέψει error. Για παράδειγμα, για το αλφαριθμητικό Are you suggesting coconuts migrate?  Η εντολή text[-50] θα προκαλέσει σφάλμα.</p>
<h2><strong>Εισαγωγή </strong><strong>Unicode χαρακτήρα</strong></h2>
<p>Η εισαγωγή Unicode χαρακτήρων γίνεται στην Python με τη χρήση του \u ακολουθούμενο από τον κωδικό του χαρακτήρα. Για παράδειγμα:</p>
<pre name="code" class="python">

print( "Are\u0020you suggesting..." )
</pre>
<p>Θα εμφανίσει στην κονσόλα μας:</p>
<p>Are you suggesting…</p>
<p>Μεταφράζοντας το \u0020 ως τον κενό χαρακτήρα.</p>
<h2><strong>Το μήκος ενός αλφαριθμητικού</strong></h2>
<p>Το μήκος ενός αλφαριθμητικού μπορούμε να το ανακτήσουμε χρησιμοποιώντας την συνάρτηση len() όπως φαίνεται παρακάτω:</p>
<pre name="code" class="python">

len(text)
</pre>
<p>Αν εκτελείτε τις εντολές του βοηθητικού μας αρχείου καθώς διαβάζεται τον οδηγό και στο συγκεκριμένο σημείο η Python σας επέστρεψε 36 τότε γνωρίζετε πλέον πώς να διαχειρίζεστε αλφαριθμητικά και σας αξίζει μια κούπα του αγαπημένου σας καφέ ή τσαγιού.</p>
<h2><strong>Λίστες</strong></h2>
<p>Οι λίστες είναι μια πολύ ενδιαφέρουσα και σημαντική δομή που προσφέρει η Python. Σαν δομή δεδομένου συναντάται σε πολλές γλώσσες προγραμματισμού και αποτελεί, όπως διαισθητικά καταλαβαίνει κανείς μια συλλογή πραγμάτων.</p>
<p>Στην Python δηλώνουμε μια λίστα περικλείοντας τα αντικείμενά της σε τετραγωνικές αγκύλες [ … , … , … , ]. Δεν είναι απαραίτητο να δηλώσουμε εξ’ αρχής όλα τα αντικείμενα που θέλουμε να περιλαμβάνει η λίστα μας. Επίσης, λόγω του ότι στην Python δεν δηλώνουμε τύπους δεδομένων οι λίστες μας μπορούν να αποτελούνται από αντικείμενα διαφορετικά μεταξύ τους (ακεραίους, πραγματικούς, αλφαριθμητικά, κ.ο.κ.).</p>
<p>Ας δούμε μερικά παραδείγματα:</p>
<p>Έστω η λίστα myList:</p>
<pre name="code" class="python">

myList = ['monty', 'python', 999, 222]

myList

myList[0]

myList[-1]

myList[1:-1]
</pre>
<p>Κατά σειρά οι παραπάνω εντολές έχουν τα εξής αποτελέσματα:</p>
<ul>
<li>Εμφανίζεται η λίστα όπως έχει δηλωθεί</li>
<li>Εμφανίζεται το πρώτο στοιχείο της λίστας</li>
<li>Εμφανίζεται το τελευταίο στοιχείο της λίστας</li>
<li>Εμφανίζονται τα στοιχεία της λίστας μεταξύ του πρώτου και του τελευταίου</li>
</ul>
<h2><strong>Εισαγωγή στοιχείου σε λίστα</strong></h2>
<pre name="code" class="python">

myList[1:1] = ['foo', 'foo2']
</pre>
<p>Η παραπάνω εντολή εισάγει τα στοιχεία ‘foo’ και ‘foo2’ στην δεύτερη και τρίτη θέση της λίστας που δηλώσαμε στο προηγούμενο ακριβώς παράδειγμα.</p>
<p>Εν γένει:</p>
<pre name="code" class="python">

myList[X] = <em>κάποιος τύπος δεδομένου </em>
</pre>
<p>Θα εισάγει το περιεχόμενο της μεταβλητής <em>Κάποιος τύπος δεδομένου </em>στην θέση Χ της λίστας myList</p>
<h2><strong>Διαγραφή στοιχείου από λίστα</strong></h2>
<pre name="code" class="python">

myList[0:2] = []
</pre>
<p>Η παραπάνω εντολή θα διαγράψει τα τρία πρώτα στοιχεία της λίστας myList</p>
<p>Εν γένει:</p>
<pre name="code" class="python">

myList[X] = []<em> </em>
</pre>
<p>Θα διαγράψει το στοιχείο που βρίσκεται στη θέση Χ της λίστας myList</p>
<h2><strong>Εισαγωγή ενός αντιγράφου της λίστας στην αρχή της</strong></h2>
<pre name="code" class="python">

myList[:0] = myList
</pre>
<p>Η παραπάνω εντολή θα δημιουργήσει ένα αντίγραφο της λίστας myList στην αρχή της</p>
<h2><strong>Καθαρισμός της λίστας</strong></h2>
<pre name="code" class="python">

myList[:] = []
</pre>
<p>Η παραπάνω εντολή θα καθαρίσει την λίστα myList από τα περιεχόμενά της</p>
<h2><strong>Μήκος μιας λίστας</strong></h2>
<p>Η συνάρτηση len() που είδαμε παραπάνω να χρησιμοποιείται για να μας δώσει το μήκος ενός πίνακα χαρακτήρων χρησιμοποιείται και στις λίστες με τον ίδιο ακριβώς σκοπό</p>
<p>Επομένως η εντολή:</p>
<pre name="code" class="python">

Len(myList)
</pre>
<p>Μας επιστρέφει τον αριθμό των στοιχείων που περιέχει η λίστα myList</p>
<h2><strong>Εμφωλευμένες λίστες</strong></h2>
<p>Η Python υποστηρίζει τον όρο της εμφωλευμένης λίστας δηλαδή μια λίστα μέσα σε μια άλλη λίστα.</p>
<pre name="code" class="python">

myNestedList = ["Holy", "Grail"]

myList = [myNestedList, "by", "Monty", "Python"]

print( myList )
</pre>
<p>Στον παραπάνω κώδικα η λίστα myNestedList αποτελεί στοιχείο της λίστας myList και επομένως αν εκτελέσουμε το συγκεκριμένο τμήμα κώδικα το αποτέλεσμα που θα πάρουμε θα είναι:</p>
<pre name="code" class="python">

[['Holy', 'Grail'], 'by', 'Monty', 'Python']
</pre>
<h2><strong>Προσθήκη στοιχείου στο τέλος της λίστας με χρήση της </strong><strong>append()</strong></h2>
<p>Εκτελώντας</p>
<pre name="code" class="python">

myList.append(Χ)
</pre>
<p>το στοιχείο Χ προστίθεται στο τέλος της τρέχουσας μορφής της λίστας myList.</p>
<p>Σε αυτό το σημείο ο σημερινός μας οδηγός έφθασε στο τέλος του και πλέον έχετε γνωρίσει τα βασικά στοιχεία της γλώσσας Python. Στον επόμενο οδηγό μας θα αρχίσουμε να σχεδιάζουμε μικρά python scripts που θα μας επιτρέψουν να εξερευνήσουμε την γλώσσα Python σε μεγαλύτερο βάθος.</p>
<p>Ως τότε όμως, <em><span style="text-decoration: underline;">να είστε καλά και να προσέχετε τον εαυτό σας</span></em>.</p>
<blockquote>
<p style="text-align: center;"><em><strong>Μπορείτε να κατεβάσετε τα αρχεία του βοηθήματος εδώ</strong></em></p>
<p style="text-align: center;"><em><strong><a href="http://greektuts.net/wp-content/uploads/2009/10/py_tuts_part_3.rar"><img class="aligncenter" src="../wp-content/uploads/2009/10/membersdownload1.png" alt="download" width="200" height="200" /></a></strong></em></p>
</blockquote>
<link type="text/css" rel="stylesheet" href="css/SyntaxHighlighter.css"></link>
<script language="javascript" src="js/shCore.js"></script><br />
<script language="javascript" src="js/shBrushCSharp.js"></script><br />
<script language="javascript" src="js/shBrushXml.js"></script><br />
<script language="javascript">
dp.SyntaxHighlighter.ClipboardSwf = '/flash/clipboard.swf';
dp.SyntaxHighlighter.HighlightAll('code');
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://greektuts.net/python-part-3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Μαθαίνοντας Python – Μέρος 2ο</title>
		<link>http://greektuts.net/python-part-2/</link>
		<comments>http://greektuts.net/python-part-2/#comments</comments>
		<pubDate>Sun, 11 Oct 2009 22:08:54 +0000</pubDate>
		<dc:creator>KrAp</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Γλώσσα Προγραμματισμού]]></category>
		<category><![CDATA[Μαθαίνοντας Python – Μέρος 2ο]]></category>
		<category><![CDATA[Προγραμματισμός]]></category>

		<guid isPermaLink="false">http://greektuts.net/?p=1713</guid>
		<description><![CDATA[Στο προηγούμενο μέρος κάναμε την εισαγωγή μας στον κόσμο της Python. Στο σημερινό μας βοήθημα θα ασχοληθούμε με βασικά θέματα που λίγο πολύ αντιμετωπίζονται παρόμοια από όλες τις γλώσσες (υψηλού επιπέδου) προγραμματισμού.]]></description>
			<content:encoded><![CDATA[<p>Στο τέλος του οδηγού θα μπορούμε:</p>
<ul>
<li>Να εκτελούμε αριθμητικές πράξεις με γνωστούς (και λιγότερο γνωστούς) αριθμητικούς τελεστές</li>
<li>Να αναθέτουμε τιμές σε μεταβλητές (…σωστά!)</li>
<li>Να χειριζόμαστε σύνθετους (μιγαδικούς) αριθμούς</li>
<li>Βασικές λειτουργίες αλφαριθμητικών</li>
</ul>
<h2><strong>Προαπαιτούμενα</strong></h2>
<p>Δημιουργία ενός Python script (βλ. <a title="Permanent Link to Μαθαίνοντας Python – Μέρος 1ο" href="../archives/1571">Μαθαίνοντας Python – Μέρος 1ο</a> )</p>
<h2><strong>Πριν ξεκινήσουμε…</strong></h2>
<p>… θα ήθελα να επισημάνω ένα πρακτικά ζητήματα.</p>
<p>Στη συνέχεια παρουσιάζεται ο τρόπος για να επιτευχθούν οι στόχοι που περιγράψαμε στην εισαγωγή. Θα παρατηρήσετε ότι το άρθρο ακολουθεί τη δομή:</p>
<blockquote>
<ul>
<li><em>Μικρή περιγραφή του τι θέλουμε να επιτύχουμε (+ επιπλέον σχόλια)</em></li>
<li><em>Παράδειγμα κώδικα</em></li>
</ul>
</blockquote>
<p>Στο τέλος του βοηθήματος θα βρείτε συνημμένο ένα python script που περιέχει συγκεντρωμένα όλα τα παραδείγματα.</p>
<p>Για να τα χρησιμοποιήσετε, αντιγράφετε το εκάστοτε παράδειγμα σε ένα νέο αρχείο python και το εκτελείτε (βλ. <a title="Permanent Link to Μαθαίνοντας Python – Μέρος 1ο" href="../archives/1571">Μαθαίνοντας Python – Μέρος 1ο</a> ). Τα παραδείγματα είναι φτιαγμένα με τέτοιον τρόπο ώστε να τυπώνουν τα αποτελέσματα στην οθόνη ώστε να μπορείτε να πιστοποιήσετε εύκολα τη λειτουργικότητά τους. Για διευκόλυνσή σας έχουμε χωρίσει τα παραδείγματα με σχόλια που δίνουν μια μικρή περιγραφή του τι επιχειρούμε κάθε φορά.</p>
<p>Καθίστε αναπαυτικά γιατί, θα πάρει λίγο χρόνο…</p>
<h2><strong>Python &amp; Σχόλια</strong></h2>
<p>Τα σχόλια στην python δηλώνονται με ένα # στην αρχή:</p>
<pre>

# Εδώ θα βρείτε τα παραδείγματα που παρουσιαστηκαν στο 2ο

# μέρος του οδηγου "Μαθαινοντας την Python" όπως δημοσιεύθηκε

# στο www.GreekTuts.net.

#

# Επιμέλεια: Απόστολος Κρητικός (KrAp)
</pre>
<h2><strong>Χρησιμοποιώντας την </strong><strong>Python ως αριθμομηχανή</strong></h2>
<p>Η python υποστηρίζει τους κλασικούς αριθμητικούς τελεστές:</p>
<ul>
<li>+ πρόσθεση</li>
<li>-  αφαίρεση)</li>
<li>* πολλαπλασιασμός</li>
<li>/ διαίρεση</li>
<li>// ακέραιο μέρος διαίρεσης</li>
<li>** δύναμη</li>
</ul>
<pre>

print( 1 + 1 )

print( 5 - 3 )

print( 3 * 3 )

print( 8 / 2 )

print( 8.8 / 3 )

print( (100-4*5)/4 )

print( 5//2 )

print( 3**3 )
</pre>
<h2><strong>Ανάθεση τιμών σε μεταβλητές</strong></h2>
<p>Οι μεταβλητές στην python δεν έχουν τύπους. Αυτό σημαίνει ότι σε μια μεταβλητή μπορεί να γίνει εκχώρηση μιας τιμής χωρίς να μας ενδιαφέρει αν πρόκειται για ακέραιο, πραγματικό, αλφαριθμητικό, λίστα, αντικείμενο, κλπ. Γράφουμε το όνομα της μεταβλητής και η τιμή ακολουθεί μετά το σύμβολο ‘=’. Στο παράδειγμα που ακολουθεί μπορείτε να δείτε ένα προγραμματάκι python το οποίο υπολογίζει το εμβαδό τριγώνου. Προς το παρόν αγνοείστε το γεγονός ότι οι μεταβλητές δηλώνονται μέσα στον κώδικα (δεν τις παρέχει δηλαδή ο χρήστης) μιας και αυτό θα αποτελέσει θέμα μελέτης σε μεταγενέστερα άρθρα .</p>
<pre>

base = 8

height = 3

triangle_area = (8 * 3) / 2

print( triangle_area )
</pre>
<h2><strong>Ανάθεση πολλαπλών τιμών &amp; «Ψυχεδελική ανάθεση» τιμών</strong></h2>
<p>Η python μας δίνει τη δυνατότητα να αναθέσουμε την ίδια τιμή σε πολλές μεταβλητές χρησιμοποιώντας μία μόνον δήλωση.</p>
<pre>

variable1 = variable2 = variable3 = 5

print( variable1 )

print( variable2 )

print( variable3 )
</pre>
<p>Επίσης μας δίνει τον παρακάτω, άκρως «ψυχεδελικό» τρόπο δήλωσης τιμών.</p>
<pre>

x, y = 5, 10

print( x )

print( y )
</pre>
<p>Όπου οι μεταβλητές παίρνουν κατά σειρά τις τιμές που ακολουθούν. Στο παράδειγμά μας δηλαδή η μεταβλητή x θα πάρει την τιμή 5 και η y την τιμή 10.</p>
<h2><strong>Σύνθετη (μιγαδικοί) αριθμοί</strong></h2>
<p>Η υποστήριξη μιγαδικών αριθμών είναι κάτι που δεν βλέπουμε συχνά σε μια γλώσσα προγραμματισμού (παρεμπιπτόντως αν σκεφθείτε κάποια χρήση αφήστε την σε σχόλιο, με ενδιαφέρει). Η python μας επιτρέπει να ορίσουμε έναν μιγαδικό με έναν από τους δύο τρόπους που μπορείτε να δείτε στο παράδειγμα που ακολουθεί, να τον αποσυνθέσουμε σε πραγματικό και φανταστικό μέρος και να υπολογίσουμε το μέτρο του. Είναι επίσης εφικτές πράξεις μεταξύ των μιγαδικών.</p>
<pre>

c = -1+5j

c2 = complex(-1,5) )

print( c.real )

print( c.imag )

print( abs(c) )
</pre>
<h2><strong>Αλφαριθμητικά (</strong><strong>Strings)</strong></h2>
<ul>
<li>Δήλωση αλφαριθμητικού. Οι δύο τρόποι που φαίνονται στο παρακάτω παράδειγμα είναι ισοδύναμοι.</li>
</ul>
<pre>

print( "Are you suggesting coconuts migrate?" );

print( 'Are you suggesting coconuts migrate?' );
</pre>
<ul>
<li>Πως μπορούμε να συμπεριλάβουμε απλά και διπλά εισαγωγικά μέσα στο αλφαριθμητικό;</li>
</ul>
<pre>

print( "Are you suggesting coconuts don\'t migrate? " );

print( "Are you suggesting coconuts \"migrate\"? " );
</pre>
<ul>
<li>Σπάσιμο κειμένου σε πολλαπλές γραμμές στο αρχείο του python script. Χρησιμοποιούμε τον χαρακτήρα ‘\’ για να δηλώσουμε ότι το κείμενο συνεχίζει στην επόμενη γραμμή. <span style="text-decoration: underline">ΠΡΟΣΟΧΗ</span>: Στην κονσόλα, το κείμενό μας θα εμφανιστεί σε μία ενιαία γραμμή.</li>
</ul>
<pre>

print( "- Are you suggesting coconuts migrate?\

- Not at all, now call your master!");
</pre>
<ul>
<li>Σπάσιμο κειμένου σε πολλαπλές γραμμές στην κονσόλα αποτελεσμάτων. Χρησιμοποιούμε τον συνδυασμό χαρακτήρων ‘\n’. Αν θέλουμε να συνδυάσουμε σπάσιμο κειμένου στο αρχείο κώδικα και την κονσόλα πρέπει υποχρεωτικά να χρησιμοποιήσουμε τον συνδυασμό ‘\n\’.</li>
</ul>
<pre>

print( "- Are you suggesting coconuts migrate?\n- Not at all, now call your master!");
</pre>
<ul>
<li>Εμφάνιση του κειμένου του αλφαριθμητικού ακριβώς όπως έχει δηλωθεί. Μπορεί να γίνει με χρήση “”” (τριών διπλών εισαγωγικών) στην αρχή και στο τέλος του κειμένου ή με την χρήση του r ακριβώς πριν τα διπλά εισαγωγικά στην αρχή του κειμένου. Τα παρακάτω παραδείγματα είναι ενδεικτικά:</li>
</ul>
<pre>

# Χρήση “””

print("""

- Are

you

suggesting

coconuts

migrate?                Are you?

""")
</pre>
<pre>

#Χρήση r

print(r"\

- Are\

you\

suggesting\n\

coconuts\

migrate?                Are you?\

")
</pre>
<p><span style="text-decoration: underline">ΠΑΡΑΤΗΡΗΣΗ</span>: Στο δεύτερο παράδειγμα παρατηρείτε ότι το κείμενο εμφανίζεται μαζί με τους χαρακτήρες αλλαγής γραμμής. Μην αγχώνεστε! Δεν κάνατε τίποτε λάθος. Απλά αυτή είναι η λειτουργία του χαρακτήρα r μπροστά από τη δήλωση του κειμένου του αλφαριθμητικού.</p>
<h2><strong>Πράξεις επί των αλφαριθμητικών</strong></h2>
<p>Η python μας δίνει τη δυνατότητα, όπως και οι περισσότερες γλώσσες προγραμματισμού, να συνενώσουμε δύο αλφαριθμητικά.</p>
<pre>

string1 = "Are you suggesting"

string2 = "coconuts "

print( string1 + " " +  string2 + "migrate?")
</pre>
<p>Αυτό που δεν συναντάμε συχνά σε άλλες γλώσσες προγραμματισμού είναι η δυνατότητα να πολλαπλασιάσουμε ένα αλφαριθμητικό, δηλαδή να το κάνουμε να εμφανιστεί πολλές φορές συνεχόμενα.</p>
<pre>

string1 = "Are you suggesting"

string2 = "coconuts "

print( string1 + " " + string2 * 3 + "migrate?")
</pre>
<p>Όπως παρατηρείτε η τελευταία γραμμή επιβάλει στο αλφαριθμητικό string2 να επαναλάβει τον εαυτό του 3 φορές.</p>
<p>Σε περίπτωση που:</p>
<ul>
<li>Είχατε την υπομονή να τρέξετε όλα τα παραδείγματα</li>
<li>Τρέξατε κάποια από τα παραδείγματα και ήταν επιτυχή</li>
<li>Βρήκατε κάποια χρήση για τους μιγαδικούς αριθμούς και την μοιραστήκατε μαζί μας</li>
</ul>
<p>Σας αξίζουν 2 κούπες από τον αγαπημένο σας καφέ ή τσάι (όχι τη μία μετά την άλλη, κάνει κακό στα νεύρα).</p>
<p>Μέχρι την επόμενη φορά που θα τα πούμε, να είστε καλά και να προσέχετε τον εαυτό σας.</p>
<p></strong> <em> </em></p>
<p style="text-align: center"><em><strong>Μπορείτε να κατεβάσετε τα αρχεία του βοηθήματος εδώ</strong></em></p>
<p style="text-align: center"><em><strong><a href="http://greektuts.net/wp-content/uploads/2009/10/py_tuts_part_2.py"><img class="alignnone size-full wp-image-1650" src="http://greektuts.net/wp-content/uploads/2009/10/membersdownload1.png" alt="download" width="200" height="200" /></a><br />
</strong></em></p>
]]></content:encoded>
			<wfw:commentRss>http://greektuts.net/python-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Μαθαίνοντας Python – Μέρος 1ο</title>
		<link>http://greektuts.net/python-part-1/</link>
		<comments>http://greektuts.net/python-part-1/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 07:19:32 +0000</pubDate>
		<dc:creator>KrAp</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Γλώσσα]]></category>
		<category><![CDATA[Μαθαίνοντας Python – Μέρος 1ο]]></category>
		<category><![CDATA[Προγραμματισμός]]></category>
		<category><![CDATA[Προγραμματισμού]]></category>

		<guid isPermaLink="false">http://greektuts.net/?p=1571</guid>
		<description><![CDATA[Γλώσσες προγραμματισμού όπως η Java,ν VB, η C++, κλπ. αποτελούν, κατά τη γνώμη μου, το βαρύ πυροβολικό στον κόσμο του προγραμματισμού. Συχνά όμως, οι προγραμματιστές θέλουν να γράψουν μια μικρή εφαρμογή, που να τους καλύπτει κάποια συγκεκριμένη ανάγκη, στα γρήγορα.]]></description>
			<content:encoded><![CDATA[<p>Στο σημερινό μας άρθρο θα κάνουμε μια εισαγωγή στην Python, μια απλά αλλά παράλληλα «δυνατή» γλώσσα προγραμματισμού, που θα σας επιτρέψει να αναπτύσσετε τις μικροεφαρμογές σας εύκολα και γρήγορα.</p>
<h2><strong>Γιατί </strong><strong>Python;</strong></h2>
<ul>
<li>Διότι αποτελεί scripting γλώσσα  και γλώσσα προγραμματισμού. Αυτό σημαίνει ότι αν και είναι μία διερμηνευόμενη γλώσσα (δεν χρειάζεται να μεταγλωττίσετε τον κώδικά σας, απλά σώζεται και «τρέχετε» την εφαρμογή σας), διατηρεί τα περισσότερα πλεονεκτήματα μιας κλασικής γλώσσας  προγραμματισμού (π.χ. Java, VB, κλπ.).</li>
<li>Είναι μια «απλή γλώσσα προγραμματισμού» ενώ συχνά την κατηγοριοποιούν στις very – high level languages. Οι δύο αυτοί χαρακτηρισμοί οφείλονται κυρίως στην απλή σύνταξη και τους «γενικούς» τύπους δεδομένων (που της επιτρέπουν μεγάλο πεδίο εφαρμογής).</li>
<li>Επιτρέπει τη δημιουργία modules που μπορούν να χρησιμοποιηθούν εύκολα από άλλες εφαρμογές γραμμένες σε Python.</li>
<li>Είναι προσανατολισμένη στην συγγραφή μικρότερων και συμπυκνωμένων εφαρμογών. Έτσι τα προγράμματα σε Python είναι αισθητά μικρότερα από τα αντίστοιχά τους σε γλώσσες όπως οι C/C++ ή Java.</li>
<li>Το όνομά της σχετίζεται με την show του BBC “Monty Python’s Flying Circus” και όχι με το γνωστό ερπετό (αν οι Monty Pythons δεν σας είναι οικείοι, ψάξτε το λίγο παραπάνω, αξίζει!)</li>
</ul>
<h2><strong>Προαπαιτούμενα</strong></h2>
<p>Το μόνο που χρειαζόμαστε είναι ο διερμηνευτής της Python.</p>
<h2><strong>Βουτιά στα βαθειά. Πως εγκαθιστώ την </strong><strong>Python στον υπολογιστή μου;</strong></h2>
<p>Επισκεπτόμαστε το <a href="http://www.python.org/download/">http://www.python.org/download/</a> και κατεβάζουμε το αρχείο εγκατάστασης που ταιριάζει στο λειτουργικό μας σύστημα και τα χαρακτηριστικά του υπολογιστή μας. <em>(Στα πλαίσια του συγκεκριμένου οδηγού θα εγκαταστήσουμε την </em><em>Python 3.1.1 σε σύστημα 64</em><em>bit που φιλοξενεί </em><em>Windows λειτουργικό σύστημα, επομένως κατεβάζουμε το αρχείο εγκατάστασης python-3.1.1.amd64.</em><em>msi)</em></p>
<blockquote>
<p style="text-align: center"><img class="size-full wp-image-1574 aligncenter" src="http://greektuts.net/wp-content/uploads/2009/10/001.png" alt="001" width="600" height="470" /></p>
</blockquote>
<p>Ακολουθούμε πιστά τις  οδηγίες του οδηγού εγκατάστασης χωρίς να αλλάξουμε καμία απολύτως ρύθμιση.</p>
<blockquote>
<p style="text-align: center"><img class="size-full wp-image-1575 aligncenter" src="http://greektuts.net/wp-content/uploads/2009/10/002.png" alt="002" width="509" height="438" /></p>
</blockquote>
<p>Περιμένουμε λίγη ώρα και τελικά, αν όλα πήγαν καλά, πρέπει να βλέπουμε στις οθόνες μας το εξής παράθυρο:</p>
<blockquote>
<p style="text-align: center"><img class="size-full wp-image-1576 aligncenter" src="http://greektuts.net/wp-content/uploads/2009/10/003.png" alt="003" width="509" height="438" /></p>
</blockquote>
<p>Η Python έχει εγκατασταθεί στο σύστημά μας και είμαστε έτοιμη να γράψουμε το πρώτο μας πρόγραμμα…</p>
<h2><strong>Το περιβάλλον της </strong><strong>Python 3.1.1</strong></h2>
<p>…πριν όμως το κάνουμε αυτό ας ρίξουμε μια ματιά στο περιβάλλον της Python. Στον φάκελο <em>Έναρξη &gt; Προγράμματα &gt; </em><em>Python </em>(που αποτελεί το βασικό μενού εικονιδίων της Python) θα βρούμε τις εξής επιλογές:</p>
<ul>
<li>IDLE (Python GUI)</li>
<li>Module Docs</li>
<li>Python (command line)</li>
<li>Python Manuals</li>
<li>Uninstall Python</li>
</ul>
<p>Οι δύο τελευταίες επιλογές είναι προφανές ότι αντιστοιχούν σε προβολή του εγχειριδίου χρήσης της γλώσσας και απεγκατάσταση της Python από τον υπολογιστή. Ας δούμε λίγο αναλυτικότερα τις υπόλοιπες τρεις.</p>
<p><span style="text-decoration: underline">IDLE (</span><span style="text-decoration: underline">Python </span><span style="text-decoration: underline">GUI)</span>: Αποτελεί μια διεπαφή χρήστη που, εκτός από το γεγονός ότι ανοίγει τον διερμηνευτή της Python, προσφέρει κάποιες ευκολίες στον προγραμματιστή όπως να ανοίγει και να επεξεργάζεται εφαρμογές python, να κάνει debugging και πολλές από τις ευκολίες που παρέχει ένας μέσος επεξεργαστής κειμένου (εύρεση / αντικατάσταση, λειτουργίες αντιγραφής / αποκοπής / επικόλλησης, κλπ.).  Αποτελεί το εργαλείο που θα χρησιμοποιήσουμε για να δημιουργούμε, να τρέχουμε, να δοκιμάζουμε και να εκτελούμε λειτουργίες debugging στην τρέχουσα σειρά σεμιναρίων. Φυσικά, για την συγγραφή των Python εφαρμογών μας μπορούμε να χρησιμοποιήσουμε εναλλακτικά οποιονδήποτε άλλο επεξεργαστή κειμένου μας βολεύει.</p>
<blockquote>
<p style="text-align: center"><img class="size-full wp-image-1577 aligncenter" src="http://greektuts.net/wp-content/uploads/2009/10/004.png" alt="004" width="600" height="431" /></p>
</blockquote>
<p><span style="text-decoration: underline">Module </span><span style="text-decoration: underline">Docs</span>: Πρόκειται για ένα εργαλείο που επιτρέπει στον προγραμματιστή να περιηγηθεί στα modules που περιέχονται εγγενώς στην Python καθώς και να εμφανίσει πληροφορίες για τις λειτουργίες τους. Τέλος δίνει τη δυνατότητα στον χρήστη να δει τα πάντα συγκεντρωμένα μέσω του αγαπημένου του web browser.</p>
<blockquote>
<p style="text-align: center"><img class="size-full wp-image-1578 aligncenter" src="http://greektuts.net/wp-content/uploads/2009/10/005.png" alt="005" width="499" height="355" /></p>
</blockquote>
<p><span style="text-decoration: underline">Python (command line)</span>:</p>
<p>Ουσιαστικά ανοίγει τον διερμηνευτεί της Python σε ένα περιβάλλον DOS ώστε να μπορούμε να «τρέξουμε» τις εφαρμογές μας. Ωστόσο δεν προσφέρει καμία επιπλέον δυνατότητα. Χρησιμοποιείτε συνήθως για να τρέχουμε προγράμματα τα οποία έχουν ήδη δοκιμαστεί για σφάλματα.</p>
<blockquote>
<p style="text-align: center"><img class="size-full wp-image-1579 aligncenter" src="http://greektuts.net/wp-content/uploads/2009/10/006.png" alt="006" width="600" height="303" /></p>
</blockquote>
<h2><strong>Το πρώτο μας </strong><strong>Python </strong><strong>script</strong></h2>
<p>Ανοίγουμε το IDLE (Python GUI).</p>
<blockquote>
<p style="text-align: center"><img class="size-full wp-image-1580 aligncenter" src="http://greektuts.net/wp-content/uploads/2009/10/007.png" alt="007" width="600" height="326" /></p>
</blockquote>
<p>Επιλέγουμε <em>File &gt; </em><em>New </em><em>Window </em>ή εκτελούμε<em> </em><em>Ctrl + </em><em>N</em>. Ένα παράθυρο κειμενογράφου ανοίγει.</p>
<blockquote>
<p style="text-align: center"><img class="size-full wp-image-1581 aligncenter" src="http://greektuts.net/wp-content/uploads/2009/10/008.png" alt="008" width="600" height="296" /></p>
</blockquote>
<p>Γράφουμε τον κώδικα:</p>
<pre name="code" class="python">
print(“We are no longer the knights who say NI…”)
</pre>
<p>και σώζουμε το αρχείο ( <em>File &gt; </em><em>Save ή </em><em>Ctrl+</em><em>S</em> ) ως test σε φάκελο της επιλογής μας.</p>
<p>Στη συνέχεια, μένοντας στο παράθυρο του κώδικα, επιλέγουμε <em>Run &gt; </em><em>Run </em><em>module</em> ή πατούμε το <em>F5</em>.</p>
<p>Αν βλέπετε:</p>
<blockquote>
<p style="text-align: center"><img class="size-full wp-image-1582 aligncenter" src="http://greektuts.net/wp-content/uploads/2009/10/009.png" alt="009" width="600" height="329" /></p>
</blockquote>
<p>Έχετε γράψει επιτυχώς το πρώτο python script και σας αξίζει μια ζεστή κούπα καφέ ή τσαγιού.</p>
<p><strong> </strong></p>
]]></content:encoded>
			<wfw:commentRss>http://greektuts.net/python-part-1/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
