Τα πάντα για την Python

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

Re: Τα πάντα για την Python

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

yodan000 έγραψε:επίσης τι σημαίνει αυτό;
Κώδικας: Επιλογή όλων
Συμβολοσειρές τεκμηρίωσης (DocStrings)

Η Python έχει ένα θαυμάσιο χαρακτηριστικό που ονομάζεται συμβολοσειρές τεκμηρίωσης (documentation strings) και συνήθως αναφέρεται με τη συντομογραφία DocStrings. Οι συμβολοσειρές τεκμηρίωσης είναι ένα σπουδαίο εργαλείο που πρέπει να χρησιμοποιείτε διότι βοηθάει να τεκμηριώσετε το πρόγραμμα καλύτερα και έτσι γίνεται πιο εύκολα κατανοητό. Το εντυπωσιακό είναι ότι μπορούμε να πάρουμε επιστροφή τη συμβολοσειρά τεκμηρίωσης από μια συνάρτηση για παράδειγμα, ενώ το πρόγραμμα πραγματικά τρέχει!
[...]


Συμβολοσειρές τεκμηρίωσης ή documentation strings είναι ένα κομμάτι κειμένου το οποίο παρέχει ο προγραμματιστής, ούτως ώστε κάποιος άλλος όταν διαβάζει τον κώδικα να μπορεί να καταλάβει τί κάνει η εντολή.

Τα docstrings αναγνωρίζονται αυτόματα από την εντολή help. Εσώκλεισε το κείμενο σε τρία συνεχόμενα διπλά εισαγωγικά (""").

Παράδειγμα το παραπάνω που έθεσες, λίγο αλλαγμένο. Υπό μορφή "addon" (module, αρχείο το οποίο «καλείς» στην python και εκτελείς def εντολές που περιέχει το αρχείο) έχεις κάτι τέτοιο:
Κώδικας: Επιλογή όλων

# -*- coding: utf-8 -*-
# Filename: func_doc.py

def printMax(x, y):
""" Prints the maximum of two numbers.
Oι δύο τιμές πρέπει να είναι ακέραιοι αριθμοί.
"""
x = int(x) # μετέτρεψε σε ακέραιους αριθμούς αν είναι δυνατόν
y = int(y)

if x > y:
print(x, 'is maximum')
else:
print(y, 'is maximum')

#printMax(3, 5)
#print(printMax.__doc__)


Φύλαξε τον παραπάνω κώδικα στον προσωπικό σου φάκελο (/home/user) σε αρχείο με το όνομα: func_doc.py

Ανοίγεις το τερματικό και εκτελείς:
Κώδικας: Επιλογή όλων
python -c "import func_doc; help(func_doc.printMax)"

(Πιέζεις "q" για να βγεις)

* Η παραπάνω γραμμή κώδικα είναι το ίδιο σαν να έγραψες:
Κώδικας: Επιλογή όλων
python

Μετά:
Κώδικας: Επιλογή όλων

import func_doc
help(func_doc.printMax)


* Το αρχείο func_doc.py καλείται ως func_doc module με την εντολή import
* Σε ενδιαφέρει το docstring του def printMax που είναι στο func_doc.py
* Εσύ εκτελείς το help() με το func_doc.printMax («το def printMax του module func_doc»)
Κύπριος; Κόπιασε στο 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: Τα πάντα για την Python

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

Καλησπέρα.

Ωραία η python, καλή η python, αλλά όπως και με τις υπόλοιπες γλώσσες μέχρι εκεί που έρχεται η στιγμή που συμβαίνει
το απίθανο, το ανεξήγητο (για μένα of course)!!!

Έχω λοιπόν το αρχειάκι μου (Kremala.py) κι εκεί που όλα βαίνουν καλώς μου 'ρχεται να διαβάσω/γράψω από/σε ένα txt αρχείο.
Κι εδώ αρχίζουν τα ανεξήγητα για μένα.

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

Ξεκινώντας λοιπόν είχα γράψει:
Κώδικας: Επιλογή όλων
file_obj = open('elements.txt', 'a')
file_obj.write(strng)
file_obj.close()

Όταν πήγαινα να τρέξω την εφαρμογή, κάπου "έσκαγε" και έκλεινε (δηλαδή με πέταγε έξω)

Μετά από πολλές δοκιμές και tutorials κατάφερα να ανοίξω ένα αρχείο και να τραβήξω μία γραμμή με τον εξής κώδικα:
Κώδικας: Επιλογή όλων
infile = file('words.txt', 'ra')
text_file = infile.read()
infile.close()

Με αυτόν τον κώδικα μου έτρεξε κανονικότατα!!!
Θαρρώ πως το 'ra' είναι για διάβασμα ΚΑΙ γράψιμο.
Έτσι λοιπόν εκτός απο το να διαβάσω, είπα και να γράψω....

Και τον τροποποίησα ως εξής:
Κώδικας: Επιλογή όλων
infile = file('words.txt', 'ra')
to_file = "epitelous doulepse!!!"
infile.write(to_file)
infile.close()


Με τον παραπάνω κώδικα με πετάει έξω....
Μόλις βάλω σε σχόλια τη γραμμή infile.write(to_file)
δουλεύει κανονικά, μόνο που δεν γράφει στο αρχείο (φυσικό).
Για ποιο λόγο λοιπόν μου σκάει όταν διαβάζει τη γραμμή infile.write(to_file)??????

Ευχαριστώ για το χρόνο σας.

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

Re: Τα πάντα για την Python

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

έγραψε:Όταν πήγαινα να τρέξω την εφαρμογή, κάπου "έσκαγε" και έκλεινε (δηλαδή με πέταγε έξω)

Μας ενδιαφέρει και το σφάλμα που σου πετάει, αν υπάρχει, όταν εκτελείς τον κώδικα μέσω terminal. ;)

Input / Output: http://docs.python.org/tutorial/inputou ... ting-files

Κατα το άνοιγμα του αρχείου με το open() έχεις τρία modes/"επιλογές":
r = read -- διαβάζει το αρχείο. Αυτή είναι η προεπιλεγμένη επιλογή.
w = write (ή overwrite :P ) -- γράφει στο αρχείο αρχίζοντας από την αρχή του κειμένου.
a = append -- γράφει στο αρχείο αρχίζοντας από το τέλος του κειμένου (προσθέτει κείμενο δηλαδή).
a+ = append + read
r+ = read + write

Ο κώδικας που έδωσες φαίνεται γενικά εντάξει. Χωρίς το σφάλμα μπορώ μόνο να υποθέσω πού είναι το πρόβλημα.

Υπόθεση 1: Νομίζω έκανα λάθος με τα modes στο άλλο θέμα. Πιστεύω πως πρέπει να είναι "a+" αν θέλεις append + read
Υπόθεση 2: Στο αρχείο γράφονται τα δεδομένα συνήθως όταν εκτελέσεις το close()
Κύπριος; Κόπιασε στο 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: Τα πάντα για την Python

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

medigeek,
μετά από πολλές δοκιμές αντιλήφθηκα το εξής. Σαν mode δέχεται ΜΌΝΟ το 'r'. Για οποιοδήποτε άλλο mode με πετάει εκτός.
Πιθανότατα αυτό συμβαίνει διότι ΔΕΝ μπορεί να κάνει 'write' στο αρχείο. Να υποθέσω λόγω δικαιωμάτων????? Δε ξέρω......

Πάντως είναι κουφό... :P

Επίσης δεν μπορώ να σου στείλω κάποιο σφάλμα που με πετάει γιατί δεν το τρέχω σε terminal.
Είναι μία εφαρμογή για το olpc http://wiki.laptop.org/go/The_OLPC_Wiki.
Εγώ έχω συνδεθεί με putty (remotely) με το olpc και από εκεί πειράζω τον κώδικά μου επειδή το olpc έχει πολύ μικρή οθόνη.
Έπειτα απλώς τρέχω την εφαρμογή από το εικονίδιό της στο olpc και βλέπω τα αποτελέσματα των αλλαγών που έχω κάνει στο ίδιο το olpc.
Αυτό σημαίνει ότι με το να σου στείλω τον κώδικα δεν μπορείς να τον τρέξεις διότι χρειάζεσαι και τα υπόλοιπα αρχεία αλλά ΚΑΙ έναν olpc emulator.

Δεν κατάλαβα την 2η σου Υπόθεση. Τι εννοείς στο αρχείο γράφονται τα δεδομένα συνήθως όταν εκτελέσεις το close()????
:)

Σας ευχαριστώ πολύ και πάλι για τον πολύτιμο χρόνο σας.

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

Re: Τα πάντα για την Python

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

nikosokin έγραψε:
μετά από πολλές δοκιμές αντιλήφθηκα το εξής. Σαν mode δέχεται ΜΌΝΟ το 'r'. Για οποιοδήποτε άλλο mode με πετάει εκτός.
Πιθανότατα αυτό συμβαίνει διότι ΔΕΝ μπορεί να κάνει 'write' στο αρχείο. Να υποθέσω λόγω δικαιωμάτων????? Δε ξέρω......

Δοκίμασε με: open("file.txt", "a+")
Το δοκίμασα και δούλεψε μια χαρά. :)

Αλλιώς, κάλεσε open("file.txt", "r") για read και open("file.txt", "a") για append ξεχωριστά κάθε φορά που θέλεις είτε read είτε append.

nikosokin έγραψε:Δεν κατάλαβα την 2η σου Υπόθεση. Τι εννοείς στο αρχείο γράφονται τα δεδομένα συνήθως όταν εκτελέσεις το close()????


Εννοώ:
Κώδικας: Επιλογή όλων
f = open("test.txt", "a+")
f.read()
f.write("hellooo")
f.close()


Συνήθως (όχι πάντα) πριν το "f.close()" δεν θα φυλάξει στο αρχείο τίποτα.
Κύπριος; Κόπιασε στο 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: Τα πάντα για την Python

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

Ούτε αυτό δουλεύει αγαπητέ.

Ορίστε όλος ο κώδικάς....
Κώδικας: Επιλογή όλων
# -*- 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=[u"ΚΩΝΣΤΑΝΤΙΝΟΥΠΟΛΗ",u"ΒΑΤΙΚΑΝΟ",u"ΤΑΥΓΕΤΟΣ",u"ΝΟΡΒΗΓΙΑ",u"ΟΛΥΜΠΟΣ",u"ΙΜΑΛΑΙΑ",
u"ΚΑΣΠΙΑ"]

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

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

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

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

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


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

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(u"Είσοδος")
button_save.connect("clicked",self.buttonsave)
tooltips = gtk.Tooltips()
tooltips.set_tip(button_save, u"Σύνδεση στο παιχνίδι")

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(u"ΓΕΩΓΡΑΦΙΑ")
buttongeo.connect("clicked", self.random_word, self.list_geo)
tooltips = gtk.Tooltips()
tooltips.set_tip(buttongeo, u"Κατηγορία λέξεων με θέμα τη Γεωγραφία")
buttonhist=gtk.Button(u"ΙΣΤΟΡΙΑ")
buttonhist.connect("clicked", self.random_word, self.list_hist)
tooltips = gtk.Tooltips()
tooltips.set_tip(buttonhist, u"Κατηγορία λέξεων με θέμα την Ιστορία")
buttonnat=gtk.Button(u"ΠΕΡΙΒΑΛΛΟΝ")
buttonnat.connect("clicked", self.random_word, self.list_nat)
tooltips = gtk.Tooltips()
tooltips.set_tip(buttonnat, u"Κατηγορία λέξεων με θέμα το Περιβάλλον")

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, u"Εδώ εμφανίζονται τα γράμματα που έχεις επιλέξει και είναι ΛΑΘΟΣ")

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(u"Όνομα προφίλ:")
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(u'Α')
but_a.connect("clicked", self.add_letter, u'Α')
self.but_a=but_a
but_b=gtk.Button(u'Β')
but_b.connect("clicked", self.add_letter, u'Β')
self.but_b=but_b
but_c=gtk.Button(u'Γ')
but_c.connect("clicked", self.add_letter, u'Γ')
self.but_c=but_c
but_d=gtk.Button(u'Δ')
but_d.connect("clicked", self.add_letter, u'Δ')
self.but_d=but_d
but_e=gtk.Button(u'Ε')
but_e.connect("clicked", self.add_letter, u'Ε')
self.but_e=but_e
but_f=gtk.Button(u'Ζ')
but_f.connect("clicked", self.add_letter, u'Ζ')
self.but_f=but_f
but_g=gtk.Button(u'Η')
but_g.connect("clicked", self.add_letter, u'Η')
self.but_g=but_g
but_h=gtk.Button(u'Θ')
but_h.connect("clicked", self.add_letter, u'Θ')
self.but_h=but_h
but_i=gtk.Button(u'Ι')
but_i.connect("clicked", self.add_letter, u'Ι')
self.but_i=but_i
but_j=gtk.Button(u'Κ')
but_j.connect("clicked", self.add_letter, u'Κ')
self.but_j=but_j
but_k=gtk.Button(u'Λ')
but_k.connect("clicked", self.add_letter, u'Λ')
self.but_k=but_k
but_l=gtk.Button(u'Μ')
but_l.connect("clicked", self.add_letter, u'Μ')
self.but_l=but_l
but_m=gtk.Button(u'Ν')
but_m.connect("clicked", self.add_letter, u'Ν')
self.but_m=but_m
but_n=gtk.Button(u'Ξ')
but_n.connect("clicked", self.add_letter, u'Ξ')
self.but_n=but_n
but_o=gtk.Button(u'Ο')
but_o.connect("clicked", self.add_letter, u'Ο')
self.but_o=but_o
but_p=gtk.Button(u'Π')
but_p.connect("clicked", self.add_letter, u'Π')
self.but_p=but_p
but_q=gtk.Button(u'Ρ')
but_q.connect("clicked", self.add_letter, u'Ρ')
self.but_q=but_q
but_r=gtk.Button(u'Σ')
but_r.connect("clicked", self.add_letter, u'Σ')
self.but_r=but_r
but_s=gtk.Button(u'Τ')
but_s.connect("clicked", self.add_letter, u'Τ')
self.but_s=but_s
but_t=gtk.Button(u'Υ')
but_t.connect("clicked", self.add_letter, u'Υ')
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(u'Χ')
but_v.connect("clicked", self.add_letter, u'Χ')
self.but_v=but_v
but_w=gtk.Button(u'Ψ')
but_w.connect("clicked", self.add_letter, u'Ψ')
self.but_w=but_w
but_x=gtk.Button(u'Ω')
but_x.connect("clicked", self.add_letter, u'Ω')
self.but_x=but_x

#####self.buffer_test.set_text(onoma metavlitis 'h "keimeno")
test=gtk.TextView()
self.test=test
self.buffer_test=test.get_buffer()

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(test,11,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.test]

self.buttongeo.set_sensitive(False)
self.buttonhist.set_sensitive(False)
self.buttonnat.set_sensitive(False)
self.disable_keyboard(False)
self.entryprot.set_text(u"Έχεις 6 προσπάθειες για να βρείς τη λέξη")


#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=" "
infile = file("words.txt", "r") #####----------------------------------------------------------> Το σημείο για το οποίο σου λέω. Μόνο έτσι δουλεύει....
## text_file = infile.readline()
## self.buffer_test.set_text(text_file)
## to_file="EPITELOUS EGRAPSA"
## infile.write(to_file)
infile.close()
#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.txt, to opoio periexei statistika stoixeia ton paikton
def insert_text_file(self, strng):
file_obj = file(u'elements.txt', u'a') #######------------------------------------------------------>Αυτό δεν κρασάρει γιατί είναι μέσα σε def.
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=" "
profileElements=" "
ss=u"\nΌνομα προφίλ: "+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=time.strftime("%H:%M:%S",u) #w=periexei thn ora p.x. 12:25:13
profileElements=ss+ u"Ημερομηνία - Ώρα: "+y+" / "+w+"\n"
self.insert_text_file(profileElements)


#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(u"Συγχαρητήρια, ΚΕΡΔΙΣΕΣ!!!")
self.disable_keyboard(False)
self.image1.set_from_file('imgg/Kerdises.jpg')
s=self.categ+": "+str(1)+ u" νίκη με "+str(6-self.m)+ u" προσπάθειες\n"
self.insert_text_file(s)


#apenergopoiei to plhktrologio
def disable_keyboard(self, valuebool):
for i in range(24):
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(u"Λυπάμαι, έχασες. Η σωστή λέξη είναι: "+self.w)
self.disable_keyboard(False)
self.image1.set_from_file('imgg/exases.jpg')
rr=self.categ+": "+str(1)+ u" ήττα\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(u"Το γράμμα υπάρχει ήδη! Επέλεξε άλλο...")
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(u"Έχεις "+str(self.m)+ u" προσπάθειες για να βρείς τη λέξη")
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(u"Έχεις "+str(self.m)+ u" προσπάθειες για να βρείς τη λέξη")
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=u"Γεωγραφία"
elif lista==self.list_hist:
self.categ=u"Ιστορία"
elif lista==self.list_nat:
self.categ=u"Περιβάλλον"
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(u"Έχεις 6 προσπάθειες για να βρείς τη λέξη")
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: Τα πάντα για την Python

Δημοσίευσηαπό medigeek » 20 Νοέμ 2010, 01:29

έγραψε:# -*- coding: iso8859-7 -*-


Με utf-8;

έγραψε:#eisagei stoixeia sto arxeio elements.txt, to opoio periexei statistika stoixeia ton paikton
def insert_text_file(self, strng):
file_obj = file(u'elements.txt', u'a') #######------------------------------------------------------>Αυτό δεν κρασάρει γιατί είναι μέσα σε def.
file_obj.write(strng) ##### Ουσιαστικά αυτό θέλω να φτιάξω. Το παραπάνω είναι δοκιμαστικό
file_obj.close()


Το mode είναι 'a', όχι u'a':
Κώδικας: Επιλογή όλων
#eisagei stoixeia sto arxeio elements.txt, to opoio periexei statistika stoixeia ton paikton
def insert_text_file(self, strng):
file_obj = file(u'elements.txt', 'a') #######------------------------------------------------------>Αυτό δεν κρασάρει γιατί είναι μέσα σε def.
file_obj.write(strng) ##### Ουσιαστικά αυτό θέλω να φτιάξω. Το παραπάνω είναι δοκιμαστικό
file_obj.close()


Κατά τ'άλλα, δεν έχω ιδέα τι μπορεί να το κάνει να μην λειτουργεί. Παράξενο... :?
Κύπριος; Κόπιασε στο 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: Τα πάντα για την Python

Δημοσίευσηαπό nikosokin » 20 Νοέμ 2010, 03:34

Έλα το βρήκα... Να σου πω να κουφαθείς.
Φταίγανε τα permissions του txt.
Το έκανα chmod 777 και δούλεψε κανονικά...
Για κάποιο λόγο ο τρόπος που καλούνταν για εκτέλεση η εφαρμογή δεν είχε το δικαίωμα να προσπελάσει το αρχείο.
Στο log file του έγραφε στο τέλος [Errno 13] [Access denied] '/home/olpc/Activities/Kremala.activity/words.txt'
Το θέμα είναι πως εγώ ότι αλλαγές έκανα τις έκανα και σαν root αλλά και σαν user. Σε καμία από τις 2 περιπτώσεις δεν δούλευε.
Αυτό είναι το μόνο παράξενο πλέον. Μάλλον το θέμα θα ήταν, τι ήμουν όταν δημιούργησα το αρχείο γιατί το αρχείο δεν το
δημιούργησε η εφαρμογή αλλά εγώ με "touch words.txt"

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

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

Re: Τα πάντα για την Python

Δημοσίευσηαπό sokoban4ever » 20 Νοέμ 2010, 19:05

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

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

Re: Τα πάντα για την Python

Δημοσίευσηαπό jimmer » 21 Φεβ 2011, 23:01

εχω μια ερωτηση για το geany... όταν κανω καποιο λαθος σε συνταξη συγκεγριμενα, γινεται να το ρυθμίσω ετσι ώστε να κανει highlight το λαθος μου? γιατι ας πουμε σε αυτο:
Κώδικας: Επιλογή όλων
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Filename: while.py
number = 23
running = True
while running:
guess = int(input('Εισάγετε έναν ακέραιο αριθμό : '))
if guess == number:
print('Συγχαρητήρια, τον μαντέψατε.')
running = False # αυτό κάνει τον βρόχο while να σταματήσει εδώ
elif guess < number:
print('Όχι, είναι λίγο μεγαλύτερος.')
else:
print('Όχι, είναι λίγο μικρότερος.')
else:
print('Ο βρόχος while τερματίστηκε.')
που εκανα λαθος στο block του while, ενώ στο IDLE, το υπογραμίζει, στο Geany απλα σου λεει οτι εχεις κανει συντακτικό λάθος στο block while...:S
Γνώσεις ⇛ Linux: Χαμηλό ┃ Προγραμματισμός: python (αρχαριος)┃ Αγγλικά: Kαλά
Λειτουργικό: Ubuntu 10.10
Προδιαγραφές ⇛ Επεξεργαστής Intel Core 2 Duo 3GHZ│ Μνήμη 3GB│ Κάρτα Γραφικών Nvidia GeForce 8400 GS 512mb│Οθόνη & Ανάλυση Acer AL1512/1024x768
Εικόνα
Άβαταρ μέλους
jimmer
babeTUX
babeTUX
 
Δημοσιεύσεις: 13
Εγγραφή: 18 Φεβ 2011, 19:03
Εκτύπωση

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

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι

cron