εν αρχη ην η python ( μαθαινοντας python)

hellaspc1 | Παρ, 01/04/2013 - 15:05 | 2' | 21

 ειπα να μάθω λίγο προγραμματισμο.  πηρα λοιπον ενα βιβλιαρακι ,   και διαβαζω,  ε, και λεω να κανω ενα πολυ απλο προγρμματακι , ετσι για πλακα.

και επειδη δεν μου δινει αποτελεσμα, ειπα να το τρεξω σε on λαιν εδώ   εχει ολες τις γλωσσες ,
και εβαλα ενα απλο πολαπλασιασμο . ( αφου στις αρχες δεν ετρεχε τοπικα..  )  τελικα έτρεξε  και εβγαλε πια το πολυπόθητο 50 αρικο.

a= 5
b= 10
c= a * b
print c

---
python3.2 '/home/stja45/Desktop/testpython.py'
  File "/home/stja45/Desktop/testpython.py", line 4
    print c
          ^
SyntaxError: invalid syntax
----
χωρις να πειραξω τιποτα, ειπα να το τρεξω σε αλλη εκδοση
python2.7 '/home/stja45/Desktop/testpython.py'
50

και δουλευει ρολοι.
τελικα πως θα ξερω αν προγραμματιζω σε σωστη έκδοση ?  γαιτι αυτο κατάλβα , γιαιτί αν τα μισα τρεχουν σε 3 και αλλα σε 2,  καληνυχτα..


Tags
Δώσε αστέρια!
Σχόλια

Από Python δε γνωρίζω, απλά θα σου πω γενικά τι ισχύει στις γλώσσες προγραμματισμού ....
1. Ή εγκαθιστάς τον μεταγλωττιστή μιας συγκεκριμένης έκδοσης και αγοράζεις το βιβλιαράκι της συγκεκριμένης έκδοσης.
2. Ή το αντίστροφο, πρώτα το βιβλίο και μετά εγκαθιστάς τον αντίστοιχο μεταγλωττιστή.

Είναι αλήθεια ότι η Python, είναι δυνατή και εύκολη γλώσσα, αλλά επειδή είναι καινούργια και ακόμη αναπτύσσεται, αλλάζει συνεχώς ... προφανώς προς το καλύτερο ...!!! (εκτός από τις γλώσσες που αναπτύσσει η Microsoft - βλέπε Visual Basic ...).

Αυτό δεν ισχύει και πάρα πολύ στις C, C++, Java, επειδή οι αλλαγές γίνονται αργά και σε μεγάλα χρονικά διαστήματα, και οι αλλαγές αυτές δύσκολα γίνονται αισθητές .... δηλ οι γλώσσες αυτές παραμένουν σχεδόν ίδιες ....
Σκέψου ότι έμαθα C++ από βιβλίο 10 χρόνων και... και οι αλλαγές με την C++11, είναι ελάχιστες ....

ΥΓ1:
Μη σε πέρνουν από κάτω οι πρώτες δυσκολίες, στον προγραμματισμό, προσπάθησε και θα μπεις σε έναν άλλο κόσμο στην πληροφορική !!!!
ΥΓ2:
Αν κάποιος έχει να διορθώσει τα λεγόμενα για την Python, και πέφτω κάπου έξω, με χαρά θα λάβω τις διορθώσεις αυτές, ως επιμορφωτικές για εμένα !!!!

Ωχ !! Τον online μεταγλωττιστή δεν τον είχα πάρει χαμπάρι ....
Ωραίος είναι !!! Δεν το γνώριζα αυτό το site ......!!!!SurprisedLaughing

δεν με παιρνει απο κατω γαιτί θελω να μαθω, απλα πρεπει να χτισω κομματι κομματι , και σωστά.  για να μπορω να μαθω  και αλλη γλωσσα αργοτερα. Να μαθω πως δουλευει .
ειχα ασχόληθει παλια με κατι fortran και   pascal στη σχολή , αλλα τοτε δεν καταλαβαινα τα  0  + 1  και ελεγα τι @@ ειναι , αλλα τωρα θυμαμε τα if  ... then ... else  ή goto  ...
το κακο ειναι οτι ειναι στα αγγλικα και πρεπει να τα  μεταφρασω πρωτα ( τις λεξεις που δεν ξερω)


Μπήκα στο πανεπηστήμιο το 1990. Τότε υπήρχαν ματά βιας windows 3.11.
Δουλεύαμε σε UNIX δηλ σε μαύρη οθόνη και τότε πίστεψέ με όλα ήταν για μένα 0 και 1.
Χωρίς γραφικά περιβάλλοντα χωρίς τίποτε... μόνο Fortran ...
Ήμουν κι εγώ στη δική σου θέση !!

Στο θέμα μας ....

1. Κάθε γλώσσα έχει ένα σύνολο από δεσμευμένες λέξεις οι οποίες είναι καμιά 50αριά.
Απλά θα τις μάθεις .... μόνο αυτές. Όχι τα τρελά αγγλικά .....
(ΠΡΟΣΟΧΗ: Η απεχθής εντολή goto, δεν χρησιμοποιείται στις "ευγενείς" γλώσσες)

2. Χρησιμοιποιείς τον μεταγλωττιστή που έχεις, και μάλλον παράτα το βιβλιαράκι που έχεις, και δες online οδηγούς για την εκμάθηση της PYTHON, για τη συγκεκριμένη έκδοση του μεταγλωττιστή σου.

3. Αν σε βολεύει, χρησιμοποίησε το βιβλίο που έχεις για να κρατάς μια σειρά στη μελέτη σου, και απλά άλλαξε (με μολύβι !!) μόνο αυτά που έχουν αλλάξει (σύμφωνα με τους online οδηγούς).

4. Θα σου στείλω μετά κάποια links με online οδηγούς για PYTHON.

Καλή συνέχεια !!

το λάθος σου είναι ότι χρησιμοποιείς σύνταξη python2 σε διερμηνευτή python3.
η print τώρα είναι συνάρτηση και απαιτεί παρενθέσεις

τον παραπάνω σύνδεσμο python2 vs python3 εγώ τον είχα γράψει

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

@ lucinos
"τον παραπάνω σύνδεσμο python2 vs python3 εγώ τον είχα γράψει"
Το ξέρω γι'αυτό το συνέστησα .... ελπίζω να μη σε πείραξε που πρότεινα το link χωρίς την άδειά σου!
Ήξερα ότι ασχολείσαι με PYTHON....

@ hellaspc1
Πίσω από κάθε γλώσσα προγραμματισμού, εκτός από το ΠΩΣ θα το συντάξεις (το οποίο είναι θέμα γλώσσας, την οποία PYTHON δεν ξέρω ...), υπάρχει και το ΤΙ θα εκφράσεις δηλαδή τον τρόπο που θα λύσεις ένα πρόβλημα μέσω του υπολογιστή...
Αυτό το τελευταίο λέγεται ΑΛΓΟΡΙΘΜΟΣ.
Αν συνατήσεις δυσκολία σε κάτι τέτοιο μη διστάσεις να ρωτήσεις ... Αν δεν ξέρω εγώ κάποιος άλλος θα σου πει ..
Παράδειγμα απλού αλγόριθμου είναι το άθροισμα 100 πρώτων αριθμών μέσω βρόχου.
Ο αλγόριθμος είναι πάντα ίδιος αλλά μπορεί να εκφραστεί με διαφορετικές γλώσσες το ίδιο πράγμα ...
Καλή συνέχεια ....

Tom1972(παραλίγο να πω tomkat XD), θυμάσαι που μου έλεγες για αλγόριθμους παλιά...
Τελικά ο καθηγητής της Πληροφορικής μου χάρισε ένα βοήθημα Λυκείο γραμμένο απ'τον ίδιο που ασχολείται με αλγόριθμους...
Μήπως κάπως έτσι:
b = 0
for i in range(0, 100):
    b = b + b + 1
print(b)

??????????????
Παρεπιμπτώντως, το σωστό είναι print(c)...
Μην φοβάσαι, είναι απ'τις λίγες αλλάγες που πρέπει να σε απασχολούν...

Ο αλγόριθμος γραμμένος σε αλγοριθμική ψευδογλώσσα (Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον Γ' Λυκείου), αναπτύσσεται ως εξής:
[Έχω παραλήψει τις δηλώσεις μεταβλητών για ευκολία - απλά ο αλγόριθμος ...]

sum <-- 0

ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 100
      sum <-- sum + i
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΓΡΑΨΕ "Το άθροισμα από 1 εως 100 ισούται με: ", sum

Ο ίδιος αλγόριθμος γραμμένος σε C είναι :

sum = 0;

for(i=1; i<=100; i++)
    sum = sum + i;

printf("Το άθροισμα από 1 εως 100 ισούται με: %d", sum);

Σε ότι γλώσσα και να γραφτεί είναι το ίδιο πράγμα ....
Βλέποντας το και σε PYTHON φαίνεται ενδιαφέρον ...

Παρακάτω θα εξηγήσω τη λειτουργία του αλγόριθμου αναλυτικά ....


Εξήγηση του παραπάνω αλγόριθμου

Αρχικά θεωρούμε τη μεταβλητή sum που θα φέρει το άθροισμα των 100 αριθμών, στην οποία βάζουμε αρχική τιμή το 0.

Σε κάποιες γλώσσες η εντολή "sum <-- 0", δεν χρειάζεται διότι εξ'αρχής σε καθολικές μεταβλητές συνήθως δίνεται από τον μεταγλωττιστή αρχική τιμή 0.
Σε άλλες γλώσσες απαιτείται η αρχικοποίηση της μεταβλητής ...

Κατόπιν, χρησιμοποιούμε ένα βρόχο ΓΙΑ (for).

Αρχικά, προσθέτουμε στο περιεχόμενο της sum (που είναι το 0) τον αριθμό 1, και το περιεχόμενο της sum γίνεται: 0+1

Κατόπιν, προσθέτουμε στο περιεχόμενο της sum (που είναι πια το 0+1) τον αριθμό 2, και το περιεχόμενο της sum γίνεται: 0+1+2

Αυτό συνεχίζεται μέσω του βρόχου ΓΙΑ (for), μέχρι να φτάσουμε στο 100, οπότε το άθροισμα sum θα έχει πια την τιμή: 0+1+2+3+...+100

Δε πραγματοποιείται η πρόσθεση από εμάς, αλλά από τον υπολογιστή, διότι ας σκεφτούμε τι θα γινόταν αν η πρόσθεση γινόταν για 10000000000 αριθμούς ...
Οι πράξεις γίνονται από τον επεξεργαστή στο "τσακ μπαμ". Καλά καλά ... πιο γρήγορα ... σε nanosecond (δισεκατομυριοστά του δεπτερολέπτου), αφού μια πράξη πχ μια πρόσθεση την ξεπετά σε δισεκατομυριοστά του δεπτερολέπτου..

Τα παραπάνω είναι ένα παράδειγμα εφαρμογής της προσεταιριστικής ιδιότητας στην πρόσθεση αριθμών .... (Β-Γ Γυμνασίου)

Τώρα πρόσεξα ....

ΠΡΟΣΟΧΗ ΔΕΝ ΞΕΡΩ PYTHON (Δηλ τη σύνταξη... απλά καταλαβαίνω τη λογική .....)

"b = b + b + 1" (εδώ λοίπει το i ... σημαντικό για το βρόχο ... for)
Μήπως με αυτό που γράφεις εννοείς ....
b = b + i
???

Σε αυτή την περίπτωση ξεκινάς από το 1, δηλ
for i in range(1, 100):
Για να μη βάλεις τον επεξεργαστή να κάνει μια παραπάνω πράξη που δε χρειάζεται ... δηλ: 0+0
(έτσι δε θα καθυστερήσεις το "κτήνος" κατά 1 δισεκατομυριοστά του δεπτερολέπτουLaughing)

Απλά κοίτα λίγο το αλγόριθμο ξανά και πες μου...

@ lucinos

Moυ έκανε εντύπωση το γεγονός ότι η Python χρησιμοποιεί συναρτήσεις με ορίσματα
print(b)
και όχι απλά εντολές με διακόπτες
print b
Αυτό αποδεικνύει ότι η Python προχωρά και αλλάζει προς το καλύτερο ....

Αυτό ισχύει και στη C, όπου η χρήση συναρτήσεων την κάνει πιο ευέλικτη από ότι η χρήση εντολών....

Στο for i in range δεν μετράμε τον τελευταίο αριθμό, δηλαδή το 100, οπότε με αρχή 1, θα έπρεπε να είναι 101!!! Έπειτα το i μπορούμε να το βάλουμε, μπορούμε και όχι, π.χ.:
b = 0
for i in range(1, 101):
    b = b + i
print(b)
Δεν το είχα σκεφτεί στην αρχή, αλλά ναι...
Βασικά υπάρχουν χιλιάδες τρόποι για να γίνει, απλώς κάποιοι είναι πιο πρακτική απ'τους άλλους... ;)

tom1972]@ lucinos

Moυ έκανε εντύπωση το γεγονός ότι η Python χρησιμοποιεί συναρτήσεις με ορίσματα
print(b)
και όχι απλά εντολές με διακόπτες
print b
Αυτό αποδεικνύει ότι η Python προχωρά και αλλάζει προς το καλύτερο ....

Αυτό ισχύει και στη C, όπου η χρήση συναρτήσεων την κάνει πιο ευέλικτη από ότι η χρήση εντολών....


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

Για τα όρια:
"range(0, 100)" δεν γνώριζα....
OK, πάω πάσσο, αφού είναι θέμα σύνταξης την οποία δεν γνωρίζω ...

Η χρήση συναρτήσεων, σημαίνει χρήση τμηματικού προγραμματισμού, αφού η συνάρτηση είναι στη C ένα υποπρόγραμμα ....
Αυτό σημαίνει ότι αν δημιουργήσει κανείς ένα σωρό συναρτήσεις, μπορεί να τις χρησιμοποιήσει και για άλλα προγράμματα.... Δηλαδή υπάρχει το θέμα της μεταφερσιμότητας κώδικα ...
Γι'αυτό προφανώς ο DMR (Dennis McAllister Ritchie), "συναρτοποίησε" όλη σχεδόν τη γλώσσα .....
ΠΡΟΣΟΧΗ, μην παρανοηθεί ... είναι διαφορετικό θέμα ο "συναρτησιακός προγραμματισμός".

Περισσότερες λεπτομέρειες για τα είδη προγραμματισμού, και τα καλά του τμηματικού-δομημένου προγραμματισμού, στο βιβλίο Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον Γ' Λυκείου.
Πες στον καθηγητή σου μήπως μπορεί να σου το προμηθεύσει για να διαβάσεις για τα παραπάνω ....

Το βιβλίο αποκαλύπτει πολλές αρχές, αν και κάποιοι φίλοι μου το θεωρούν χάσιμο χρόνου ....

Να' ναι καλά εκεί που είναι (ο DMR), σε αντίσεση με άλλους(ονόματα δεν λέμε και μήλα δεν δείχνουμε... XD).

Κοίτα να μη δαγκώσεις τα μήλα για τα οποία μίλησες, γιατί θα μας κάνουν μήνυση για δικαιώματα χρήσης λογότυπου και τέτοια ....Laughing
Δες εδώ ... ΜΗΛΑ

@ hellaspc1
Μόλις το περιοδικό δημοσίευσε οδηγό για PYTHON ....
Κάντον φύλο και φτερό, και καλή συνέχεια στην εξερεύνησή σου στον προγραμματισμό .....!!!!
Με εκτίμηση tom1972

tom1972 το ειδα ηδη. θα  το παρακολοθησω στενα ( μαρκαρισμα ) ..  ευχαριστω για τις προτροπες σου