Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Ναι συμφωνώ ότι είναι θετικό για τον προγραμματιστή να έχει αντικείμενα με έτοιμη λειτουργικότητα. Και εγώ χρησιμοποιώ π.χ. το ADO, αλλά πρέπει κάποιος πρώτα να έχει μια σχέση με τα γραφικά. Μπορεί βέβαια να την αποκτήσει μετά! Αλλά μια πρόταση είναι να μπορεί να χρησιμοποιεί τα βασικά και όπου θέλει το σύνθετο να το ζητάει, και όχι να γνωρίζει το σύνθετο και να πνίγεται στα βασικά!

 

Μια ερώτηση: αν θέλω να παράγω το γραφικό με το  ωραίο αντικείμενο (είδα screenshots), χωρίς να τα δείξω άμεσα, αλλά να δώσω χώρο για rendering και να αποφασίσω μετά που θα το βγάλω, π.χ. σε εκτυπωτή, ή φόντο παραθύρου, ή να την κάνω αρχείο, μπορώ; Και σε τι θα μου το δώσει η βιβλιοθήκη; Δουλεύει με DIB, με τι; Αν είναι να πάρω την επιστροφή σε αρχείο τότε δεν μου κάνει. Δηλαδή θέλω να έχω επιστροφή μέσα στην εφαρμογή!

 

23728033.jpg

  • Like 1
  • Απαντ. 101
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Δημοσ.

Λέω απλά αν το αντικείμενο γυρνάει την έξοδό του για άλλη επεξεργασία. Δηλαδή αν γυρνάει κάποιο Bitmap...

Δημοσ.

Το 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 
Δημοσ.

Ναι συμφωνώ ότι είναι θετικό για τον προγραμματιστή να έχει αντικείμενα με έτοιμη λειτουργικότητα. Και εγώ χρησιμοποιώ π.χ. το ADO, αλλά πρέπει κάποιος πρώτα να έχει μια σχέση με τα γραφικά. Μπορεί βέβαια να την αποκτήσει μετά! Αλλά μια πρόταση είναι να μπορεί να χρησιμοποιεί τα βασικά και όπου θέλει το σύνθετο να το ζητάει, και όχι να γνωρίζει το σύνθετο και να πνίγεται στα βασικά!

 

Μια ερώτηση: αν θέλω να παράγω το γραφικό με το  ωραίο αντικείμενο (είδα screenshots), χωρίς να τα δείξω άμεσα, αλλά να δώσω χώρο για rendering και να αποφασίσω μετά που θα το βγάλω, π.χ. σε εκτυπωτή, ή φόντο παραθύρου, ή να την κάνω αρχείο, μπορώ; Και σε τι θα μου το δώσει η βιβλιοθήκη; Δουλεύει με DIB, με τι; Αν είναι να πάρω την επιστροφή σε αρχείο τότε δεν μου κάνει. Δηλαδή θέλω να έχω επιστροφή μέσα στην εφαρμογή!

Βασικά δεν καταλαβαίνω ακριβώς τι ενοείς ούτε ξέρω τι είναι DIB. Εάν έχεις python κάνε ένα plot να δείς και μόνος σου δείχνω εγώ από την δική μου οθόνη

>>> import matplotlib.pyplot as plt
>>> a=[3,4,5]
>>> b=plt.plot(a)
>>> type( B)
<class 'list'>
>>> dir( B)
['__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( B) μπορείς να το κάνεις και copy όπως βλεπεις.
Η διεύθυνση στη μνήμη είναι  0x00000253326B4518
H εικόνα τέλος σώζεται ως .png
 
Τώρα δεν ξέρω αν με ρωτάς πότε θα εκτελέσεις τον κώδικα για να γίνει το .show() 
Βάλτο στον κώδικά σου να γίνει όποτε θέλεις με κουμπί με ημερομηνία με event δεν νομίζω ότι έχει σημασία
Δεν ξέρω αν σε κάλυψα 
ωχ το β) το βγάζει φατσούλα και δεν έχει και r'(b)'
 
Δημοσ.

To DIB είναι αυτό που δουλεύει εδώ και χρόνια στα Windows. Όταν κάνεις αντιγραφή στο πρόχειρο η εικόνα γίνεται DIB...

 

https://msdn.microsoft.com/en-us/library/windows/desktop/dd183562(v=vs.85).aspx

 

Με κάλυψες...Η εξαγωγή γίνεται ΜΟΝΟ σε αρχείο!

Δημοσ.
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
Δημοσ.

Τώρα είναι ωραία η συζήτηση! Να βλέπεις να παράγεται κάτι. Ορίστε λύθηκε ένα θέμα!

Δημοσ.

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 από το πλοτ και να το φέρεις σε αυτή τη μορφή
Δημοσ.

k33theod....

 

 

Σου λείπουν βασικές γνώσεις από python. Σου προτείνω διάβασμα στους τύπους δεδομένων της python καθώς και στο τι είναι τα magic methods.

Δημοσ.

Ναι ως τώρα έχω ασχοληθεί με τα βασικά.  Λίγο απ' όλα να έχω γενική ιδέα.  Και λίγο παραπάνω με tkinter και tkinter.canvas  Όποτε κολλάω ξαναγυρνάω και κοιτάω τα datatypes. Με τα special methods (magic) χρειάστικα μόνο το __init__  και το  __str__ ως στιγμής. 

Δημοσ.

Πρόταση: Στην επόμενη "σημαντική αναθεώρηση" μπορείς να μετονομάσεις τη γλώσσα από M2000 σε Μ2 ή ακόμα καλύτερα MI2.

Δημοσ.

Ναι ως τώρα έχω ασχοληθεί με τα βασικά.  Λίγο απ' όλα να έχω γενική ιδέα.  Και λίγο παραπάνω με tkinter και tkinter.canvas  Όποτε κολλάω ξαναγυρνάω και κοιτάω τα datatypes. Με τα special methods (magic) χρειάστικα μόνο το __init__  και το  __str__ ως στιγμής.

Εάν χρειάστηκες το __str__ τότε θα *πρέπει* να κάνεις implement και το __repr__. Chances are ότι θα το χρειαστείς άμεσα ;)

 

Όσο για τα άλλα, προτείνω ισχυρά διάβασμα πάνω στους τύπους δεδομένων, και όχι μόνο, της Python. Σημαντικά σημεία για διάβασμα:

 

- Callables

- Generators

- Mutables

- Objects

Δημοσ.

Το όνομα είναι από το 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$,Α)

Δημοσ.

 

 

Υ.Γ. Με την γνώση από το πρώτο, 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 είναι αυτός ο κώδικας;

Δημοσ.

Άσε τις πονηριές Groot, κατάλαβες ότι απάντησα στον DR. Fuzzy.

 

Μπορείς να εξηγήσεις αφού ξεκίνησες τι σημαίνει Dispatch στα μηνύματα;

 

Και το παρακάτω είναι Μ2000:

 

 

Class Joe {
      X=10
      Function Xsqr {=.X**2}
}

Joe=Joe()
Print Joe.Xsqr() \\ 100
Joe.X=2
Print Joe.Xsqr() \\ 4

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...