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

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

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

Δημοσίευσηαπό Luke » 15 Σεπ 2009, 11:20

midkin έγραψε:Γιατί ενώ το λεξικό το δηλώνουμε με άγκιστρα => ab = { ' ένα ' : ' one ' , ' δύο ' : ' two ' , ' τρία ' : ' three ' } , το καλούμε με αγκύλες;
=> print ( ' 123τεστ ' , ab [ ' ένα ' ] )

Στη δήλωση φαντάσου ότι αναφέρεις ένα σύνολο αντικειμένων (θυμίσου πώς τα αναπαριστούσαμε στα μαθηματικά γυμνασίου-λυκείου :D ) ενώ κατά την κλήση καλείς ένα μόνο από όλα αυτά τα αντικείμενα του συνόλου άρα αναφέρεσαι σε μία συγκεκριμένη θέση και μάλιστα μόνο στο "κλειδί" αυτής της θέσης, άρα όχι σε ένα "πλήρες" αντικείμενο του παραπάνω συνόλου (κελιδί-τιμή).
Τουλάχιστον κάπως έτσι μπορείς να το φανταστείς διαισθητικά.

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

Είναι μία μεταβλητή συμβολοσειράς (String). Αυτό μπορείς να το καταλάβεις από την εντολή
Κώδικας: Επιλογή όλων
name = 'swaroop'
όπου εκχωρείται ένα string στη μεταβλητή swaroop. Ειδικά για τα strings μπορείς να χρησιμοποιήσεις indexing ([0] ή [1] κλπ) γιατί θεωρούνται ως λίστες από χαρακτήρες, όπου κάθε χαρακτήρας καταλαμβάνει μία θέση της λίστας.

midkin έγραψε:3) Τη σειρά => # -*- coding: utf-8 -*- είναι απαραίτητο να τη χρησιμοποιούμε; Αν ναι, γιατί;

Είναι απαραίτητο να το χρησιμοποιήσεις μόνο αν θες να τυπώνεις ελληνικά μηνύματα μέσα από το πρόγραμμά σου. Αν θυμάμαι καλά αν έχεις την Python3 δεν είναι απαραίτητο γιατί έχει ενσωματωμένη υποστήριξη ελληνικών αλλά για προηγούμενες εκδόσεις είναι.
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 - Λίστες, λεξικά, πλειάδες και σύνολα

Δημοσίευσηαπό AngelBreath » 15 Οκτ 2009, 18:23

Υπαρχει καποια μεθοδος indexing της λιστας που να παιρνεις την ΘΕΣΗ? Δηλαδη, εστω οτι εχω μια λιστα με 150 αντικειμενα. Ειναι αδυνατον να θυμαμαι σε ποια θεση ειναι το καθε αντικειμενο. Θελω λοιπον να βαλω ενα νεο αντικειμενο μετα απο ενα αλλο. Με ποιον τροπο θα παρω την θεση του αντικειμενου.
πχ. lista = [1, 2, 3, 4, 5......150]
lista.append (134,5 μετα απο το 134).

Με νουμερα ειναι σχετικα ευκολο, αλλα αν ειχαμε λεξεις, θα ηταν αδυνατο να μετρησουμε την 134η λεξη για να βαλουμε την νεα λεξη.
AngelBreath
babeTUX
babeTUX
 
Δημοσιεύσεις: 46
Εγγραφή: 05 Νοέμ 2008, 23:29
Εκτύπωση

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

Δημοσίευσηαπό da_perama1 » 15 Οκτ 2009, 18:41

Δώσε στο google python list index και θα βρεις την απάντηση.
1 Γνώσεις Linux: Ικανοποιητικό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 13.04 precise 64bit (el_GR.UTF-8), Ubuntu 3.0.0-17-generic
3 Intel Core i5 CPU 650 3.20GHz ‖ RAM 7783 MiB ‖ Intel DH55TC -
4 Intel Core Processor Integrated Graphics Controller [8086:0042] (rev 02)
5 eth0: Intel 82578DC Gigabit Network Connection [8086:10f0] (rev 06)
da_perama1
punkTUX
punkTUX
 
Δημοσιεύσεις: 289
Εγγραφή: 11 Νοέμ 2008, 20:35
Τοποθεσία: Κέρκυρα
Εκτύπωση

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

Δημοσίευσηαπό sokoban4ever » 16 Οκτ 2009, 02:48

@AngelBreath

list.index(x)

η μέθοδος index επιστρέφει την τιμή index (integer) στο πρώτο στοιχείο που θα βρεί της λίστας
και μπορεί να την περιορίσεις που θα ψάξει στην λίστα
πχ από το πρώτο ώς το τρίτο στοιχείο της λίστας :
Κώδικας: Επιλογή όλων
>>> lista = ['mple','mple','kokkino','prasino', 'kitrino','kitrino']
>>> lista.index('prasino')
3
>>> lista.index('prasino',0-3)
3


άμα θέλεις μπορείς να κάνεις και μια δικιά σου συνάρτηση να επιστρέφει όχι μόνο το πρώτο που θα πετύχει αλλά και όλα τα άλλα index ( αν υπάρχουν )
πχ
Κώδικας: Επιλογή όλων
>>> def indexes(lst,value):
   x=[]
   for i,v in  enumerate(lst):
      if value == v :
         x.append(i)
   return x

>>> indexes(lista,'mple')
[0, 1]
>>> indexes(lista,'kitrino')
[4, 5]


:)
Θέλουμε και μπορούμε να έχουμε μια καλύτερη ζωή και όσο θα ζούμε θα προσπαθούμε να την αποκτήσουμε ακόμα και αν πεθάνουμε προσπαθώντας, και αν κάποια στιγμή λιγίσουμε έχουμε το επίπεδο να πούμε κουράστηκα λίγο να ,να ξαποστάσουμε , ώστε να συνεχίσουμε πάλι δυνατοί ξανά.

Μήνυμα με αγάπη και αληλλεγγύη σε όλους τους ανθρώπους από όλους τους λαούς , ιδίως του Ελληνικού.
Άβαταρ μέλους
sokoban4ever
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 2331
Εγγραφή: 13 Φεβ 2009, 02:22
Εκτύπωση

Βρές το λάθος...:)

Δημοσίευσηαπό AngelBreath » 16 Οκτ 2009, 13:19

Κώδικας: Επιλογή όλων
word = 'ΞΥΛΟΚΟΠΟΣ'
def inputCheck():
   print (word)
   hiddenWord =len(word)*['_']
   print (hiddenWord)
   playerGuess = str(input('Δωσε ενα γράμμα :'))
   if playerGuess in word :
      letter = word.index(playerGuess)
      print (letter)
      hiddenWord[letter] == playerGuess
      print (hiddenWord)


Υποθετικα εδω θα επρεπε να αλλαζει την (_) στην θέση της λιστας με το αντιστοιχο γραμμα. Το χω δοκιμασει με string αντι για λιστα=τζιφος. Το χω δοκιμασει με 45 παραλλαγές = τζιφος. Εχω δει στο google =τζιφος. IQ ραδικιου εχω?

Υ.Γ Τα print ειναι για ελεγχο, εκτος απο το τελευταιο που πρεπει να ειναι το σωστο αποτελεσμα.
AngelBreath
babeTUX
babeTUX
 
Δημοσιεύσεις: 46
Εγγραφή: 05 Νοέμ 2008, 23:29
Εκτύπωση

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

Δημοσίευσηαπό sokoban4ever » 20 Οκτ 2009, 19:41

@AngelBreath
:think:
Κοίτα αυτό

Κώδικας: Επιλογή όλων
def kremala(word):
   
   dblCharCount = 0
   letter =''
   hiddenWord =len(word)*['_']
   print (hiddenWord)
   attempts = 0
   
   while hiddenWord.count("_") > 0.:
       playerGuess = raw_input(' Dwse grama ')
       attempts +=1
       if playerGuess == word:
          print " YOU FOUND THE WORD !!!!!! WELL DONE "
          break
       for i ,v in enumerate(word):       
           if v == playerGuess:
               dblCharCount +=1
               if dblCharCount >=1 :
                   hiddenWord.pop(i)
                   hiddenWord.insert(i,v)
                   letter = word.index(playerGuess)
                   print (letter)
                   print (hiddenWord)
     
   else:
      if "_" in hiddenWord:
         print "You lost :(  with %d not found  out of  %d \n  The Word  was %s \n " %  ( hiddenWord.count("_") , len(word) , word)
      else :
         print  " You won  after tried %d  times " % attempts


:think:
αν θές τώρα να μην βλέπει ο χρήστης μονομιάς όλα τα γράμματα που υπάρχουν διπλά ή τριπλά σε μια λέξη
:idea:
χρειάζεσαι μια συνάρτηση που να παίρνει μια γραμματοσείρά η μία λίστα κλπ
και και να επιστρέφει τα γράμματα στις αντίστροφες θέσεις
εκεί δηλαδή που θα έδινε γράμμα να δίνει χαρακτήρα που θέλεις χ
έτσι κάθε φορά (πχ σε κάθε loop ) μπορείς αν είναι list το αντικείμενο που θέλεις να το κάνεις assign
πίσω απο την συνάρτηση ...
Κώδικας: Επιλογή όλων
def mask (original,masked):
   
    msk = []
    try:
        for i,v in enumerate( masked):
            if v in original:
                msk.append("_")
            elif v not in original:
                msk.append(original[i])
    except IndexError:
        pass
    return msk

πχ
    while συνθήκη
    συνθήκες :
    συνθήκες :
    συνθήκες :
    myhiddenListBLABLA = mask (TopSecret ,myhiddenListBLABLA)

    print myhiddenListBLABLA

Με κούρασε το θέμα :oops: και δεν το περίμενα αλλά έκανα καλή εξάσκηση και όλα καλά :D
επίσης θέλω ο κώδικας να είναι GPL :thumbup:
Ελπίζω να βοήθησα αυτά :)
;)
Θέλουμε και μπορούμε να έχουμε μια καλύτερη ζωή και όσο θα ζούμε θα προσπαθούμε να την αποκτήσουμε ακόμα και αν πεθάνουμε προσπαθώντας, και αν κάποια στιγμή λιγίσουμε έχουμε το επίπεδο να πούμε κουράστηκα λίγο να ,να ξαποστάσουμε , ώστε να συνεχίσουμε πάλι δυνατοί ξανά.

Μήνυμα με αγάπη και αληλλεγγύη σε όλους τους ανθρώπους από όλους τους λαούς , ιδίως του Ελληνικού.
Άβαταρ μέλους
sokoban4ever
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 2331
Εγγραφή: 13 Φεβ 2009, 02:22
Εκτύπωση

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

Δημοσίευσηαπό nikosokin » 18 Νοέμ 2010, 19:15

Γεια σας.

Διαβάζοντας το link "Δομές δεδομένων" του Swaroop έφτιαξα το ακόλουθο script
------------------------------------------------
#!/usr/bin/python
#-*- coding: utf-8 -*-

n="νικος"
print n[1]
------------------------------------------------

και το αποθήκευσα σαν test.py
Το έκανα εκτελέσιμο ( chmod +x test.py)
και όταν το έτρεξα δεν μου έβγαλε το επιθυμητό αποτέλεσμα. Δηλαδή το γράμμα ι

Όταν το άλλαξα και το έκανα ως εξής:
------------------------------------------------
#!/usr/bin/python
#-*- coding: utf-8 -*-

n="νικος"
mikos = len(n)
print mikos
------------------------------------------------

Αντί να μου βγάλει 5 μου έβγαλε 10.

Αυτό σημαίνει ότι η κωδικοποίηση utf-8 τον κάθε ελληνικό χαρακτήρα τον αντιστοιχεί για 16bits και όχι 8 όπως το iso8859-7

Το ίδιο script με τη γραμμή #-*- coding: iso8859-7 -*-
μου έδωσε το επιθυμητό αποτέλεσμα, δηλαδή 5.

Ο λόγος σας λέω αυτά είναι διότι δουλεύω πάνω σε μία εφαρμογή στην οποία έχω βάλει τη γραμμή #-*- coding: iso8859-7 -*-
αλλά για κάποιο λόγο δεν μου εμφανίζει πάνω στα κουμπιά και γενικώς στο παράθυρο της εφαρμογής τους χαρακτήρες.
Η εφαρμογή ξεκινάει έτσι:

----------------------------------------------------------------------
#-*- coding: iso8859-7 -*-
try :
import gtk
import gobject
except:
raise SystemExit
import pygtk
if gtk.pygtk_version<(2.0):
print "pygtk 2.0 or later require for this widget"
raise SystemExit
import pango
import random
import time
from os import open
from datetime import date
from sugar.activity import activity

class....bla bla bla...
----------------------------------------------------------

Εκτιμώ πως το κλειδί της απάντησης σε αυτή τη περίπτωση βρίσκεται στις βιβλιοθήκες gtk και pygtk
οι οποίες για κάποιο λόγο δεν αναγνωρίζουν την κωδικοποίηση iso8859-7

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

Ευχαριστώ θερμά για το χρόνο σας και την διάθεση των πολύτιμων γνώσεων και απόψεων σας.

Κράτα με να σε κρατώ να ανεβούμε το βουνό.
Η γνώση είναι για να μεταδίδεται και όχι να φυλακίζεται σε ένα κουφιοκέφαλο.
Άβαταρ μέλους
nikosokin
babeTUX
babeTUX
 
Δημοσιεύσεις: 8
Εγγραφή: 18 Νοέμ 2010, 18:52
Εκτύπωση

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

Δημοσίευσηαπό medigeek » 18 Νοέμ 2010, 19:53

Καλωσόρισες. Στο μέλλον:
- δώσε ολόκληρο τον κώδικα σε code tag: [*code][*/code] (χωρίς τα αστεράκια)
- φτιάξε την υπογραφή σου για να ξέρουμε ποια έκδοση linux χρησιμοποιείς. :)

Δεν είμαι σίγουρος γι' αυτά που θα πω, αλλά δουλεύουν: http://docs.python.org/howto/unicode.html

Σε python2 το string φυλάγεται ως ascii με escape characters (νομίζω):
>>> n="νικος"
>>> print(n)
νικος
>>> n
'\xce\xbd\xce\xb9\xce\xba\xce\xbf\xcf\x82'


Η σωστή μορφή για python2 είναι να χρησιμοποιήσεις το u"string text here":
Κώδικας: Επιλογή όλων
#!/usr/bin/python
# -*- coding: utf-8 -*-

n = u"νίκος"
mikos = len(n)
print(mikos)

Δε δουλεύει στο IDLE του python2 για κάποιο λόγο. Στο τερματικό και ως executable script είναι μια χαρά.



Σε python3 τα strings φυλάγονται με unicode χαρακτήρες:
Κώδικας: Επιλογή όλων
#!/usr/bin/python3
n = "νίκος"
mikos = len(n)
print(mikos)
Κύπριος; Κόπιασε στο 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 - Λίστες, λεξικά, πλειάδες και σύνολα

Δημοσίευσηαπό nikosokin » 19 Νοέμ 2010, 00:27

Εργάζομαι στην υλοποίηση μιας δραστηριότητας (activity) για το xo-laptop ( http://wiki.laptop.org/go/OLPC_Greece ).
Παρακάτω παραθέτω τον κώδικα ενός από τα αρχεία που αποτελούν την εφαρμογή-δραστηριότητα.
Το αρχείο αυτό περιέχει όλα GUI objects (κουμπιά, πλαίσια κειμένου, φωτογραφίες, κτλ.) καθώς και τον κώδικα που τα διαχειρίζεται όλα αυτά.
Το xo-laptop διαθέτει linux fedora. Και χρησιμοποιεί σαν γραφικό περιβάλλον το sugar ( http://translate.flossmanuals.net/Sugar_el/Introduction ).
Όταν τρέχω την εφαρμογή στο olpc (xo-laptop) με κωδικοποίηση utf-8 όλα είναι εντάξει εκτός από το ότι δεν μπορεί να διαχειριστεί τα strings σαν πίνακες.
Δηλαδή την λέξη "ΒΌΤΑΝΟ" την αναγνωρίζει ΚΑΙ την προβάλει, ΑΛΛΆ δεν μπορεί να λειτουργήσει το παιχνίδι (πρόκειται για το γνωστό παιχνίδι Κρεμάλα)
όταν πρέπει να τσεκάρει ξεχωριστά κάθε γράμμα της λέξης. Όταν δηλαδή πρέπει να καλέσει το (lexi="ΒΌΤΑΝΟ") lexi[0] ή lexi[1] κτλ.
Γι αυτό αποφάσισα να χρησιμοποιήσω κωδικοποίηση iso8859-7. Αλλά με αυτή δεν μου εμφανίζει τους χαρακτήρες στην οθόνη.

Θέλω να τονίσω ότι δεν μου τους εμφανίζει το SUGAR!! και όχι το γενικά το laptop!! Το script που αναφέρω στην προηγούμενη δημοσίευση
με iso8859-7 δουλεύει κανονικά!!!

Κώδικας: Επιλογή όλων
# -*- coding=iso8859-7 -*-
try :
    import gtk
    import gobject
except:
    raise SystemExit
import pygtk
if gtk.pygtk_version<(2.0):
    print "pygtk 2.0 or later require for this widget"
    raise SystemExit
import pango
import random
import time
from os import open
from datetime import date
from sugar.activity import activity

class KremalaActivity(activity.Activity):

    def __init__(self, handle):
        activity.Activity.__init__(self, handle)

        self.set_title("Kremala Activity")

# Show the toolbox elements
        toolbox = activity.ActivityToolbox(self)
        self.set_toolbox(toolbox)
        toolbox.show()
#mporei kai na mhn xreiazetai auth h grammh


        table=gtk.Table()
        table.set_homogeneous(False)
        table.set_row_spacings(4)
        table.set_col_spacings(4)

#listes me tis lekseis
        self.list_geo=["ΚΩΝΣΤΑΝΤΙΝΟΥΠΟΛΗ", "ΒΑΤΙΚΑΝΟ","ΤΑΥΓΕΤΟΣ","ΝΟΡΒΗΓΙΑ","ΟΛΥΜΠΟΣ","ΙΜΑΛΑΙΑ",
                       "ΚΑΣΠΙΑ"]

        self.list_hist=["ΓΑΛΙΛΑΙΟΣ","ΜΑΥΡΟΓΕΝΟΥΣ","ΓΙΑΛΤΑ","ΙΟΥΣΤΙΝΙΑΝΟΣ","ΑΡΙΣΤΟΤΕΛΗΣ","ΕΙΛΩΤΕΣ",
                        "ΛΕΩΝΙΔΑΣ"]

        self.list_nat=["ΟΞΥΓΟΝΟ","ΧΛΩΡΟΦΥΛΗ","ΣΑΡΚΟΦΑΓΟ","ΒΟΤΑΝΟ","ΠΛΑΓΚΤΟΝ","ΠΕΤΡΕΛΑΙΟ",
                       "ΦΥΛΛΟΒΟΛΟ"]

        self.list_question_geo=["Είναι η μοναδική πόλη που βρίσκεται ανάμεσα σε 2 χώρες",
                                "Ευρωπαϊκό κράτος που έχει έκταση μόλις μισό τετραγωνικό χιλιόμετρο",
                                "Σε αυτό το βουνό βρισκόταν ο <ΚΑΙΑΔΑΣ>",
                                "Χώρα όπου βρίσκονται οι ψηλότεροι καταράκτες της Ευρώπης",
                                "Είναι το υψηλότερο όρος της Ελλάδας",
                                "Είναι η υψηλότερη οροσειρά του κόσμου",
                                "Είναι η μεγαλύτερη λίμνη του κόσμου και έχει αλμυρό νερό"]

        self.list_question_hist=["Είπε τη φράση: < ΚΙ ΟΜΩΣ ΚΙΝΕΙΤΑΙ >",
                                 "Ηρωίδα της Ελληνικής Επανάστασης που έδιωξε ο Κωλλέτης απο το Ναύπλιο",
                                 "Διάσκεψη στην οποία συζητήθηκε η ίδρυση του Ο.Η.Ε.",
                                 "Βυζαντινός Αυτοκράτορας",
                                 "Δάσκαλος του Μέγα Αλεξάνδρου",
                                 "Έτσι λέγοταν οι < δούλοι > στην αρχαία Σπάρτη",
                                 "Βασιλιάς της Σπάρτης που είπε το γνωστό < ΜΟΛΩΝ ΛΑΒΕ >"]

        self.list_question_nat=["Χωρίς αυτό δεν υπάρχει ζωή",
                                "Απαραίτητη ουσία για το χρώμα των φυτών",
                                "Είναι το ζώο που τρέφεται μόνο με κρέας",
                                "Φυτό το οποίο έχει θεραπευτικές ιδιότητες",
                                "Με αυτό τρέφονται τα μικρά ψάρια",
                                "Παχύρευστη, μαύρη ουσία που αποκαλείται και < ΜΑΥΡΟΣ ΧΡΥΣΟΣ >",
                                "Έτσι λέγεται το δέντρο που ρίχνει τα φύλλα του το Φθινώπορο"]


        button_activity=gtk.Button("Έξοδος")
        button_activity.connect("clicked",lambda wid:gtk.main_quit())
        tooltip = gtk.Tooltips()
        tooltip.set_tip(button_activity, "αποσύνδεση")

        entryname=gtk.Entry()
        entryname.modify_font(pango.FontDescription(str='sans bold 10'))
        entryname.set_max_length(100)
        self.entname=entryname.get_text()


        button_save=gtk.Button("save")
        button_save.connect("clicked",self.buttonsave)
        tooltips = gtk.Tooltips()
        tooltips.set_tip(button_save, "save the name")

        self.m=6
        vbox=gtk.VBox()
        event_box = gtk.EventBox()
        event_box.modify_bg(gtk.STATE_NORMAL, event_box.get_colormap().alloc_color("#75B844"))
        image = gtk.Image()
        image.set_from_file(self.make_image_name(self.m))
        self.image=image
        event_box.add(self.image)
        vbox.add(event_box)

        vbox1=gtk.VBox()
        event_box1= gtk.EventBox()
        event_box1.modify_bg(gtk.STATE_NORMAL, event_box1.get_colormap().alloc_color("#FFF333"))
        image1 = gtk.Image()
        image1.set_from_file('imgg/skepsi.jpg')
        self.image1=image1
        event_box1.add(self.image1)
        vbox1.add(event_box1)

        #kathgories
        table_category=gtk.Table()
        table_category.set_homogeneous(False)
        table_category.set_row_spacings(2)
        table_category.set_col_spacings(2)

        buttongeo=gtk.Button("GEOGRAPHY")
        buttongeo.connect("clicked", self.random_word, self.list_geo)
        tooltips = gtk.Tooltips()
        tooltips.set_tip(buttongeo, "BUTTON GEOGRAFIA")
        buttonhist=gtk.Button("ISTORIA")
        buttonhist.connect("clicked", self.random_word, self.list_hist)
        tooltips = gtk.Tooltips()
        tooltips.set_tip(buttonhist, "BUTTON ISTORIA")
        buttonnat=gtk.Button("PERIVALLON")
        buttonnat.connect("clicked", self.random_word, self.list_nat)
        tooltips = gtk.Tooltips()
        tooltips.set_tip(buttonnat, "BUTTON PERIVALLON")

        self.buttongeo=buttongeo
        self.buttonhist=buttonhist
        self.buttonnat=buttonnat

        table_category.attach(buttongeo,0,1,0,1)
        table_category.attach(buttonhist,0,1,1,2)
        table_category.attach(buttonnat,0,1,2,3)

        vbox2=gtk.VBox()
        event_box2= gtk.EventBox()
        event_box2.modify_bg(gtk.STATE_NORMAL, event_box2.get_colormap().alloc_color("#75B844"))
        image2 = gtk.Image()
        image2.set_from_file('imgg/img_kategory.jpg')
        self.image2=image2
        event_box2.add(self.image2)
        vbox2.add(event_box2)


        textview2=gtk.TextView()  #leksi
        textview2.set_editable(False)
        textview2.set_cursor_visible(False)
        textview2.set_justification(gtk.JUSTIFY_CENTER)
        textview2.modify_font(pango.FontDescription(str='sans bold 18'))
        self.textbuffer2=textview2.get_buffer()


        entrygr=gtk.Entry()
        entrygr.set_editable(False)
        entrygr.modify_font(pango.FontDescription(str='sans bold 16'))
        entrygr.set_max_length(13)
        self.entgr=entrygr.get_text()
        tooltips = gtk.Tooltips()
        tooltips.set_tip(entrygr, "edo emfanizontai ta lathos gramata")

        textview1=gtk.TextView()  #erotisi
        textview1.set_editable(False)
        textview1.set_cursor_visible(False)
        textview1.set_justification(gtk.JUSTIFY_LEFT)
        textview1.modify_font(pango.FontDescription(str='sans bold 8'))
        self.textbuffer1=textview1.get_buffer()

        labelname=gtk.Label("onoma:")
        labelname.modify_font(pango.FontDescription(str='sans bold 10'))
        labelname.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse('red'))

        entrymin=gtk.Entry()
        entrymin.set_editable(False)
        entrymin.modify_font(pango.FontDescription(str='sans bold 10'))
        entrymin.set_max_length(100)
        self.entmin=entrymin.get_text()

        entryprot=gtk.Entry()
        entryprot.set_editable(False)
        entryprot.modify_font(pango.FontDescription(str='sans bold 12'))
        entryprot.set_max_length(70)
        self.entprot=entryprot.get_text()

#dhmiourgei to plhktrologio me ta gramata
        pad=gtk.Table()
        table.set_homogeneous(False)
        pad.set_row_spacings(2)
        pad.set_col_spacings(1)
        but_a=gtk.Button('A')
        but_a.connect("clicked", self.add_letter, 'a')
        self.but_a=but_a
        but_b=gtk.Button('B')
        but_b.connect("clicked", self.add_letter, 'b')
        self.but_b=but_b
        but_c=gtk.Button('C')
        but_c.connect("clicked", self.add_letter, 'c')
        self.but_c=but_c
        but_d=gtk.Button('D')
        but_d.connect("clicked", self.add_letter, 'd')
        self.but_d=but_d
        but_e=gtk.Button('E')
        but_e.connect("clicked", self.add_letter, 'e')
        self.but_e=but_e
        but_f=gtk.Button('F')
        but_f.connect("clicked", self.add_letter, 'f')
        self.but_f=but_f
        but_g=gtk.Button('G')
        but_g.connect("clicked", self.add_letter, 'g')
        self.but_g=but_g
        but_h=gtk.Button('H')
        but_h.connect("clicked", self.add_letter, 'h')
        self.but_h=but_h
        but_i=gtk.Button('I')
        but_i.connect("clicked", self.add_letter, 'i')
        self.but_i=but_i
        but_j=gtk.Button('J')
        but_j.connect("clicked", self.add_letter, 'j')
        self.but_j=but_j
        but_k=gtk.Button('K')
        but_k.connect("clicked", self.add_letter, 'k')
        self.but_k=but_k
        but_l=gtk.Button('L')
        but_l.connect("clicked", self.add_letter, 'l')
        self.but_l=but_l
        but_m=gtk.Button('M')
        but_m.connect("clicked", self.add_letter, 'm')
        self.but_m=but_m
        but_n=gtk.Button('N')
        but_n.connect("clicked", self.add_letter, 'n')
        self.but_n=but_n
        but_o=gtk.Button('O')
        but_o.connect("clicked", self.add_letter, 'o')
        self.but_o=but_o
        but_p=gtk.Button('P')
        but_p.connect("clicked", self.add_letter, 'p')
        self.but_p=but_p
        but_q=gtk.Button('Q')
        but_q.connect("clicked", self.add_letter, 'q')
        self.but_q=but_q
        but_r=gtk.Button('R')
        but_r.connect("clicked", self.add_letter, 'r')
        self.but_r=but_r
        but_s=gtk.Button('S')
        but_s.connect("clicked", self.add_letter, 's')
        self.but_s=but_s
        but_t=gtk.Button('T')
        but_t.connect("clicked", self.add_letter, 't')
        self.but_t=but_t
        but_u=gtk.Button('U')
        but_u.connect("clicked", self.add_letter, 'u')
        self.but_u=but_u
        but_v=gtk.Button('V')
        but_v.connect("clicked", self.add_letter, 'v')
        self.but_v=but_v
        but_w=gtk.Button('W')
        but_w.connect("clicked", self.add_letter, 'w')
        self.but_w=but_w
        but_x=gtk.Button('X')
        but_x.connect("clicked", self.add_letter, 'x')
        self.but_x=but_x
        but_y=gtk.Button('Y')
        but_y.connect("clicked", self.add_letter, 'y')
        self.but_y=but_y
        but_z=gtk.Button('Z')
        but_z.connect("clicked", self.add_letter, 'z')
        self.but_z=but_z
        pad.attach(but_a,0,1,0,1)
        pad.attach(but_b,1,2,0,1)
        pad.attach(but_c,2,3,0,1)
        pad.attach(but_d,3,4,0,1)
        pad.attach(but_e,4,5,0,1)
        pad.attach(but_f,5,6,0,1)
        pad.attach(but_g,6,7,0,1)
        pad.attach(but_h,7,8,0,1)
        pad.attach(but_i,8,9,0,1)
        pad.attach(but_j,9,10,0,1)
        pad.attach(but_k,10,11,0,1)
        pad.attach(but_l,11,12,0,1)
        pad.attach(but_m,12,13,0,1)
        pad.attach(but_n,0,1,1,2)
        pad.attach(but_o,1,2,1,2)
        pad.attach(but_p,2,3,1,2)
        pad.attach(but_q,3,4,1,2)
        pad.attach(but_r,4,5,1,2)
        pad.attach(but_s,5,6,1,2)
        pad.attach(but_t,6,7,1,2)
        pad.attach(but_u,7,8,1,2)
        pad.attach(but_v,8,9,1,2)
        pad.attach(but_w,9,10,1,2)
        pad.attach(but_x,10,11,1,2)
        pad.attach(but_y,11,12,1,2)
        pad.attach(but_z,12,13,1,2)

#vazei ola ta widgets sto table
        table.attach(button_activity,6,7,0,1)
        table.attach(labelname,2,3,0,1)
        table.attach(entryname,3,5,0,1)
        table.attach(button_save,5,6,0,1)
        table.attach(vbox,0,2,0,4)
        table.attach(table_category,2,4,1,2)
        table.attach(vbox2,4,10,1,2)
        table.attach(textview2,2,10,2,3)
        table.attach(entrygr, 2,10,3,4)
        table.attach(textview1,0,10,4,5)
        table.attach(vbox1,0,1,5,6)
        table.attach(entrymin, 1,10,5,6)
        table.attach(entryprot, 0,10,6,7)
        table.attach(pad, 0,10,7,8)
##
##        window.add(table)
##        window.show_all()

        self.set_canvas(table)
        self.show_all()

        self.view2=textview2
        self.entrygr=entrygr
        self.entrymin=entrymin
        self.entryprot=entryprot
        self.entryname=entryname
        self.button_save=button_save
        self.button_activity=button_activity

        self.image.set_from_file(self.make_image_name(6))
        self.list_button=[self.but_a, self.but_b,self.but_c,self.but_d,self.but_e,self.but_f,
        self.but_g,self.but_h,self.but_i,self.but_j,self.but_k,self.but_l,
        self.but_m,self.but_n,self.but_o,self.but_p,self.but_q,self.but_r,
        self.but_s,self.but_t,self.but_u,self.but_v,self.but_w,self.but_x,
        self.but_y,self.but_z]

        self.buttongeo.set_sensitive(False)
        self.buttonhist.set_sensitive(False)
        self.buttonnat.set_sensitive(False)
        self.disable_keyboard(False)
        self.entryprot.set_text("Exeis 6 prospatheies gia na breis th leksi")


#metavlites
        self.w=" "      #apithikeuetai h epilegmenh leksi
        self.p=" "      #apothikeuontai oi paules
        self.list_again=[]      #lista me ta gramata pou dinontai
        self.gr=' '     #to grama pou epilegei o xrhsths
        self.categ=" "

#epistrefei thn eikona
    def make_image_name(self, image_number):
        return "imgg/image" + str(image_number) + ".jpg"

#synarthsh poy allazei tis eikones analoga me thn timh tou metrhth m
    def change_image(self):
        for i in range(6):
            if self.m==i:
                self.image.set_from_file(self.make_image_name(i))
        return True

#vriskei ta gramata ths leksis
    def show_gr(self):
        new=""                #apothikeuetai h nea leksi
        for i in range(len(self.w)):
            if self.gr==self.w[i]:      #an to grama uparxei sth leksi
                new=new+self.gr     #to vazei sto new
            else:
                new=new+self.p[i]    #allios vazei paula, to p[] periexei paules
        self.p=new
        self.textbuffer2.set_text(new)     #emfanizei sto textview2 th nea leksi

#eisagei stoixeia sto arxeio elements_file.txt, to opoio periexei statistika stoixeia ton paikton
    def insert_text_file(self, strng):
        file_obj=open('elements_file.txt', 'a')  #anoigei to arxeio gia eisagogh stoixeion
        file_obj.write(strng)
        file_obj.close()

#otan path8ei to save, apo8ikeuontai kapoia stoixeia sto elements_file.txt
    def buttonsave(self,widget):
        self.disable_buttCateg(True)
        self.disable_keyboard(True)
        self.button_save.set_sensitive(False)   #apenergopoihsh tou button save, etsi oste                                                #ka8e neos paikths na apo8hkeuei mia fora
                                                #to onoma tou oso exei anoixto to paixnidi
        ss=" "
        ss="\nonoma: "+self.entryname.get_text()+"\n"     #onoma paikth
        xronos=date.today()          #hmerominia
        y=xronos.strftime("%m-%d-%y")    #y=periexei thn hmerominia p.x. 03-05-09
        u=time.localtime()              #ora
        w=u.strftime("%H:%M:%S")    #w=periexei thn ora p.x. 12:25:13
##        rr=str(y)
##        uu=str(w)
##        self.insert_text_file(ss+"hmerominia - ora: "+rr+" / "+uu+"\n")
        self.insert_text_file(ss+"hmerominia - ora: "+y+" / "+w+"\n")



#kaleitai otan o piakths vrei th leksi
    def sosti_leksi(self):
        if self.w==self.p:      #an h epilegmenh leksi 'w' einai ish me thn metabliti 'p'
                                #poy periexei ta sosta gramata poy vriskei o paikths
            self.entrymin.set_text("Sugxarhthria, kerdises!!!")
            self.disable_keyboard(False)
            self.image1.set_from_file('imgg/Kerdises.jpg')
            s=self.categ+": "+str(1)+" nikh me "+str(6-self.m)+" prospatheies\n"
            self.insert_text_file(s)

#apenergopoiei to plhktrologio
    def disable_keyboard(self, valuebool):
        for i in range(26):
            self.list_button[i].set_sensitive(valuebool)

#apenergopoihsh button kathgorion
    def disable_buttCateg(self, timi):
        self.buttongeo.set_sensitive(timi)
        self.buttonhist.set_sensitive(timi)
        self.buttonnat.set_sensitive(timi)

#kaleitai otan o piakths den vrei th leksi
    def lathos_leksi(self):
        self.entrymin.set_text("Dystyxos exases. H sosth leksi einai: "+self.w)
        self.disable_keyboard(False)
        self.image1.set_from_file('imgg/exases.jpg')
        rr=self.categ+": "+str(1)+" htta\n"
        self.insert_text_file(rr)


#elegxei an to grama exei dothei ksana
    def gr_again(self, g, lista):
        for k in range(len(lista)):
            if lista[k]==g:
                   return True

#kaleitai otan patithei kapoio grama
    def add_letter(self,widget, grama):
        self.gr=grama
        self.entrymin.set_text("")
        again=self.gr_again(self.gr, self.list_again)
        if again==True:
            self.entrymin.set_text("To gramma uparxei hdh. Dose allo gramma.")
        else:
            self.find_w()

#h synarthsh me oles tis leitourgies gia na brethei h leksi
    def find_w(self):
        self.list_again.append(self.gr)   #vazei to grama sth lista me ta dosmena gramata
        t=self.w.find(self.gr)         #elegxei an to grama uparxei sth leksi
        if t==-1:                          #an den uparxei
            self.m=self.m-1           #meionei ton metrhth prospatheion
            if self.m==0:               #an einai mhden, emfanizei thn protash,
                                        #emfanizei to la8os grama kai to skitso,
                                        #kalei thn lathos_leksi
                self.entryprot.set_text("Exeis "+str(self.m)+" prospatheies gia na breis th leksi")
                self.entrygr.insert_text(self.gr+" ",len(self.entgr)-1)
                self.image.set_from_file(self.make_image_name(0))
                self.lathos_leksi()
            elif self.m>0:              #an einai megalytero tou mhdenos,
                                        #emfanizei thn protash,
                                        #emfanizei to la8os grama kai to skitso
                self.entryprot.set_text("Exeis "+str(self.m)+" prospatheies gia na breis th leksi")
                self.entrygr.insert_text(self.gr+" ",len(self.entgr)-1)
                self.change_image()
        else:              #an uparxei to gramma kalei tis show_gr() kai sosti_leksi()
            self.show_gr()
            self.sosti_leksi()


#epistrefei thn kathgoria pou epelekse o paikths gia na graftei sto arxeio me ta stoixeia
    def name_category(self, lista):
        if lista==self.list_geo:
            self.categ="geografia"
        elif lista==self.list_hist:
            self.categ="history"
        elif lista==self.list_nat:
            self.categ="periballon"
        return self.categ

    def question(self, listakat):
        q=""
        if listakat==self.list_geo:
            for i in range(7):
                if self.list_geo[i]==self.w:
                    q=self.list_question_geo[i]
        elif listakat==self.list_hist:
            for i in range(7):
                if self.list_hist[i]==self.w:
                    q=self.list_question_hist[i]
        elif listakat==self.list_nat:
            for i in range(7):
                if self.list_nat[i]==self.w:
                    q=self.list_question_nat[i]
        return q

#kaleitai otan path8ei button kapoias kathgorias
    def random_word(self, widget, lista):
        self.name_category(lista)
        self.m=6
        self.clear()
        self.w=random.choice(lista)
        n=len(self.w)
        self.p="-"*n
        iter=self.textbuffer2.get_iter_at_offset(0)
        self.textbuffer2.insert(iter,self.p)
        ques=self.question(lista)
        self.textbuffer1.set_text(ques)
##"\n"+"\n"+
#katharizei thn othonh se kathe neo paixnidi
    def clear(self):
        self.entrygr.set_text(" ")
        self.entrymin.set_text(" ")
        self.entryprot.set_text("Exeis 6 prospatheies gia na breis th leksi")
        self.textbuffer2.set_text(" ")
        self.list_again=[]
        self.image.set_from_file(self.make_image_name(6))
        self.image1.set_from_file('imgg/skepsi.jpg')
        self.disable_keyboard(True)




def main():
    win = gtk.Window(gtk.WINDOW_TOPLEVEL)
    KremalaActivity(win)
    gtk.main()
    return 0

if __name__ == "__main__":
    main()


Ευχαριστώ πάρα πολύ και πάλι.

Κράτα με να σε κρατώ να ανεβούμε το βουνό.
Η γνώση είναι για να μεταδίδεται και όχι να φυλακίζεται σε ένα κουφιοκέφαλο.
Άβαταρ μέλους
nikosokin
babeTUX
babeTUX
 
Δημοσιεύσεις: 8
Εγγραφή: 18 Νοέμ 2010, 18:52
Εκτύπωση

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

Δημοσίευσηαπό medigeek » 19 Νοέμ 2010, 00:46

Δουλεύει με τον τρόπο που σου παράθεσα με το u"text" -- κοίταξε τα παραδείγματα πιο πάνω :)
Νομίζω πως κάνει αυτό που ζητάς:

$ python
Python 2.6.6 (r266:84292, Sep 15 2010, 16:22:56)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> n = u"νίκος"
>>> mikos = len(n)
>>> mikos
5
>>> n
u'\u03bd\u03af\u03ba\u03bf\u03c2'
>>> n[0]
u'\u03bd'
>>> print(n[0])
ν

>>> for x in n: print(x)
...
ν
ί
κ
ο
ς


Ο κώδικας σε αρχείο:
Κώδικας: Επιλογή όλων
#!/usr/bin/python
# -*- coding=utf-8 -*-
n = u"νίκος"
mikos = len(n)
print(len(n))
for x in n:
    print(x)
Κύπριος; Κόπιασε στο 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