Μάθημα 2 - Ασκήσεις

...ασύγχρονα μαθήματα python

Μάθημα 2 - Ασκήσεις

Δημοσίευσηαπό medigeek » 28 Ιουν 2009, 02:21

Οι ασκήσεις για το μάθημα 2:
http://files.ubuntu-gr.org/learning/python/02-lists-questions.html

Οι απαντήσεις θα δοθούν στο τέλος της βδομάδας (δε θα διορθώνονται!).
Στο μεταξύ δικαιούστε να δίνετε τις απαντήσεις εδώ, βοηθώντας ο ένας τον άλλο.
Δεν έχω πρόβλημα αν αντιγράφετε ο ένας από τον άλλο!

Σημειώσεις

  • Στην python2.6 για να δείτε ένα στοιχείο στα ελληνικά, θα χρειαστείτε την εντολή print():

    Κώδικας: Επιλογή όλων
    >>> ltest = ['μήλα', 'αχλάδια', 'αγγούρια']
    >>> ltest[1]
    '\xce\xb1\xcf\x87\xce\xbb\xce\xac\xce\xb4\xce\xb9\xce\xb1'
    >>> print(ltest[1])
    αχλάδια


    (Σε python3 δε χρειάζεται)
  • Τονίζω για ακόμη μια φορά πως οι πίνακες διαφόρων ειδών συνήθως ξεκινούν την απαρίθμηση των αντικειμένων/στοιχείων τους με το 0.
  • Πιθανόν να χρειαστείτε γνώσεις και από τις ιστοσελίδες:
    1. http://effbot.org/zone/python-list.htm (είτε κοιτάξτε μέσω του Google cache)
    2. http://docs.python.org/tutorial/datastructures.html
    3. http://python.computersci.org/Collectio ... stFeatures
  • Για τα σύνολα κοιτάξτε τα bitwise operators (δυαδικοί τελεστές) και τα παραδείγματα στο docs.python.org

Εισαγωγή

:idea: Να σκέφτεστε αρκετές φορές προτού απαντήσετε!
:idea: Δοκιμάστε με οποιοδήποτε τρόπο μπορείτε να σκεφτείτε για να λύσετε μια άσκηση. :think:
:idea: Κοιτάξτε και λίγο τι μπορείτε να βρείτε στο http://www.google.com :problem:
:idea: Καλή τύχη! :thumbup:

(Υπάρχει περίπτωση να έκανα λάθος, γι' αυτό διορθώστε με όπου προσέξετε κάτι :thumbup:

Απαντήσεις: http://files.ubuntu-gr.org/learning/pyt ... swers.html
Κύπριος; Κόπιασε στο ubuntu-cy! ┃ Launchpad Debian Github
Οδηγός για νεοεισερχόμενους -- Αρχικές οδηγίες για αρχάριους χρήστες του Ubuntu

1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 12.10 quantal 3.5.0-21-generic 64bit (en_US.UTF-8, GNOME cinnamon2d), Ubuntu 3.5.0-19-generic, Windows 7
3 Intel Core2 Duo CPU E6550 2.33GHz ‖ RAM 5970 MiB ‖ MSI MS-7235
4 nVidia G73 [GeForce 7300 GT] [10de:0393] {nvidia}
5 eth0: Realtek RTL-8110SC/8169SC Gigabit Ethernet [10ec:8167] (rev 10)
Άβαταρ μέλους
medigeek
Freedom
Freedom
 
Δημοσιεύσεις: 5023
Εγγραφή: 24 Μάιος 2008, 14:49
Τοποθεσία: Σερβία/Κύπρος
Launchpad: medigeek
IRC: savvas
Εκτύπωση

Re: Μάθημα 2 - Ασκήσεις

Δημοσίευσηαπό kon_nos » 30 Ιουν 2009, 18:32

Ασχολήθηκα με τις λίστες και θεωρητικά τις έχω λύσει, εκτός από την 11. Την έχει βρει κανείς;

Επίσης medigeek την 12α θέλεις να την σκεφτούμε με λογική, ή να στο βρούμε αλγοριθμικά (υποθέτω το 1ο γιατί αλγοριθμικά δεν έχω ιδέα πως γίνεται :o );
Εγκατάσταση των OpenGL headers σε Ubuntu
«Tων πολλών επιδίωξη η Ηδονή, των εκλεκτών η Δόξα, των δ’ επιλέκτων η Αρετή» - Αριστοτέλης
Άβαταρ μέλους
kon_nos
dudeTUX
dudeTUX
 
Δημοσιεύσεις: 382
Εγγραφή: 09 Νοέμ 2008, 01:11
Τοποθεσία: Αθήνα, Νέο Φάληρο
IRC: kon_nos
Εκτύπωση

Re: Μάθημα 2 - Ασκήσεις

Δημοσίευσηαπό medigeek » 30 Ιουν 2009, 19:18

kon_nos έγραψε:Ασχολήθηκα με τις λίστες και θεωρητικά τις έχω λύσει, εκτός από την 11. Την έχει βρει κανείς;

Με τις βοήθειες που έδωσα και με τις ιστοσελίδες που παρέθεσα (ειδικά το docs.python.org), λογικά θα πρέπει να είναι παιχνίδι. :?

kon_nos έγραψε:Επίσης medigeek την 12α θέλεις να την σκεφτούμε με λογική, ή να στο βρούμε αλγοριθμικά (υποθέτω το 1ο γιατί αλγοριθμικά δεν έχω ιδέα πως γίνεται :o );


12α. βρέστε ποιος είναι ο επόμενος αριθμός. -> ΛΟΓΙΚΗ ΕΡΩΤΗΣΗ!

Ευχαριστώ, θα το σημειώσω σε λίγο στην ερώτηση. :)
Κύπριος; Κόπιασε στο ubuntu-cy! ┃ Launchpad Debian Github
Οδηγός για νεοεισερχόμενους -- Αρχικές οδηγίες για αρχάριους χρήστες του Ubuntu

1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 12.10 quantal 3.5.0-21-generic 64bit (en_US.UTF-8, GNOME cinnamon2d), Ubuntu 3.5.0-19-generic, Windows 7
3 Intel Core2 Duo CPU E6550 2.33GHz ‖ RAM 5970 MiB ‖ MSI MS-7235
4 nVidia G73 [GeForce 7300 GT] [10de:0393] {nvidia}
5 eth0: Realtek RTL-8110SC/8169SC Gigabit Ethernet [10ec:8167] (rev 10)
Άβαταρ μέλους
medigeek
Freedom
Freedom
 
Δημοσιεύσεις: 5023
Εγγραφή: 24 Μάιος 2008, 14:49
Τοποθεσία: Σερβία/Κύπρος
Launchpad: medigeek
IRC: savvas
Εκτύπωση

Re: Μάθημα 2 - Ασκήσεις

Δημοσίευσηαπό kon_nos » 30 Ιουν 2009, 19:41

medigeek έγραψε:
kon_nos έγραψε:Ασχολήθηκα με τις λίστες και θεωρητικά τις έχω λύσει, εκτός από την 11. Την έχει βρει κανείς;

Με τις βοήθειες που έδωσα και με τις ιστοσελίδες που παρέθεσα (ειδικά το docs.python.org), λογικά θα πρέπει να είναι παιχνίδι. :?


Μου φαίνεται περίεργο που θα αναθέσουμε στο lista11[0:1] την μεταβλητή μας. Δεν μπορώ να το καταλάβω. Θα ψάξω το θέμα καλύτερα να δω τι μου διαφεύγει ;) .
Εγκατάσταση των OpenGL headers σε Ubuntu
«Tων πολλών επιδίωξη η Ηδονή, των εκλεκτών η Δόξα, των δ’ επιλέκτων η Αρετή» - Αριστοτέλης
Άβαταρ μέλους
kon_nos
dudeTUX
dudeTUX
 
Δημοσιεύσεις: 382
Εγγραφή: 09 Νοέμ 2008, 01:11
Τοποθεσία: Αθήνα, Νέο Φάληρο
IRC: kon_nos
Εκτύπωση

Re: Μάθημα 2 - Ασκήσεις

Δημοσίευσηαπό medigeek » 30 Ιουν 2009, 20:45

Λοιπόν αναφέρω παράδειγμα (και εν μέρει λύση):
Κώδικας: Επιλογή όλων
>>> lista11 = ['μήλα', 'αχλάδια', 'αγγούρια', 'μπανάνες', 'κιτρόμηλα']
>>> lista11
['μήλα', 'αχλάδια', 'αγγούρια', 'μπανάνες', 'κιτρόμηλα']


Παίρνουμε το αντικείμενο 0 (επιστρέφεται ως TEXT STRING, όχι λίστα)
Κώδικας: Επιλογή όλων
>>> print("Το αντικείμενο στη θέση 0 είναι: " + lista11[0])
Το αντικείμενο στη θέση 0 είναι: μήλα
>>> type(lista11[0])
<class 'str'>

>>> print("Το αντικείμενο στη θέση 1 είναι: " + lista11[1])
Το αντικείμενο στη θέση 1 είναι: αχλάδια



Κώδικας: Επιλογή όλων
>>> # Το ακόλουθο είναι ΛΑΘΟΣ
>>> print("Τα αντικείμενα από τη θέση 0 μέχρι τη θέση 1 (ΜΗ ΣΥΜΠΕΡΙΛΑΜΒΑΝΟΜΕΝΟΥ) είναι: " + lista11[0:1])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: Can't convert 'list' object to str implicitly

>>> # Το ακόλουθο είναι το ΣΩΣΤΟ, με το " ".join()
>>> print("Τα αντικείμενα από τη θέση 0 μέχρι τη θέση 1 (ΜΗ ΣΥΜΠΕΡΙΛΑΜΒΑΝΟΜΕΝΟΥ) είναι: " + " ".join(lista11[0:1]))
Τα αντικείμενα από τη θέση 0 μέχρι τη θέση 1 (ΜΗ ΣΥΜΠΕΡΙΛΑΜΒΑΝΟΜΕΝΟΥ) είναι: μήλα

>>> # Το ακόλουθο επίσης μπορεί να χρησιμοποιηθεί, με το str()
>>> # Παίρνουμε μόνο το αντικείμενο 0 (ως αντικείμενο λίστας)
>>> print("Τα αντικείμενα από τη θέση 0 μέχρι τη θέση 1 (ΜΗ ΣΥΜΠΕΡΙΛΑΜΒΑΝΟΜΕΝΟΥ) είναι: " + str(lista11[0:1]))
Τα αντικείμενα από τη θέση 0 μέχρι τη θέση 1 (ΜΗ ΣΥΜΠΕΡΙΛΑΜΒΑΝΟΜΕΝΟΥ) είναι: ['μήλα']


Για να συγκρίνετε, παραθέτω ξανά τις διαφορές στον τύπο των τιμών lista11[0:1] και lista11[0] που πήρατε:
Κώδικας: Επιλογή όλων
>>> type(lista11[0:1])
<class 'list'>
>>> type(lista11[0])
<class 'str'>


Τα αντικείμενα 0 και 1:
Κώδικας: Επιλογή όλων
>>> print("Τα αντικείμενα από τη θέση 0 μέχρι τη θέση 2 (ΜΗ ΣΥΜΠΕΡΙΛΑΜΒΑΝΟΜΕΝΟΥ) είναι: " + str(lista11[0:2]))
Τα αντικείμενα από τη θέση 0 μέχρι τη θέση 2 (ΜΗ ΣΥΜΠΕΡΙΛΑΜΒΑΝΟΜΕΝΟΥ) είναι: ['μήλα', 'αχλάδια']



Αφού το [0:1] συμβολίζει ΛΙΣΤΑ, μπορούμε να το εκμεταλλευτούμε για να μετατρέψουμε τη λίστα και να προσθέσουμε αντικείμενο:
>>> lista11
['μήλα', 'αχλάδια', 'αγγούρια', 'μπανάνες', 'κιτρόμηλα']
>>> lista11[0:1]
['μήλα']
>>> lista11[0:1] = ['μήλα', 'πατάτες']
>>> lista11
['μήλα', 'πατάτες', 'αχλάδια', 'αγγούρια', 'μπανάνες', 'κιτρόμηλα']


Γιατί ΟΧΙ lista11[0]; Επειδή συμβολίζει ένα μόνο αντικείμενο της λίστας και θα πάρετε ως αντικείμενο υπολίστα:
>>> lista11 = ['μήλα', 'αχλάδια', 'αγγούρια', 'μπανάνες', 'κιτρόμηλα']
>>> lista11[0] = ['μήλα', 'πατάτες']
>>> lista11
[['μήλα', 'πατάτες'], 'αχλάδια', 'αγγούρια', 'μπανάνες', 'κιτρόμηλα']
Κύπριος; Κόπιασε στο ubuntu-cy! ┃ Launchpad Debian Github
Οδηγός για νεοεισερχόμενους -- Αρχικές οδηγίες για αρχάριους χρήστες του Ubuntu

1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 12.10 quantal 3.5.0-21-generic 64bit (en_US.UTF-8, GNOME cinnamon2d), Ubuntu 3.5.0-19-generic, Windows 7
3 Intel Core2 Duo CPU E6550 2.33GHz ‖ RAM 5970 MiB ‖ MSI MS-7235
4 nVidia G73 [GeForce 7300 GT] [10de:0393] {nvidia}
5 eth0: Realtek RTL-8110SC/8169SC Gigabit Ethernet [10ec:8167] (rev 10)
Άβαταρ μέλους
medigeek
Freedom
Freedom
 
Δημοσιεύσεις: 5023
Εγγραφή: 24 Μάιος 2008, 14:49
Τοποθεσία: Σερβία/Κύπρος
Launchpad: medigeek
IRC: savvas
Εκτύπωση

Re: Μάθημα 2 - Ασκήσεις

Δημοσίευσηαπό Alexandros_ » 30 Ιουν 2009, 21:18

Δυσκολη περιοδος για ασκησεις φιλε μου...Λογο εκσεταστικης...
Άβαταρ μέλους
Alexandros_
dudeTUX
dudeTUX
 
Δημοσιεύσεις: 460
Εγγραφή: 11 Φεβ 2009, 21:02
Τοποθεσία: Ubuntu planet_(Ελλαδα!)
Εκτύπωση

Re: Μάθημα 2 - Ασκήσεις

Δημοσίευσηαπό kon_nos » 30 Ιουν 2009, 21:54

@medigeek
Το έπιασα :thumbup: Ευχαριστώ.
Εγκατάσταση των OpenGL headers σε Ubuntu
«Tων πολλών επιδίωξη η Ηδονή, των εκλεκτών η Δόξα, των δ’ επιλέκτων η Αρετή» - Αριστοτέλης
Άβαταρ μέλους
kon_nos
dudeTUX
dudeTUX
 
Δημοσιεύσεις: 382
Εγγραφή: 09 Νοέμ 2008, 01:11
Τοποθεσία: Αθήνα, Νέο Φάληρο
IRC: kon_nos
Εκτύπωση

Re: Μάθημα 2 - Ασκήσεις

Δημοσίευσηαπό juanjo » 01 Ιούλ 2009, 20:00

Στην άσκηση 5.β πώς θα καλέσουμε το στοιχείο lista[4];

Spoiler: show
1. lista3b=[lista[len(lista)-1]]
2. lista3b=[lista[-1]]
;;;;
Προγραμματισμός: Μέτρια | Linux: Σχετικά καλά | Αγγλικά: Καλά
Ubuntu 11.10 Laptop - Lenovo Thinkpad sl510
Intel® Core™2 Duo CPU T5870 @ 2.00GHz × 2 / 3 GB RAM / Display:Mobile Intel® GM45 Express Chipset x86/MMX/SSE2 / Ήχος: ICH4 - Intel 82801DB-ICH4, SAA7134-SAA7134 / Οθόνη: 1152x864.
juanjo
babeTUX
babeTUX
 
Δημοσιεύσεις: 45
Εγγραφή: 12 Μάιος 2008, 02:25
Τοποθεσία: Αθήνα
IRC: juank
Εκτύπωση

Re: Μάθημα 2 - Ασκήσεις

Δημοσίευσηαπό medigeek » 01 Ιούλ 2009, 21:34

Μπράβο! :clap:
Σημείωση: Όχι πως το δικό σου είναι λάθος, αλλά ζήτησα στοιχείο της λίστας, όχι καινούργια λίστα, οπόταν αυτό θα ήταν πιο σωστό:
Spoiler: show
lista3b = lista[len(lista)-1]
lista3b = lista[-1]


Εύγε όμως!
Κύπριος; Κόπιασε στο ubuntu-cy! ┃ Launchpad Debian Github
Οδηγός για νεοεισερχόμενους -- Αρχικές οδηγίες για αρχάριους χρήστες του Ubuntu

1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 12.10 quantal 3.5.0-21-generic 64bit (en_US.UTF-8, GNOME cinnamon2d), Ubuntu 3.5.0-19-generic, Windows 7
3 Intel Core2 Duo CPU E6550 2.33GHz ‖ RAM 5970 MiB ‖ MSI MS-7235
4 nVidia G73 [GeForce 7300 GT] [10de:0393] {nvidia}
5 eth0: Realtek RTL-8110SC/8169SC Gigabit Ethernet [10ec:8167] (rev 10)
Άβαταρ μέλους
medigeek
Freedom
Freedom
 
Δημοσιεύσεις: 5023
Εγγραφή: 24 Μάιος 2008, 14:49
Τοποθεσία: Σερβία/Κύπρος
Launchpad: medigeek
IRC: savvas
Εκτύπωση

Re: Μάθημα 2 - Ασκήσεις

Δημοσίευσηαπό medigeek » 02 Ιούλ 2009, 20:29

Alexandros_ έγραψε:Δυσκολη περιοδος για ασκησεις φιλε μου...Λογο εκσεταστικης...

Off topic:
Alexandros_, από εσένα περιμένω να είσαι ο πρώτος που θα δίνει απαντήσεις τον Αύγουστο. :lol:
Κύπριος; Κόπιασε στο ubuntu-cy! ┃ Launchpad Debian Github
Οδηγός για νεοεισερχόμενους -- Αρχικές οδηγίες για αρχάριους χρήστες του Ubuntu

1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 12.10 quantal 3.5.0-21-generic 64bit (en_US.UTF-8, GNOME cinnamon2d), Ubuntu 3.5.0-19-generic, Windows 7
3 Intel Core2 Duo CPU E6550 2.33GHz ‖ RAM 5970 MiB ‖ MSI MS-7235
4 nVidia G73 [GeForce 7300 GT] [10de:0393] {nvidia}
5 eth0: Realtek RTL-8110SC/8169SC Gigabit Ethernet [10ec:8167] (rev 10)
Άβαταρ μέλους
medigeek
Freedom
Freedom
 
Δημοσιεύσεις: 5023
Εγγραφή: 24 Μάιος 2008, 14:49
Τοποθεσία: Σερβία/Κύπρος
Launchpad: medigeek
IRC: savvas
Εκτύπωση

Επόμενο

Επιστροφή στο Μαθήματα python

cron