iceblade Δημοσ. 16 Μαρτίου 2016 Δημοσ. 16 Μαρτίου 2016 Ναι συμφωνώ ότι είναι θετικό για τον προγραμματιστή να έχει αντικείμενα με έτοιμη λειτουργικότητα. Και εγώ χρησιμοποιώ π.χ. το ADO, αλλά πρέπει κάποιος πρώτα να έχει μια σχέση με τα γραφικά. Μπορεί βέβαια να την αποκτήσει μετά! Αλλά μια πρόταση είναι να μπορεί να χρησιμοποιεί τα βασικά και όπου θέλει το σύνθετο να το ζητάει, και όχι να γνωρίζει το σύνθετο και να πνίγεται στα βασικά! Μια ερώτηση: αν θέλω να παράγω το γραφικό με το ωραίο αντικείμενο (είδα screenshots), χωρίς να τα δείξω άμεσα, αλλά να δώσω χώρο για rendering και να αποφασίσω μετά που θα το βγάλω, π.χ. σε εκτυπωτή, ή φόντο παραθύρου, ή να την κάνω αρχείο, μπορώ; Και σε τι θα μου το δώσει η βιβλιοθήκη; Δουλεύει με DIB, με τι; Αν είναι να πάρω την επιστροφή σε αρχείο τότε δεν μου κάνει. Δηλαδή θέλω να έχω επιστροφή μέσα στην εφαρμογή! 1
M2000 Δημοσ. 17 Μαρτίου 2016 Δημοσ. 17 Μαρτίου 2016 Λέω απλά αν το αντικείμενο γυρνάει την έξοδό του για άλλη επεξεργασία. Δηλαδή αν γυρνάει κάποιο Bitmap...
groot Δημοσ. 17 Μαρτίου 2016 Δημοσ. 17 Μαρτίου 2016 Το numpy δεν είναι υποχρεωτικό αλλά και χωρίς αυτό δεν μπορώ. Πως αλλιώς να πάρω χ τιμές μεταξύ α και β το range δεν δουλεύει γιατί έχει δικό του τύπο (range) και 2ο δέχεται μόνο ακεραίους. Πρέπει να κάνεις πίνακα να διαιρέσεις με το χ να κάνεις τα στοιχεία εισαγωγή στον πίνακα και τρέχα γύρευε. Επίσης στις τριγωνομετρικές το math.cos() στη επιστροφή της συνάρτησης δεν λειτουργεί θέλει το np.cos(). Το θέμα με τους δεκαδικούς και το range είναι αρκετά εύκολο να το λύσεις... ένα απλό google και θα πέσεις σε πολλές ερωτήσεις στο so για αυτό το λόγο. Παρόλα αυτά, με αυτά που λες δείχνεις ότι δεν έχεις καταλάβει ακριβώς τους generators (το range είναι "σχεδόν" τέτοιο). Θα σου πρότεινα να το διαβάσεις τους γιατί είναι αρκετά καλό optimization θέμα σε python. Επίσης, πίνακα (array) σε python χωρίς import δεν κάνεις (εάν θυμάμαι καλά). Για να πάρεις κατευθείαν στοιχεία από range (εάν δεν τα θέλεις σε iteration) μια χαρά δουλεύει το: a = list(range(10)) Το γιατί δουλεύει είναι θέμα generators που σου είπα. Εάν χρησιμοποιείς το range κατά αυτό τον τρόπο, κάτι κάνεις λάθος... κατά 90% θα έλεγα ότι δεν σκέφτεσαι με pythonic τρόπο. Τέλος, τι εννοείς δεν δουλεύει το math.cos(); Μια χαρά δουλεύει! Υ.Γ. Η δύναμη του numpy είναι στο optimization που κάνει για γρήγορη προσπέλαση μεγάλων σειρών από αριθμούς (λόγω c modules), στο integration που έχει με theano και TensorFlow και στα strides (plus το integration σε όλα τα πακέτα που κάνει support το enthought community/organization). Όχι όμως όλα αυτά που αναφέρεις! Εν γένει, είναι μάλλον άσκοπη η τοποθέτηση αλλά anyway, duty calls Μεταξύ άλλων, γιατί η Python θέλει να είναι cross platform. Εάν απαντάς σε εμένα... έχω να σου προτείνω: from skills.detection import irony
k33theod Δημοσ. 17 Μαρτίου 2016 Μέλος Δημοσ. 17 Μαρτίου 2016 Ναι συμφωνώ ότι είναι θετικό για τον προγραμματιστή να έχει αντικείμενα με έτοιμη λειτουργικότητα. Και εγώ χρησιμοποιώ π.χ. το ADO, αλλά πρέπει κάποιος πρώτα να έχει μια σχέση με τα γραφικά. Μπορεί βέβαια να την αποκτήσει μετά! Αλλά μια πρόταση είναι να μπορεί να χρησιμοποιεί τα βασικά και όπου θέλει το σύνθετο να το ζητάει, και όχι να γνωρίζει το σύνθετο και να πνίγεται στα βασικά! Μια ερώτηση: αν θέλω να παράγω το γραφικό με το ωραίο αντικείμενο (είδα screenshots), χωρίς να τα δείξω άμεσα, αλλά να δώσω χώρο για rendering και να αποφασίσω μετά που θα το βγάλω, π.χ. σε εκτυπωτή, ή φόντο παραθύρου, ή να την κάνω αρχείο, μπορώ; Και σε τι θα μου το δώσει η βιβλιοθήκη; Δουλεύει με DIB, με τι; Αν είναι να πάρω την επιστροφή σε αρχείο τότε δεν μου κάνει. Δηλαδή θέλω να έχω επιστροφή μέσα στην εφαρμογή! Βασικά δεν καταλαβαίνω ακριβώς τι ενοείς ούτε ξέρω τι είναι DIB. Εάν έχεις python κάνε ένα plot να δείς και μόνος σου δείχνω εγώ από την δική μου οθόνη >>> import matplotlib.pyplot as plt >>> a=[3,4,5] >>> b=plt.plot(a) >>> type( <class 'list'> >>> dir( ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'] >>> b [<matplotlib.lines.Line2D object at 0x00000253326B4518>] Αυτά σημαίνουν τα εξής: το b (που είναι το plot)είναι ένα object(αντικείμενο της υποκλάσσης Line2D ο τύπος του είναι λίστα οι μέθοδοι του είναι αυτές που έχει η dir( μπορείς να το κάνεις και copy όπως βλεπεις. Η διεύθυνση στη μνήμη είναι 0x00000253326B4518 H εικόνα τέλος σώζεται ως .png Τώρα δεν ξέρω αν με ρωτάς πότε θα εκτελέσεις τον κώδικα για να γίνει το .show() Βάλτο στον κώδικά σου να γίνει όποτε θέλεις με κουμπί με ημερομηνία με event δεν νομίζω ότι έχει σημασία Δεν ξέρω αν σε κάλυψα ωχ το β) το βγάζει φατσούλα και δεν έχει και r'(b)'
M2000 Δημοσ. 17 Μαρτίου 2016 Δημοσ. 17 Μαρτίου 2016 To DIB είναι αυτό που δουλεύει εδώ και χρόνια στα Windows. Όταν κάνεις αντιγραφή στο πρόχειρο η εικόνα γίνεται DIB... https://msdn.microsoft.com/en-us/library/windows/desktop/dd183562(v=vs.85).aspx Με κάλυψες...Η εξαγωγή γίνεται ΜΟΝΟ σε αρχείο!
k33theod Δημοσ. 17 Μαρτίου 2016 Μέλος Δημοσ. 17 Μαρτίου 2016 grootΤέλος, τι εννοείς δεν δουλεύει το math.cos(); Μια χαρά δουλεύει! Μου πετάει TypeError: only length-1 arrays can be converted to Python scalars και η εξήγηση που βρήκα Non-numpy functions like math.abs() or math.log10() don't play nicely with numpy arrays. Just replace the line raising an error with: m = np.log10(np.abs(x)) AAA οκ έχεις δίκιο είναι επειδή έχω και το χ numpy
M2000 Δημοσ. 17 Μαρτίου 2016 Δημοσ. 17 Μαρτίου 2016 Τώρα είναι ωραία η συζήτηση! Να βλέπεις να παράγεται κάτι. Ορίστε λύθηκε ένα θέμα!
k33theod Δημοσ. 17 Μαρτίου 2016 Μέλος Δημοσ. 17 Μαρτίου 2016 To DIB είναι αυτό που δουλεύει εδώ και χρόνια στα Windows. Όταν κάνεις αντιγραφή στο πρόχειρο η εικόνα γίνεται DIB... https://msdn.microsoft.com/en-us/library/windows/desktop/dd183562(v=vs.85).aspx Με κάλυψες...Η εξαγωγή γίνεται ΜΟΝΟ σε αρχείο! Ίσως επειδή είναι για όλα τα συστήματα και όχι μόνο για windows αν καταλάβα θέλεις να πάρεις ένα πίνακα με rgb ή rgba σημεία αυτό το κάνει στα png δες λίγο >>> import matplotlib.image as mpimg >>> img=mpimg.imread('stinkbug.png') >>> img array([[[ 0.40784314, 0.40784314, 0.40784314], [ 0.40784314, 0.40784314, 0.40784314], [ 0.40784314, 0.40784314, 0.40784314], ..., [ 0.42745098, 0.42745098, 0.42745098], [ 0.42745098, 0.42745098, 0.42745098], [ 0.42745098, 0.42745098, 0.42745098]], [[ 0.41176471, 0.41176471, 0.41176471], [ 0.41176471, 0.41176471, 0.41176471], [ 0.41176471, 0.41176471, 0.41176471], ..., [ 0.42745098, 0.42745098, 0.42745098], [ 0.42745098, 0.42745098, 0.42745098], [ 0.42745098, 0.42745098, 0.42745098]], [[ 0.41960785, 0.41960785, 0.41960785], [ 0.41568628, 0.41568628, 0.41568628], [ 0.41568628, 0.41568628, 0.41568628], ..., [ 0.43137255, 0.43137255, 0.43137255], [ 0.43137255, 0.43137255, 0.43137255], [ 0.43137255, 0.43137255, 0.43137255]], ..., [[ 0.43921569, 0.43921569, 0.43921569], [ 0.43529412, 0.43529412, 0.43529412], [ 0.43137255, 0.43137255, 0.43137255], ..., [ 0.45490196, 0.45490196, 0.45490196], [ 0.4509804 , 0.4509804 , 0.4509804 ], [ 0.4509804 , 0.4509804 , 0.4509804 ]], [[ 0.44313726, 0.44313726, 0.44313726], [ 0.44313726, 0.44313726, 0.44313726], [ 0.43921569, 0.43921569, 0.43921569], ..., [ 0.4509804 , 0.4509804 , 0.4509804 ], [ 0.44705883, 0.44705883, 0.44705883], [ 0.44705883, 0.44705883, 0.44705883]], [[ 0.44313726, 0.44313726, 0.44313726], [ 0.4509804 , 0.4509804 , 0.4509804 ], [ 0.4509804 , 0.4509804 , 0.4509804 ], ..., [ 0.44705883, 0.44705883, 0.44705883], [ 0.44705883, 0.44705883, 0.44705883], [ 0.44313726, 0.44313726, 0.44313726]]], dtype=float32) >>> έτσι μπορείς να πάρεις το img από το πλοτ και να το φέρεις σε αυτή τη μορφή
groot Δημοσ. 17 Μαρτίου 2016 Δημοσ. 17 Μαρτίου 2016 k33theod.... Σου λείπουν βασικές γνώσεις από python. Σου προτείνω διάβασμα στους τύπους δεδομένων της python καθώς και στο τι είναι τα magic methods.
k33theod Δημοσ. 17 Μαρτίου 2016 Μέλος Δημοσ. 17 Μαρτίου 2016 Ναι ως τώρα έχω ασχοληθεί με τα βασικά. Λίγο απ' όλα να έχω γενική ιδέα. Και λίγο παραπάνω με tkinter και tkinter.canvas Όποτε κολλάω ξαναγυρνάω και κοιτάω τα datatypes. Με τα special methods (magic) χρειάστικα μόνο το __init__ και το __str__ ως στιγμής.
Dr.Fuzzy Δημοσ. 17 Μαρτίου 2016 Δημοσ. 17 Μαρτίου 2016 Πρόταση: Στην επόμενη "σημαντική αναθεώρηση" μπορείς να μετονομάσεις τη γλώσσα από M2000 σε Μ2 ή ακόμα καλύτερα MI2.
groot Δημοσ. 17 Μαρτίου 2016 Δημοσ. 17 Μαρτίου 2016 Ναι ως τώρα έχω ασχοληθεί με τα βασικά. Λίγο απ' όλα να έχω γενική ιδέα. Και λίγο παραπάνω με tkinter και tkinter.canvas Όποτε κολλάω ξαναγυρνάω και κοιτάω τα datatypes. Με τα special methods (magic) χρειάστικα μόνο το __init__ και το __str__ ως στιγμής. Εάν χρειάστηκες το __str__ τότε θα *πρέπει* να κάνεις implement και το __repr__. Chances are ότι θα το χρειαστείς άμεσα Όσο για τα άλλα, προτείνω ισχυρά διάβασμα πάνω στους τύπους δεδομένων, και όχι μόνο, της Python. Σημαντικά σημεία για διάβασμα: - Callables - Generators - Mutables - Objects
M2000 Δημοσ. 17 Μαρτίου 2016 Δημοσ. 17 Μαρτίου 2016 Το όνομα είναι από το 1999! Μόλις τελειώσω με τις προσθήκες στοιχείων ελέγχου. θα αλλάξω έκδοση σε 9. Αλλά το όνομα της γλώσσας είναι Μαθητής 2000. που σημαίνει ότι απευθύνεται κυρίως σε μαθητές και το 2000 λέει για τη χιλιετία και όχι τη χρονιά. Προσπαθώ να την κάνω όσο περισσότερο ολοκληρωμένη γίνεται παρά να έχω ένα βασικό κομμάτι και ότι άλλο να το αφήσω να γίνει με εξωτερικό dll. Όμως αν θέλει κανείς μπορεί από τη Μ2000 να κάνει C Calls σε dll. mybuf$=επαν$(χαρ$(0), 1000)\\ Αν ορίσουμε συνάρτηση με το C πριν, τότε λέμε ότι είναι κλήση τύπου C\\ το σύμβολο ... δηλώνει λίστα παραμέτρων. Ισχύει μόνο για το τελευταίο στοιχείο.\\ μόνο Unicode κλήσεις για C.Όρισε MyPrint Από C "msvcrt.swprintf" { &sBuf$, sFmt$, ... }\\ το σύμβολο ! πριν από μια αριθμητική έκφραση για παράμετρο...\\........λέει στον διερμηνευτή ότι θα καταχωρηθεί ως Μακρύς ή Long.Α=MyPrint(&myBuf$, "Γειά P1=%s, P2=%d, P3=%.4f, P4=%s", "ABC", !123456, 1.23456, "xyz")Τύπωσε Αρισ$(myBuf$,Α)
groot Δημοσ. 17 Μαρτίου 2016 Δημοσ. 17 Μαρτίου 2016 Υ.Γ. Με την γνώση από το πρώτο, i.e. callables, κάνεις χωρίς, ή ελάχιστο, κόπο ένα-δύο design patterns. Π.χ. def dispatch_message(the_message): pass def handle_message(the_message): pass actions = { 'dispatch': dispatch_message, 'handle': handle_message } class Message(Object): pass message = Message() actions['dispatch'](message) mybuf$=επαν$(χαρ$(0), 1000) \\ Αν ορίσουμε συνάρτηση με το C πριν, τότε λέμε ότι είναι κλήση τύπου C \\ το σύμβολο ... δηλώνει λίστα παραμέτρων. Ισχύει μόνο για το τελευταίο στοιχείο. \\ μόνο Unicode κλήσεις για C. Όρισε MyPrint Από C "msvcrt.swprintf" { &sBuf$, sFmt$, ... } \\ το σύμβολο ! πριν από μια αριθμητική έκφραση για παράμετρο... \\........λέει στον διερμηνευτή ότι θα καταχωρηθεί ως Μακρύς ή Long. Α=MyPrint(&myBuf$, "Γειά P1=%s, P2=%d, P3=%.4f, P4=%s", "ABC", !123456, 1.23456, "xyz") Τύπωσε Αρισ$(myBuf$,Α) Σε τι έκδοση python είναι αυτός ο κώδικας;
M2000 Δημοσ. 17 Μαρτίου 2016 Δημοσ. 17 Μαρτίου 2016 Άσε τις πονηριές Groot, κατάλαβες ότι απάντησα στον DR. Fuzzy. Μπορείς να εξηγήσεις αφού ξεκίνησες τι σημαίνει Dispatch στα μηνύματα; Και το παρακάτω είναι Μ2000: Class Joe { X=10 Function Xsqr {=.X**2}} Joe=Joe()Print Joe.Xsqr() \\ 100Joe.X=2Print Joe.Xsqr() \\ 4
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα