Μάθημα 0 - Εισαγωγή

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

Re: Μάθημα 0 - Εισαγωγή

Δημοσίευσηαπό medigeek » 19 Οκτ 2010, 20:27

MakisM1 έγραψε:Εκτος αν θελουμε να γραψουμε καποιο προγραμμα συμβατο με Κινεζικα?

Ήθελα να κρατήσω τα προβλήματα μεταξύ python 2.x και python 3.x στο ελάχιστο.

Κάποιος το σύστησε (νομίζω ο simosx αλλά μπορεί και να κάνω λάθος) και το θεώρησα καλή πράξη. Κι αν θυμαμαι καλά, το python 2.x δεν είχε καλή υποστήριξη unicode/utf-8. Γι' αυτό προτίμησα να το αναφέρω και να το χρησιμοποιούν. Ο οδηγός βασίστηκε στο python 3.χ, αλλά ήθελα ο κώδικας που γράφεται να υποστηρίζεται και από python 2.x, χωρίς να εμφανιστούν προβλήματα για το encoding.
Το PEP στο οποίο αναφέρεται το πρόβλημα είναι εδώ: http://www.python.org/dev/peps/pep-0263/

Phases

Implementation of steps 1 and 2 above were completed in 2.3,
except for changing the default encoding to "ascii".

The default encoding was set to "ascii" in version 2.5.


Παράδειγμα (moo.py):
Κώδικας: Επιλογή όλων
#!/usr/bin/python
print('Γειά σου κόσμε!')


$ python -V
Python 2.6.6

$ chmod +x moo.py
$ ./moo.py
File "moo.py", line 2
SyntaxError: Non-ASCII character '\xce' in file moo.py on line 2, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details


Παράδειγμα python3 (moo2.py):
Κώδικας: Επιλογή όλων
#!/usr/bin/python3
print('Γειά σου κόσμε!')


$ python3 -V
Python 3.1.2
$ chmod +x moo2.py
$ ./moo2.py
Γειά σου κόσμε!
Κύπριος; Κόπιασε στο 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: Μάθημα 0 - Εισαγωγή

Δημοσίευσηαπό MakisM1 » 19 Οκτ 2010, 20:59

Ευτυχως στην 2.6 που ερχεται με την 10.04 δεν συμβαινει...

Κώδικας: Επιλογή όλων
Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56)
[GCC 4.4.3] on linux2
Type "copyright", "credits" or "license()" for more information.

    ****************************************************************
    Personal firewall software may warn about the connection IDLE
    makes to its subprocess using this computer's internal loopback
    interface.  This connection is not visible on any external
    interface and no data is sent to or received from the Internet.
    ****************************************************************
   
IDLE 2.6.5      ==== No Subprocess ====
>>> print ("Γεια σου κοσμε")
Γεια σου κοσμε
>>>


Προοδευουμε! :thumbup: Ειδα στην παραπομπη σου, οτι τωρα εχουμε 2 magic comment lines!

Ευχαριστω για την απαντηση, στο θεμα β) περι security, αν βαλουμε στο $PATH ενα φακελο του /home, υπαρχει θεμα, η τα εχω μπερδεψει εγω;
Γνώσεις ⇛ Linux: Χαμηλο ┃ Προγραμματισμός: Όχι ┃ Αγγλικά: Καλά
Λειτουργικό: Ubuntu 22.04.2 (English) σε HP Pavillion TG01 | Eγκατασταση αναβαθμισμενη απο 20.04
Προδιαγραφές ⇛ Intel i5-1040F @ 2.9 GHz Comet Lake│ RAM 16GB │Καρτα γραφικων: nVidia GTX 1650 Μητρικη: HP 8767
WiFi: rtw_8821ce │ Bluetooth: Not used │ Κάρτα Ήχου: Intel Corporation Comet Lake PCH cAVS│ Αναλυση Οθονης: 3840Χ2160 │ Webcam Logitech C210 USB
Οδηγος για νεοεισερχομενους: http://forum.ubuntu-gr.org/viewtopic.php?f=2&t=279
Άβαταρ μέλους
MakisM1
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 2804
Εγγραφή: 01 Ιούλ 2009, 11:29
Τοποθεσία: Houston, TX
Εκτύπωση

Re: Μάθημα 0 - Εισαγωγή

Δημοσίευσηαπό medigeek » 19 Οκτ 2010, 21:22

MakisM1 έγραψε:β) Το περιφημο PATH...
[...]
Αν ανοιξουμε ενα μονοπατι για εντολες στο /home δεν καταστρατηγουμε βασικη αρχη security στο Linux?
Δηλαδη οτι εντολες μπορουν να εκτελεσθουν χωρις να εισαι root?


Δεν έχω καταλάβει ακριβώς το ερώτημα, αλλά θα απαντήσω με αυτά που ξέρω:
Το PATH στην περίπτωση του χρήστη midkin που μπηκε στο αρχειο .bashrc είναι local variable, είναι μόνο για το χρήστη που τη θέτει.
Αν θες να το αλλάξεις για όλους τους χρήστες, αλλάζεις το PATH στο αρχείο /etc/environment

Εγώ το θεωρώ ευελιξία προγραμματισμού -- με ένα φακελο στο PATH μπορείς να εκτελείς εντολές χωρίς να ορίσεις το φάκελο στον οποίο βρίσκονται.

Θέτοντας το PATH, δε δίνεις προνόμια administrator στον χρήστη να αλλάζει αρχεία. Εκτελείς την εντολή σαν απλός χρήστης, εκτός κι αν δώσεις sudo ή αν είσαι root.

Δηλαδή: "mycommand.py" δεν είναι το ίδιο με το "sudo mycommand.py"
Κύπριος; Κόπιασε στο 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: Μάθημα 0 - Εισαγωγή

Δημοσίευσηαπό medigeek » 19 Οκτ 2010, 21:24

MakisM1 έγραψε:Ευτυχως στην 2.6 που ερχεται με την 10.04 δεν συμβαινει...

Άλλο το idle IDE του python κι άλλο το τερματικό. :)
Δοκίμασε να εκτελέσεις την εντολή από το Terminal / τερματικό / κονσόλα.
Κύπριος; Κόπιασε στο 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: Μάθημα 0 - Εισαγωγή

Δημοσίευσηαπό MakisM1 » 19 Οκτ 2010, 21:54

Κώδικας: Επιλογή όλων
#!/usr/bin/python
# -*- coding: utf-8 -*-
import time
print ("Hello World!")
print ("Χαιρε Κοσμε!")
time.sleep(10)

===>
Hello World!
Χαιρε Κοσμε!


Δουλεψε!

Νομιζω το προβλημα ηταν πισω στην Python 2.1... Οχι πως ειναι τιποτα σημαντικο...Τελος παντων, αυτα για το Μαθημα 0 :wave:

Παω στο Μαθημα 1! :geek:

Φιλικα

ΜακηςΜ

Εdit: Μαλλον δεν δουλεψε, ξεχασα να αφαιρεσω την δευτερη γραμμη...
Τελευταία επεξεργασία από MakisM1 και 19 Οκτ 2010, 22:05, έχει επεξεργασθεί 2 φορά/ες συνολικά
Γνώσεις ⇛ Linux: Χαμηλο ┃ Προγραμματισμός: Όχι ┃ Αγγλικά: Καλά
Λειτουργικό: Ubuntu 22.04.2 (English) σε HP Pavillion TG01 | Eγκατασταση αναβαθμισμενη απο 20.04
Προδιαγραφές ⇛ Intel i5-1040F @ 2.9 GHz Comet Lake│ RAM 16GB │Καρτα γραφικων: nVidia GTX 1650 Μητρικη: HP 8767
WiFi: rtw_8821ce │ Bluetooth: Not used │ Κάρτα Ήχου: Intel Corporation Comet Lake PCH cAVS│ Αναλυση Οθονης: 3840Χ2160 │ Webcam Logitech C210 USB
Οδηγος για νεοεισερχομενους: http://forum.ubuntu-gr.org/viewtopic.php?f=2&t=279
Άβαταρ μέλους
MakisM1
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 2804
Εγγραφή: 01 Ιούλ 2009, 11:29
Τοποθεσία: Houston, TX
Εκτύπωση

Re: Μάθημα 0 - Εισαγωγή

Δημοσίευσηαπό medigeek » 19 Οκτ 2010, 22:00

MakisM1 έγραψε:Νομιζω το προβλημα ηταν πισω στην Python 2.1...


Δούλεψε επειδή χρησιμοποίησες το "# -*- coding: utf-8 -*-". Δοκίμασε χωρίς:
Κώδικας: Επιλογή όλων
#!/usr/bin/python
import time
print ("Hello World!")
print ("Χαιρε Κοσμε!")
time.sleep(10)


Με τη γραμμή "# -*- coding: utf-8 -*-" δουλεύει ανεξάρτητα αν είναι python3 ή python2.
Χωρίς το "# -*- coding: utf-8 -*-" θα δουλέψει σωστά μόνο σε python3, αλλά όχι σε python2.
Κύπριος; Κόπιασε στο 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: Μάθημα 0 - Εισαγωγή

Δημοσίευσηαπό MakisM1 » 19 Οκτ 2010, 22:07

Ναι, ναι... το βρηκα! Αλλα μεχρι να κανω edit το προηγουμενο ποστ μου, εγραψες!

Ευχαριστω!
Γνώσεις ⇛ Linux: Χαμηλο ┃ Προγραμματισμός: Όχι ┃ Αγγλικά: Καλά
Λειτουργικό: Ubuntu 22.04.2 (English) σε HP Pavillion TG01 | Eγκατασταση αναβαθμισμενη απο 20.04
Προδιαγραφές ⇛ Intel i5-1040F @ 2.9 GHz Comet Lake│ RAM 16GB │Καρτα γραφικων: nVidia GTX 1650 Μητρικη: HP 8767
WiFi: rtw_8821ce │ Bluetooth: Not used │ Κάρτα Ήχου: Intel Corporation Comet Lake PCH cAVS│ Αναλυση Οθονης: 3840Χ2160 │ Webcam Logitech C210 USB
Οδηγος για νεοεισερχομενους: http://forum.ubuntu-gr.org/viewtopic.php?f=2&t=279
Άβαταρ μέλους
MakisM1
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 2804
Εγγραφή: 01 Ιούλ 2009, 11:29
Τοποθεσία: Houston, TX
Εκτύπωση

Re: Μάθημα 0 - Εισαγωγή

Δημοσίευσηαπό sokoban4ever » 20 Οκτ 2010, 02:47

MakisM1
a)
Tο # ( hash ) ξεκινάει μια γραμμή comment κανονικά αλλά το συγκεκριμένο το διαβάζει για να γνωρίζει το encoding
του κώδικά που ακολουθεί (Το ubuntu δεν έχει καμία δουλεία σε αυτό είναι χαρακτηριστικό της python 3K να έχει εξ ορισμού το utf-8 ως encoding και όχι ASCII ή latin )
To γεγονός ότι στην κονσόλα ο intepreter της python 'αντιλαμβάνεται ' τα utf-8 ( και δεν βγάζει error παρόλο που είναι python 2.6 ) γίνεται
ουσιαστικά γιατί διαβάζει το encoding που χρησιμοποιεί το terminal το οποίο είναι το utf-8 και έτσι o interpreter είναι ενημερωμένος για το utf-8

β)
Όχι , Εξαρτάται τις εντολές ...

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

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

Re: Μάθημα 0 - Εισαγωγή

Δημοσίευσηαπό MakisM1 » 20 Οκτ 2010, 09:24

Medigeek, sokoban4ever,

Χαιρομαι αφανταστα που οι καθηγητες ειναι ακομα εδω και προθυμοι να βοηθησουν τον ...σκασιαρχη που ηρθε να παρει τα μαθηματα ενα χρονο αργοτερα!

Παιδια, οφειλω να σας συγχαρω για την καταπληκτικη ποιοτητα της δουλειας που βαλατε, βαζετε (και ελπιζω οτι θα βαζετε, μεχρι να αποφοιτησω...)!

Στα επι μερους σχολια:

α) Η ερωτηση μου γεννηθηκε γιατι εχοντας διαβασει οτι μονο η πρωτη γραμμη ειναι magic line (παρ'ολο που εχει το hash (#) διαβαζεται σαν οδηγια του κωδικα), μας εγινε η συσταση να βαλουμε δευτερη γραμμη με hash και το συστημα θα καταλαβει οτι ειναι οδηγια για τον τυπo encoding.

H αμεση ερωτηση που μου γεννηθηκε ηταν αν θα επρεπε να αφαιρεσω το # για να τρεχει το προγραμμα στην 2.6 και για να ειναι το προγραμμα συμβατο και με τις δυο εκδοσεις. Φυσικα η απαντηση ειναι οχι, το # παραμενει, και αν ειναι οδηγια encoding θα την εκτελεσει, αν ειναι κατι αλλο θα το μεταχειριστει σαν comment.

β) Ο Πυθωνας, της python, τω Πυθωνι..., την python, ω Πυθων! :lol: Ενταξει! Το εμπεδωσαμε κι αυτο! :thumbup:

Για την ιστορια, εξ αναγκης ξεκινησα να μαθω FORTRAN 66 το '78, γιατι με το που πηγα στην Αμερικη σαν research assistant, μου δωσανε 3 κουτες διατρητες καρτελες και μου ειπαν, 'αυτο το προγραμμα δουλευε στον υπολογιστη του ΜΙΤ, κανε το να δουλεψει στον δικο μας'... Στο πρωτο compile εβγαλε ενα κουβα diagnostics και ξεκινησα να μαθω FORTRAN. Το '81, στο Berkeley πια, ειχα αρχισει να προγραμματιζω για το διδακτορικο μου και λογω αλλαγης συστηματος, επρεπε να δουλευω απο το σπιτι. Πηρα λοιπον ενα Commodore 64 και εμαθα την Commodore 64 BASIC σε μια νυχτα...

Με το που τελειωσα το διδακτορικο μου, δεν ξαναγραψα σοβαρο κωδικα. Διαβαζα ομως FORTRAN γιατι ημουν υπευθυνος για ενα προγραμμα τυπου NASTRAN (debugging, verification & development) και επρεπε να καταλαβαινω τι εσπερναν οι προγραμματιστες. :?: :problem:

Αυτο που θελω να πω, ειναι οτι δεν προλαβα την εξελιξη του 'αντικειμενοστραφους προγραμματισμου' (object oriented programming) και με φοβιζει... :shifty:

Θα δουμε.

Ευχαριστω πολυ για τις διευκρινησεις και τις συμβουλες σας. Ελπιζω να εχετε υπομονη!!!... :bow:

Φιλικα

ΜακηςΜ
Γνώσεις ⇛ Linux: Χαμηλο ┃ Προγραμματισμός: Όχι ┃ Αγγλικά: Καλά
Λειτουργικό: Ubuntu 22.04.2 (English) σε HP Pavillion TG01 | Eγκατασταση αναβαθμισμενη απο 20.04
Προδιαγραφές ⇛ Intel i5-1040F @ 2.9 GHz Comet Lake│ RAM 16GB │Καρτα γραφικων: nVidia GTX 1650 Μητρικη: HP 8767
WiFi: rtw_8821ce │ Bluetooth: Not used │ Κάρτα Ήχου: Intel Corporation Comet Lake PCH cAVS│ Αναλυση Οθονης: 3840Χ2160 │ Webcam Logitech C210 USB
Οδηγος για νεοεισερχομενους: http://forum.ubuntu-gr.org/viewtopic.php?f=2&t=279
Άβαταρ μέλους
MakisM1
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 2804
Εγγραφή: 01 Ιούλ 2009, 11:29
Τοποθεσία: Houston, TX
Εκτύπωση

Re: Μάθημα 0 - Εισαγωγή

Δημοσίευσηαπό Dimitris » 20 Οκτ 2010, 11:56

MakisM1 έγραψε:Αυτο που θελω να πω, ειναι οτι δεν προλαβα την εξελιξη του 'αντικειμενοστραφους προγραμματισμου' (object oriented programming) και με φοβιζει...

Μάκη, μπορείς να συνεχίσεις να προγραμματίζεις στην python όπως προγραμμάτιζεις στη FORTRAN, κανείς δε σου το απαγορεύει αυτό. (αυτό κάνω κι εγώ πολλές φορές μιας και προέρχομαι κι εγώ απο fortran). O αντικειμενοστραφής προγραμματισμός είναι απλώς ένας διαφορετικός τρόπος να πεις το ίδιο πράγμα.

Το απλό παράδειγμα που χρησιμοποιώ (από κάπου θα το έκλεψα) για τον αντικειμενοστραφή προγραμματισμό είναι το εξής: άνθρωπος (class), ύψος, βάρος (attributes), αδυνατίζω, παχαίνω (methods).

Δημήτρης = Άνθρωπος(ύψος=1.8, βάρος=85)
Δημήτρης.πάχυνε(5)
Δημήτρης
ύψος=1.8, βάρος=90

Στη Fortran αυτό θα το έκανες ως εξης:
Δημ_ύψος = 1.8
Δημ_βάρος = 85
call πάχυνε(Δημ_ύψος, Δημ_βάρος, 5)

subroutine πάχυνε(ύψος, βάρος, μεταβολή)
βάρος = βάρος + μεταβολή
end

Προς το παρόν απλό, αλλά αν θέλεις να υπολογισεις και το Γιώργο, Κώστα, Νίκο, κλπ τότε με τον αντικειμενοστραφη προγραμματισμό είναι πολύ απλό.
Γιώργος = Άνθρωπος(ύψος=1.75, βάρος=80)
Γιώργος.αδυνάτισε(5)

Μετά η κληρονομικότητα δεν είναι τίποτε άλλο από το να δημιουργήσεις μια νέα class, πχ παιδιά, με τις ίδιες ιδιοτητες των ανθρώπων αλλα επιπλέον και σε ποια τάξη είναι.
class Παιδί(Άνθρωπος):
self.τάξη = 1
κωστάκης = Παιδί(...)

PS. Μπορείς να χρησιμοποιήσεις το fortran κώδικά σου και να το συνδέσεις στην python με το f2py ή άλλες μεθόδους. Aλλα αυτό δε χωράει σε αυτή την απάντηση.
Άβαταρ μέλους
Dimitris
saintTUX
saintTUX
 
Δημοσιεύσεις: 1357
Εγγραφή: 13 Μάιος 2008, 13:57
Τοποθεσία: Θεσσαλονίκη
Εκτύπωση

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

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