Απαντήσεις: Μάθημα 0 - Εισαγωγή, Μάθημα 1 - Τα βασικά
| Revision: | 0.2 |
|---|---|
| Date: | 2009-07-12 |
| Author: | Savvas Radevic <vicedar@gmail.com> |
| Copyright: | © 2009 Savvas Radevic <vicedar@gmail.com>, © 2009 python-gr group <python-gr@googlegroups.com> |
| Credits: | |
| License: | GNU FDL 1.3 <http://www.gnu.org/licenses/fdl-1.3.txt> Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts and no Back-Cover Texts. A copy of the license is included in the file entitled "COPYING-DOCS.txt". |
| Source: | |
| PDF: |
Περιεχόμενα
| Ελληνικά | English |
|---|---|
| Συμβολοσειρά | String/Text string |
| Μεταβλητές | Variables |
| Τύποι δεδομένων | Data types |
| Αντικείμενα | Objects |
| Συνένωση | Concatenation |
| Εισαγωγικά | Quotes (π.χ. '',"") |
Οποιεσδήποτε απορίες σχετικά με τις ασκήσεις / απαντήσεις, μπορείτε να τις εναποθέσετε στο θέμα συζήτησης: http://forum.ubuntu-gr.org/viewtopic.php?f=55&t=5574
Ποιος είναι ο δημιουργός της python;
Δημιουργήθηκε από τον Ολλανδό Guido van Rossum. Συνεχίζει να προσφέρει στο θαυμάσιο έργο του μαζί με άλλα μέλη της κοινότητας (κεντρική ομάδα ανάπτυξης / "core development team"). Η ανάπτυξη διευθύνεται από τον οργανισμό μη-κερδοσκοπικού χαρακτήρα Python Software Foundation.
Πηγές: 1. http://en.wikipedia.org/wiki/History_of_the_Python_programming_language 2. http://en.wikipedia.org/wiki/Python_Software_Foundation 3. http://en.wikipedia.org/wiki/Python_(programming_language)
Υπό ποιά άδεια διατίθεται η python;
Python Software Foundation License, άλλως "Python License": http://www.python.org/psf/license/
Η python είναι στατική ή δυναμική γλώσσα προγραμματισμού; Αναφέρατε και άλλες γλώσσες προγραμματισμού με τα ίδια χαρακτηριστικά.
Είναι δυναμική γλώσσα: http://en.wikipedia.org/wiki/Dynamic_language Άλλες γλώσσες παρόμοιου τύπου: PHP, Perl, Ruby... http://en.wikipedia.org/wiki/Dynamic_language#Languages
Η python ακολουθεί το πρότυπο του δομικού (structured), διαδικαστικού (procedural) ή αντικειμενοστραφούς (object-oriented) προγραμματισμού; Αναφέρατε δύο παραδείγματα γλωσσών από κάθε κατηγορία.
Η python είναι γλώσσα η οποία αντιπροσωπεύει τον πολυ-παραδειγματικό τύπο προγραμματισμού (multi-paradigm) http://en.wikipedia.org/wiki/Multi-paradigm_programming_language Επιτρέπει structured και OO (Object oriented) programming: http://en.wikipedia.org/wiki/Python_(programming_language)#Programming_philosophy Βρήκα και ένα μήνυμα όπου αναφέρουν πως δέχεται και procedural programming: http://mail.python.org/pipermail/tutor/1999-April/000122.html
Αναφέρετε 10 εφαρμογές που είναι γραμμένες σε python.
Deluge BitTorrent Client, Nicotine-Plus, PyChess, PyScrabble, streamtuner, regina, kig, avogadro, exaile, minirok, labyrinth, gmail-notify, django, pylons, yum, viewvc... :-) Ψάξτε για "python" στο Ubuntu (Applications Add/Remove) ή επισκεφτείτε την ιστοσελίδα http://en.wikipedia.org/wiki/Python_software
Τι κατάληξη έχουν τα αρχεία της python;
Συνήθως .py για να μπορούν να αναγνωρίζονται από το Windows. Σε UNIX/Linux λειτουργικά συστήματα, ασχέτως της κατάληξης, μπορείτε να θέσετε σαν πρώτη γραμμή "#!/usr/bin/python", το λεγόμενο "hashbang": http://en.wikipedia.org/wiki/Shebang_(Unix)
Γράψτε το γνωστό "Hello, world" πρόγραμμα σε python.
Κοιτάξτε το Μάθημα 0 - Εισαγωγή
Πόσοι και ποιοί τύποι μεταβλητών υπάρχουν;
Απάντηση: 1. Αριθμοί:
- Ακέραιοι:
#!/usr/bin/python2.6 1; 23; 3493 # Decimal integers 01; 027; 06645 # Octal integers 0x1; 0x17; 0xDA5 # Hexadecimal integers long(1); long(23); long(99999333493) # Long decimal integers long(01); long(027); long(01351033136165) # Long octal integers long(0x1); long(0x17); long(0x17486CBC75) # Long hexadecimal integers#!/usr/bin/python3 1; 23; 3493 # Decimal integers # Στην python3 οι ακέραιοι τύπου octal χρειάζονται "0ο" στην αρχή 0o1; 0o27; 0o6645 # Octal integers 0x1; 0x17; 0xDA5 # Hexadecimal integers # Στην python3 οι ακέραιοι τύπου long έχουν συνενωθεί με τους κανονικούς ακέραιους int # Δεν υπάρχει long(), είναι int() τώραΠηγή: http://diveintopython3.org/porting-code-to-python-3-with-2to3.html
$ python3 Python 3.0.1+ (r301:69556, Apr 15 2009, 17:25:52) [GCC 4.3.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> 1.0; 23.0222424; 3493 1.0 23.0222424 3493
$ python3 Python 3.0.1+ (r301:69556, Apr 15 2009, 17:25:52) [GCC 4.3.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> "Hello!" 'Hello!' >>> "Τεστ τεστ" 'Τεστ τεστ' >>> a = "Τεστ τεστ" >>> print(a) Τεστ τεστ
Δημιουργήστε τις ακόλουθες μεταβλητές:
- Μια μεταβλητή με το όνομα metavliti21 χρησιμοποιώντας διπλά εισαγωγικά με την ακόλουθη τιμή:
- Έχεις καμιά ιδέα πού να πάμε;
Απάντηση:
metavliti21 = "- Έχεις καμιά ιδέα πού να πάμε;"
- Μια μεταβλητή με το όνομα metavliti22 χρησιμοποιώντας μονά εισαγωγικά με την ακόλουθη τιμή:
- Ναι, ας πάμε στο Καφεωδείο "ΟΡΦΕΑΣ".
Απάντηση:
metavliti21 = '- Ναι, ας πάμε στο Καφεωδείο "ΟΡΦΕΑΣ".'
- Μια μεταβλητή με το όνομα metavliti23 χρησιμοποιώντας διπλά εισαγωγικά με την ακόλουθη τιμή:
"Αυτό είναι "παράδειγμα" 'χρήσης' πολλών εισαγωγικών."
Απάντηση:
metavliti23 = "\"Αυτό είναι \"παράδειγμα\" 'χρήσης' πολλών εισαγωγικών.\""
Δημιουργήστε μια καινούργια μεταβλητή metavliti31.
Θέστε την τιμή της μεταβλητής metavliti31 συνενώνοντας τις μεταβλητές metavliti21 και metavliti22 με μια κενή γραμμή στο ενδιάμεσο:
- Έχεις καμιά ιδέα πού να πάμε; (κενή γραμμή) - Ναι, ας πάμε στο Καφεωδείο "ΟΡΦΕΑΣ".
Απάντηση:
Ένας από τους παρακάτω τρόπους θα ήταν αποδεκτός:
#!/usr/bin/python3 metavliti31 = print(metavliti21 + "\n\n" + metavliti22) metavliti31 = print("{0}\n\n{1}".format(metavliti21, metavliti22)) metavliti31 = print("%s\n\n%s" % (metavliti21, metavliti22))
Ποιοι χαρακτήρες μπορούν να χρησιμοποιηθούν για το όνομα μιας μεταβλητής και ποιοι για την τιμή μιας μεταβλητής;
Υπάρχει διαφορά για python3.0 και python2.6 σε αυτό το σημείο;
Απάντηση:
Για το όνομα μιας μεταβλητής:
Για την τιμή μιας μεταβλητής:
- python3 - δέχεται χαρακτήρες από το σύνολο Unicode (ή/και UTF-8;)
- python2.6 - δέχεται χαρακτήρες από το σύνολο Unicode (ή/και UTF-8;) - για αντιπροσώπευση ως Unicode χρειάζεται η χρήση του u"":
$ python Python 2.6.2 (release26-maint, Apr 19 2009, 01:58:18) [GCC 4.3.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> u"Τρώω και μαγειρεύω" u'\u03a4\u03c1\u03ce\u03c9 \u03ba\u03b1\u03b9 \u03bc\u03b1\u03b3\u03b5\u03b9\u03c1\u03b5\u03cd\u03c9' >>> print(u"Τρώω και μαγειρεύω") Τρώω και μαγειρεύω >>> "Τρώω και μαγειρεύω" '\xce\xa4\xcf\x81\xcf\x8e\xcf\x89 \xce\xba\xce\xb1\xce\xb9 \xce\xbc\xce\xb1\xce\xb3\xce\xb5\xce\xb9\xcf\x81\xce\xb5\xcf\x8d\xcf\x89' >>> print("Τρώω και μαγειρεύω") Τρώω και μαγειρεύω >>>
Θέστε δύο μεταβλητές:
ilikia=20 onoma="Ανδρέας"Το πρώτο συμβολίζει την ηλικία του Ανδρέα, και το δεύτερο περιέχει το όνομα του.
- Εκτυπώστε (print()), σε μια γραμμή, ένα οποιοδήποτε κείμενο της αρεσκείας σας, χρησιμοποιώντας τις μεταβλητές ilikia και onoma και την εντολή format().
Απάντηση:
#!/usr/bin/python3 ilikia=20 onoma="Ανδρέας" print("Ο {0}, είναι τώρα {1} χρονών, γεροδεμένο παλικάρι.".format(ilikia, onoma))
Με ποιόν τελεστή ελέγχουμε αν ο αριθμός 5 ανήκει στο σύνολο (1, 2, 3, 4, 5).
Απάντηση:
Με το in:
$ python3 Python 3.0.1+ (r301:69556, Apr 15 2009, 17:25:52) [GCC 4.3.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> 5 in (1, 2, 3, 4, 5) True >>> if 5 in (1, 2, 3, 4, 5): ... print("ΝΑΙ - ανήκει στο σύνολο") ... else: ... print("ΟΧΙ - Δεν ανήκει στο σύνολο (1,2,3,4,5) !") ... ΝΑΙ - ανήκει στο σύνολο
Πέντε αγόρια μαλλώνανε για το ποιος μπορεί να πηδήξει πιο μακριά στο άλμα εις μήκος.
Ο πρώτος μπορεί να πηδήσει 1/4 (ένα τέταρτο) του μέτρου λιγότερο από τον δεύτερο.
Ο τρίτος μπορεί να πηδήσει ένα μέτρο περισσότερο του ενός τρίτου της απόστασης του αθροίσματος του πρώτου και δεύτερου.
Ο τέταρτος μπορεί να πηδήσει δύο μέτρα περισσότερο της απόστασης της διαφοράς του τρίτου πλην την απόσταση του πρώτου αγοριού.
Τοποθετήστε τα αποτελέσματα στις ακόλουθες μεταβλητές:
Πρώτο αγόρι: protos, δεύτερο αγόρι: deuteros, τρίτο αγόρι: tritos, τέταρτο αγόρι: tetartos, πέμπτο αγόρι: pemptos
- Σημείωση:
- Οι υπολογισμένες τιμές είναι πάνω από ένα μέτρο (> 1.0 m).
- Χρησιμοποιήστε την τελεία "." αντί του κόμματος "," για δεκαδικά ψηφία.
Απάντηση:
Επειδή πρέπει να χρησιμοποιούμε μεταβλητές που έχουμε ήδη θέσει, αρχίζουμε με to deuteros που είναι δεδομένο. Επίσης, στην python2.6 στη διαίρεση για να πάρουμε τα δεκαδικά χρησιμοποιούμε ".0", π.χ. 3.0 στο διαιρέτη (Εγώ τα χρησιμοποιώ σε όλους τους ακέραιους αριθμούς, ασχέτως αν είναι python3 ή python2.6. :-) )
#!/usr/bin/python3 deuteros = 1.75 protos = deuteros - 0.25 tritos = (protos + deuteros) / 3.0 + 1.0 tetartos = (tritos - protos) + 2.0 pemptos = 3.5 ** 2 - (protos + deuteros + tritos + tetartos) print("Πρώτος: {0}\nΔεύτερος: {1} Τρίτος: {2} Τέταρτος: {3} Πέμπτος: {4}".format(protos, deuteros, tritos, tetartos, pemptos))