Μάθημα 2 - Λίστες, λεξικά, πλειάδες και σύνολα

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

Re: Μάθημα 2 - Λίστες, λεξικά, πλειάδες και σύνολα

Δημοσίευσηαπό medigeek » 27 Ιουν 2009, 08:27

Alexandros_ έγραψε:dlopen("/usr/lib/python3.0/lib-dynload/readline.so", 2);
import readline # dynamically loaded from /usr/lib/python3.0/lib-dynload/readline.so


Αυτό δε θα έπρεπε να φαίνεται νομίζω, μάλλον δεν έχεις εγκαταστήσει όλα τα πακέτα για το compile.
Εκτέλεσε:
Κώδικας: Επιλογή όλων
python3 -c "import datetime, time, re, string, array, readline, pickle, configparser, copy, math, operator, os.path, os, glob, posix, json, xml.dom.minidom, urllib.parse, urllib.request; print('ΟΚ')"


Αν δεν δεις "ΟΚ", τότε κάτι πήγε στραβά. Εγκατέστησε το PPA με τα πακέτα που προσφέρω για Ubuntu:
viewtopic.php?f=9&t=5314

Και μετά δώσε:
Κώδικας: Επιλογή όλων
python3 -V

Θα εγκαταστήσει κανονικά τη γλώσσα ως /usr/bin/python3 και /usr/bin/python3.0
Κύπριος; Κόπιασε στο 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_ » 27 Ιουν 2009, 13:49

Το εκανα αυτο πο ειπες φιλε μου κ εβγαλε ΟΚ...

Spoiler: show
.....desktop:~$ python3 -c "import datetime, time, re, string, array, readline, pickle, configparser, copy, math, operator, os.path, os, glob, posix, json, xml.dom.minidom, urllib.parse, urllib.request; print('ΟΚ')"
ΟΚ


Μετα εβαλα κ την 2η εντολη κ ολα οκ απ'οτι καταλαβα...
Spoiler: show
....-desktop:~$ python3 -V
Python 3.0.1+



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

Re: Μάθημα 2 - Λίστες, λεξικά, πλειάδες και σύνολα

Δημοσίευσηαπό medigeek » 27 Ιουν 2009, 17:06

Α κάτσε, πριν έβαλες "python3 -v" με μικρό που σημαίνει verbose, γι'αυτό έβγαλε εκείνη τη γραμμή.
Μια χαρά! :thumbup:
Κύπριος; Κόπιασε στο 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 - Λίστες, λεξικά, πλειάδες και σύνολα

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

Λοιπόν,
Διορθώστε αν κατάλαβα λάθος.

Είπαμε ότι μπορούμε να προσθέσουμε κάποιο στοιχείο σε μία λίστα, σε ένα λεξικό και σε ένα σύνολο σωστά; Αυτό δε μπορεί να γίνει σε πλειάδες επειδή είναι αμετάβλητες, ναι;
Στις πλειάδες απλά μπορούμε να ορίσουμε μία νέα πλειάδα η οποία θα περιέχει την πρώτη πλειάδα και τα στοιχεία που επιθυμούμε.
(Κι άλλες) Ερωτήσεις:
1. Οι τελεστές ευρετηρίασης ( π.χ. [:] )μπορούν να χρησιμοποιηθούν παντού; Εκτός από πλειάδες, λίστες και συμβολοσειρές για τεμαχισμό; Γιατί όχι σε λεξικό;
2. Άσχετο, γιατί έχουμε σαν ύλη την ενότητα 11 του βιβλίου; Οι ενδιάμεσες 8,9,10 ενότητες; Μήπως έχω χάσει επεισόδια ή μήπως ακολουθούμε διαφορετική σειρά στα μαθήματα; Από περιέργεια..

Ευχαριστώ...
Προγραμματισμός: Μέτρια | 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 » 28 Ιουν 2009, 03:04

juanjo έγραψε:Λοιπόν,
Διορθώστε αν κατάλαβα λάθος.

Είπαμε ότι μπορούμε να προσθέσουμε κάποιο στοιχείο σε μία λίστα, σε ένα λεξικό και σε ένα σύνολο σωστά; Αυτό δε μπορεί να γίνει σε πλειάδες επειδή είναι αμετάβλητες, ναι;
Στις πλειάδες απλά μπορούμε να ορίσουμε μία νέα πλειάδα η οποία θα περιέχει την πρώτη πλειάδα και τα στοιχεία που επιθυμούμε.






Τί χρειάζεστε; Τί προτείνωCode
Στοιχεία/αντικείμενα με τα οποία θέλετε να
εκμεταλλευτείτε (προσθαφαίρεση και μετατροπή/αντικατάσταση);
Λίστα
list()
Στοιχεία/αντικείμενα που δεν
πρόκειται να αλλάξουν;
Πλειάδα
tuple()
Στοιχεία/αντικείμενα που χρησιμεύουν
στην αντιστοιχία των τιμών τους με άλλες λίστες/μεταβλητές/εντολές;
Λεξικό
dict()
Στοιχεία/αντικείμενα που ανήκουν σε σύνολα
τα οποία θέλετε να ελέγξετε και να μεταχειριστείτε;
Σύνολο
set()


Σωστά αναφέρεις:
Κώδικας: Επιλογή όλων

$ 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.
>>> tuple(range(1,6))
(1, 2, 3, 4, 5)
>>> pleiada = tuple(range(1,6))
>>> pleiada[1]
2
>>> pleiada = tuple('τεστ', 'τεστ2', 'τεστ3')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: tuple() takes at most 1 argument (3 given)
>>> pleiada = ('τεστ', 'τεστ2', 'τεστ3')
>>> pleiada[1]
'τεστ2'
>>> pleiada[0]
'τεστ'
>>> pleiada[0:1] = ('τεστ', 'τεστ πρόσθεσης')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment


έγραψε:1. Οι τελεστές ευρετηρίασης ( π.χ. [:] )μπορούν να χρησιμοποιηθούν παντού; Εκτός από πλειάδες, λίστες και συμβολοσειρές για τεμαχισμό; Γιατί όχι σε λεξικό;
2. Άσχετο, γιατί έχουμε σαν ύλη την ενότητα 11 του βιβλίου; Οι ενδιάμεσες 8,9,10 ενότητες; Μήπως έχω χάσει επεισόδια ή μήπως ακολουθούμε διαφορετική σειρά στα μαθήματα; Από περιέργεια..

1. Νομίζω ναι, όμως κάνε εσύ τις δοκιμές σου και ανάφερε τα αποτελέσματα σου, πιστεύω θα ενδιαφέρει πολλούς. Τα λεξικά δεν είναι απαριθμημένα, χρησιμεύουν στιην αντιστοίχηση κάποιων αντικειμένων με κάποιες τιμές, μεταβλητές ή εντολές/κλάσεις. :)

2. Προτίμησα να μάθετε πρώτα τι τύποι υπάρχουν και μετά να τους εφαρμόσετε με έλεγχο ροής (παρόλο που αναφέρεται στο μάθημα 2) στο επόμενο μάθημα.
Κύπριος; Κόπιασε στο 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 » 28 Ιουν 2009, 03:24

Προχωράμε: viewtopic.php?f=55&t=5828 :D
Κύπριος; Κόπιασε στο 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 - Λίστες, λεξικά, πλειάδες και σύνολα

Δημοσίευσηαπό Luke » 05 Αύγ 2009, 01:05

Στο κομμάτι με τις μεθόδους των strings αναφέρει τη μέθοδο find() η οποία μπορεί να "ανακαλύψει" αν υπάρχει ένα συγκεκριμένο pattern μέσα σε μία συμβολοσειρά και πιο συγκεκριμένα τη θέση στην οποία βρίσκεται μέσα στο string. Όμως η συγκεκριμένη μέθοδος επιστρέφει τη θέση που πρωτοβρίσκει "σκανάροντας" από τα αριστερά στα δεξιά. Την ίδια δουλειά κάνει και η rfind(), ξεκινώντας το ψάξιμο από τα δεξιά προς τα αριστερά;

Το ερώτημά μου είναι αν υπάρχει κάποια έτοιμη μέθοδος η οποία να μην εμφανίζει μόνο την 1η εμφάνιση του pattern (είτε από δεξιά είτε από αριστερά) αλλά αν αυτό το pattern υπάρχει πάνω από μία φορά να εμφανίζει όλα τα indices μέσα στο string που έχουν βρεθεί. Για παράδειγμα ψάχνοντας το 'Wor' στη συμβολοσειρά 'WorldWorldWorld' να επιστρέφει [0,5,10] ως δείκτες όπου βρέθηκε το 'Wor'.

Στα pyhton docs που κοίταξα δε βρήκα κάτι γι' αυτό ρωτώ. :?
1 Γνώσεις ⇛ Linux: Χαμηλό προς Μέτριο ┃ Προγραμματισμός: Ναι ┃ Αγγλικά: Καλά
2 Λειτουργικά → Ubuntu 10.04 lucid 64bit (en_US.utf8), Windows 7
3 Προδιαγραφές → Intel Core i5-2500 CPU @ 3.30GHz ‖ RAM 7916 MiB ‖ MSI H67MA-E35 (MS-7680) - MSI MS-7680
4 Κάρτες γραφικών: Intel Sandy Bridge Integrated Graphics Controller [8086:0102] (rev 09)
5 Δίκτυα: eth0: Realtek RTL8111/8168B PCI Express Gigabit Ethernet controller [10ec:8168] (rev 06)
Άβαταρ μέλους
Luke
babeTUX
babeTUX
 
Δημοσιεύσεις: 91
Εγγραφή: 23 Μάιος 2009, 21:31
Εκτύπωση

Re: Μάθημα 2 - Λίστες, λεξικά, πλειάδες και σύνολα

Δημοσίευσηαπό cyberpython » 05 Αύγ 2009, 11:46

Luke έγραψε:Στο κομμάτι με τις μεθόδους των strings αναφέρει τη μέθοδο find() η οποία μπορεί να "ανακαλύψει" αν υπάρχει ένα συγκεκριμένο pattern μέσα σε μία συμβολοσειρά και πιο συγκεκριμένα τη θέση στην οποία βρίσκεται μέσα στο string. Όμως η συγκεκριμένη μέθοδος επιστρέφει τη θέση που πρωτοβρίσκει "σκανάροντας" από τα αριστερά στα δεξιά. Την ίδια δουλειά κάνει και η rfind(), ξεκινώντας το ψάξιμο από τα δεξιά προς τα αριστερά;

Το ερώτημά μου είναι αν υπάρχει κάποια έτοιμη μέθοδος η οποία να μην εμφανίζει μόνο την 1η εμφάνιση του pattern (είτε από δεξιά είτε από αριστερά) αλλά αν αυτό το pattern υπάρχει πάνω από μία φορά να εμφανίζει όλα τα indices μέσα στο string που έχουν βρεθεί. Για παράδειγμα ψάχνοντας το 'Wor' στη συμβολοσειρά 'WorldWorldWorld' να επιστρέφει [0,5,10] ως δείκτες όπου βρέθηκε το 'Wor'.

Στα pyhton docs που κοίταξα δε βρήκα κάτι γι' αυτό ρωτώ. :?


Δε βρήκα κάποια έτοιμη (δεν έψαξα και πολύ όμως, οπότε μπορεί και να υπάρχει), αλλά μπορείς να γράψεις εύκολα μία δική σου:
Κώδικας: Επιλογή όλων

#!/usr/bin/env python3
def find_all(S, pattern):
position = 0
length = len(S)
end_index = length
result = []
while ( (position<length) and (position > -1) ):
position = S.find(pattern, position, end_index)
result.append(position)
if(position != -1):
position += 1
last_index = result[len(result)-1]
if(last_index == -1):
result.remove(last_index)
return result
Κοινότητα ΕΛ/ΛΑΚ Οικονομικού Πανεπιστημίου Αθηνών / Ubuntu-gr / My Web Log
Επίπεδο Γνώσεων Linux: Μέτριο, Προγραμματισμός: Ναι, Aγγλικά: Καλά
Λειτουργικό : Ubuntu 10.04 - 32bits
Η/Υ : Intel Core2 4400@2 GHz / 2GB DDR2 RAM / GeForce 8400 GS 512MB / Creative SB Audigy SE
Άβαταρ μέλους
cyberpython
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 733
Εγγραφή: 14 Μάιος 2008, 13:22
Εκτύπωση

Re: Μάθημα 2 - Λίστες, λεξικά, πλειάδες και σύνολα

Δημοσίευσηαπό Luke » 05 Αύγ 2009, 12:07

Καλά, δε χρειαζόταν να μου τη δώσεις κι έτοιμη. :mrgreen:
Απλά υπέθεσα ότι κάτι πρέπει να υπάρχει ήδη και δε μπορούσα να το βρω. Ευχαριστώ πάντως. :thumbup:
1 Γνώσεις ⇛ Linux: Χαμηλό προς Μέτριο ┃ Προγραμματισμός: Ναι ┃ Αγγλικά: Καλά
2 Λειτουργικά → Ubuntu 10.04 lucid 64bit (en_US.utf8), Windows 7
3 Προδιαγραφές → Intel Core i5-2500 CPU @ 3.30GHz ‖ RAM 7916 MiB ‖ MSI H67MA-E35 (MS-7680) - MSI MS-7680
4 Κάρτες γραφικών: Intel Sandy Bridge Integrated Graphics Controller [8086:0102] (rev 09)
5 Δίκτυα: eth0: Realtek RTL8111/8168B PCI Express Gigabit Ethernet controller [10ec:8168] (rev 06)
Άβαταρ μέλους
Luke
babeTUX
babeTUX
 
Δημοσιεύσεις: 91
Εγγραφή: 23 Μάιος 2009, 21:31
Εκτύπωση

Re: Μάθημα 2 - Λίστες, λεξικά, πλειάδες και σύνολα

Δημοσίευσηαπό midkin » 15 Σεπ 2009, 03:01

Να κάνω και γω κάποιες ερωτήσεις!

1) Γιατί ενώ το λεξικό το δηλώνουμε με άγκιστρα => ab = { ' ένα ' : ' one ' , ' δύο ' : ' two ' , ' τρία ' : ' three ' } , το καλούμε με αγκύλες;
=> print ( ' 123τεστ ' , ab [ ' ένα ' ] )
Βασικά χαζή ερώτηση,(!) γιατί έτσι το φτιάξανε... Απλά δεν είναι λίγο παράλογο;

2) Σε αυτό το παράδειγμα:
Κώδικας: Επιλογή όλων
#!/usr/bin/python
# Filename: seq.py

shoplist = ['apple', 'mango', 'carrot', 'banana']
name = 'swaroop'

# Indexing or 'Subscription' operation
print('Character 0 is', name[0])

Το "name" τι είναι; Είναι μεταβλητή ή πλειάδα; Να υποθέσω πως είναι πλειάδα γιατί στις μεταβλητές (αν δεν κάνω λάθος) δεν βάζουμε [0] ή [1] κλπ;

3) Τη σειρά => # -*- coding: utf-8 -*- είναι απαραίτητο να τη χρησιμοποιούμε; Αν ναι, γιατί;
Γνώσεις ⇛ Linux: Χαμηλό ┃ Προγραμματισμός: Χαμηλό ┃ Αγγλικά: Πολύ Καλά
Λειτουργικό: Laptop Lenovo G505s με Windows 8.1 / Ubuntu 14.10 & Mac OS X 10.10 μέσω VirtualBox
Προδιαγραφές ⇛ AMD A8 τετραπύρηνος │ 8 GB RAM |
Άβαταρ μέλους
midkin
babeTUX
babeTUX
 
Δημοσιεύσεις: 44
Εγγραφή: 05 Σεπ 2009, 21:14
Τοποθεσία: Κομοτηνή
Εκτύπωση

ΠροηγούμενηΕπόμενο

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

cron