Μάθημα 6 Είσοδος έξοδος - Εξαιρέσεις

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

Μάθημα 6 Είσοδος έξοδος - Εξαιρέσεις

Δημοσίευσηαπό sokoban4ever » 17 Αύγ 2009, 02:24

Συνεχίζουμε
με :

Είσοδος έξοδος


http://www.swaroopch.com/notes/Python_e ... E%BF%CF%82
και

Εξαιρέσεις


http://www.swaroopch.com/notes/Python_e ... E%B9%CF%82
καλό διάβασμα :)
Θέλουμε και μπορούμε να έχουμε μια καλύτερη ζωή και όσο θα ζούμε θα προσπαθούμε να την αποκτήσουμε ακόμα και αν πεθάνουμε προσπαθώντας, και αν κάποια στιγμή λιγίσουμε έχουμε το επίπεδο να πούμε κουράστηκα λίγο να ,να ξαποστάσουμε , ώστε να συνεχίσουμε πάλι δυνατοί ξανά.

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

Re: Μάθημα 6 Είσοδος έξοδος - Εξαιρέσεις

Δημοσίευσηαπό malos » 21 Σεπ 2009, 02:06

Θέλω να παράγω ένα αρχείο που θα περιεχει κείμενο.
Το κείμενο θα είναι ένα σύνολο εισόδων από τον χρήστη, σε απανωτές ερωτήσεις με την input.
Επειδή είμαι κορυφαίος προγραμματιστής .... το κατάφερα εν μέρει με απλό τρόπο.

Κώδικας: Επιλογή όλων
#!/usr/bin/python3
a = input('Όναμα : ')
b = input('Επώνυμο : ')
c = input('Έτος γεν. : ')
d = input('Επάγγελμα : ')
e = input('Τηλέφωνο : ')
ola_ta_stoixeia = a+b+c+d+e
f = open('forma.txt', 'w')
f.write(ola_ta_stoixeia)
f.close()


Δεν μπορώ όμως να το κάνω το αρχείο να φαίνεται νοικοκυρεμένο !
Κοιτάξτε χάλι :
Κώδικας: Επιλογή όλων
ΛευτέρηςΜάλος1967Κορυφαίος προγραμματιστής5445555


Εσείς (αν και κατώτεροι ως προγραμματιστές :lol: ) μπορείτε να το εμφανίζετε γραμή-γραμή ;

Ευχαριστώ
Επεξεργαστής: AMD Ryzen 9 5900x
Μνήμη Gskill 16gb (2X8gb), 3200 mh, CL 14
Μητρική: Asrock X570 phantom gaming X
Τροφοδοτικό: Corsair 850 platinum
Δίσκος: SSD Corsair MP600 (1 TB)
Άβαταρ μέλους
malos
saintTUX
saintTUX
 
Δημοσιεύσεις: 1221
Εγγραφή: 02 Νοέμ 2008, 12:00
Εκτύπωση

Re: Μάθημα 6 Είσοδος έξοδος - Εξαιρέσεις

Δημοσίευσηαπό sokoban4ever » 21 Σεπ 2009, 10:41

@malos
:lol: :lol: :D
Λοιπόν
ένα παράδειγμα με μια συνάρτηση
Κώδικας: Επιλογή όλων
>>> def extender(stringaki):
...     if stringaki:
...         return stringaki + '\n'
...     else:
...         return 'ERROR EMPTY VAR\n'
...     
>>> extender('a')
'a\n'
>>> extender('')
'ERROR EMPTY VAR\n'
>>> x='11'
>>> y='asdasd'
>>> g='grgrgr'
>>> ola = x+y+g
>>> ola
'11asdasdgrgrgr'
>>> ola= extender(y)+extender(x)+extender(g)
>>> ola
'asdasd\n11\ngrgrgr\n'
>>>
Θέλουμε και μπορούμε να έχουμε μια καλύτερη ζωή και όσο θα ζούμε θα προσπαθούμε να την αποκτήσουμε ακόμα και αν πεθάνουμε προσπαθώντας, και αν κάποια στιγμή λιγίσουμε έχουμε το επίπεδο να πούμε κουράστηκα λίγο να ,να ξαποστάσουμε , ώστε να συνεχίσουμε πάλι δυνατοί ξανά.

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

Re: Μάθημα 6 Είσοδος έξοδος - Εξαιρέσεις

Δημοσίευσηαπό da_perama1 » 21 Σεπ 2009, 16:34

Ως κατώτερος προγραμματιστής προτιμώ τις απλούστερες λύσεις.

Κώδικας: Επιλογή όλων
#!/usr/bin/python3
a = input('Όνομα : ')
b = input('Επώνυμο : ')
c = input('Έτος γεν. : ')
d = input('Επάγγελμα : ')
e = input('Τηλέφωνο : ')
ola_ta_stoixeia = a+' '+b+'\n'+c+'\n'+d+'\n'+e
f = open('forma.txt', 'w')
f.write(ola_ta_stoixeia)
f.close()
1 Γνώσεις Linux: Ικανοποιητικό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 13.04 precise 64bit (el_GR.UTF-8), Ubuntu 3.0.0-17-generic
3 Intel Core i5 CPU 650 3.20GHz ‖ RAM 7783 MiB ‖ Intel DH55TC -
4 Intel Core Processor Integrated Graphics Controller [8086:0042] (rev 02)
5 eth0: Intel 82578DC Gigabit Network Connection [8086:10f0] (rev 06)
da_perama1
punkTUX
punkTUX
 
Δημοσιεύσεις: 289
Εγγραφή: 11 Νοέμ 2008, 20:35
Τοποθεσία: Κέρκυρα
Εκτύπωση

Re: Μάθημα 6 Είσοδος έξοδος - Εξαιρέσεις

Δημοσίευσηαπό malos » 21 Σεπ 2009, 19:34

Σας ευχαριστώ παιδιά μου ! :D
@sokoban ... προσπάθησα να εμπνευστώ πως μπορώ να βάλω την συνάρτηση στο πρόγραμμά μου αλλά η μεταβλητή σου
με αναστστώνει ρε φίλε :lol: Έχω που έχω οργιώδη φαντασία, είμαι και στη δύση μου λόγω ηλικίας σε "αυτόν" τον τομέα .... ! οπότε βράστα.
@da_perama ... τόσο απλό ήταν γ***** ; !!! Ας πάω να διαβάσω για χικιοστή φορά το μάθημα 1 :D

Πάντως μπράβο σας ! Για το επίπεδό σας, πολύ καλοί είστε :D :D :D

:bow: :bow: :bow:
Επεξεργαστής: AMD Ryzen 9 5900x
Μνήμη Gskill 16gb (2X8gb), 3200 mh, CL 14
Μητρική: Asrock X570 phantom gaming X
Τροφοδοτικό: Corsair 850 platinum
Δίσκος: SSD Corsair MP600 (1 TB)
Άβαταρ μέλους
malos
saintTUX
saintTUX
 
Δημοσιεύσεις: 1221
Εγγραφή: 02 Νοέμ 2008, 12:00
Εκτύπωση

Re: Μάθημα 6 Είσοδος έξοδος - Εξαιρέσεις

Δημοσίευσηαπό sokoban4ever » 22 Σεπ 2009, 01:49

@malos
H αλήθεια είναι ότι δεν έβαλα σχόλια γιατί βιαζόμουν είχα δουλειά...
είναι όντως προκλητικά τα συγκεκριμένα ... data types ....... ;) :lol:
Λοιπόν με σχόλια τώρα
Κώδικας: Επιλογή όλων
    >>> def extender(stringaki):  # η συναρτηση αυτή παίρνει ένα string και ελέγχει εάν δεν έχει μηδενικό μήκος (δυστηχώς είναι False τα κενά strings  στην Python :P )
    ...     if stringaki:                 
    ...         return stringaki + '\n'
    ...     else:
    ...         return 'ERROR EMPTY VAR\n' # εδώ μας επιστρέφει ένα διακριτικότατο.... λάθος
    ...     
    >>> extender('a') # όταν την καλέσουμε με ένα string μας δίνει ένα :
    'a\n'
    >>> extender('') # εδώ όταν την καλέσουμε με κενό μας δίνει ένα λάθος...
    'ERROR EMPTY VAR\n'
    >>> x='11' # εδώ βάζουμε τις τιμές στις μεταβλητές
    >>> y='asdasd' # εδώ βάζουμε τις τιμές στις μεταβλητές
    >>> g='grgrgr' # εδώ βάζουμε τις τιμές στις μεταβλητές
    >>> ola = x+y+g # εδώ δοκιμάζουμε να δούμε τι μας δίνει το ola
    >>> ola            # και βλέπουμε ότι δεν μας αρέσει
    '11asdasdgrgrgr'
    >>> ola= extender(y)+extender(x)+extender(g) # εδώ όμως αρχίζει να μας αρέσει
    >>> ola
    'asdasd\n11\ngrgrgr\n'
 


βέβαια θα μπορούσαμε να ελέξουμε εαν τελειώνει ήδη με '\n' ώστε να μη βάλουμε και δέυτερο
έτσι :
Κώδικας: Επιλογή όλων
def extender(stringaki):
    if stringaki and not x.endswith('\n'):
        return stringaki + '\n'
    else:
        return 'ERROR EMPTY VAR\n'

επίσης η extender θα μπορούσε να πέρνει μία λίστα από strings και να επιστρέφει ένα συγυρισμένη λίστα από strings
με την χρήση του for και του enumarete
πχ
Κώδικας: Επιλογή όλων
>>> def ext(lista):
...     for i,v in enumerate(lista):
...         if v.endswith('\n'):
...             pass
...         elif not v.endswith('\n'):
...             lista[i]=lista[i] + '\n'
...     return lista
...     
>>> x = [str(x) for x in xrange(101)] # φτιάχνουμε ένα δοκιμαστικό input
>>> for i in x :
...        pass
...     
>>> for i in xrange(0,100,2):
...         x[i]=x[i] + '\n'
...     
>>> x # χμμ ώραία κάποια έχουν ήδη '\n' κάποια όχι  έτσι για να μοιάζει ποιό φυσικό
['0\n', '1', '2\n', '3', '4\n', '5', '6\n', '7', '8\n', '9', '10\n', '11', '12\n', '13', '14\n', '15', '16\n', '17', '18\n', '19', '20\n', '21', '22\n', '23', '24\n', '25', '26\n', '27', '28\n', '29', '30\n', '31', '32\n', '33', '34\n', '35', '36\n', '37', '38\n', '39', '40\n', '41', '42\n', '43', '44\n', '45', '46\n', '47', '48\n', '49', '50\n', '51', '52\n', '53', '54\n', '55', '56\n', '57', '58\n', '59', '60\n', '61', '62\n', '63', '64\n', '65', '66\n', '67', '68\n', '69', '70\n', '71', '72\n', '73', '74\n', '75', '76\n', '77', '78\n', '79', '80\n', '81', '82\n', '83', '84\n', '85', '86\n', '87', '88\n', '89', '90\n', '91', '92\n', '93', '94\n', '95', '96\n', '97', '98\n', '99', '100']
>>> ext(x) # τρέχουμε την συνάρτηση και βουαλά όλα είναι συγυρισμένα με ένα \n στο τέλος τους :)
['0\n', '1\n', '2\n', '3\n', '4\n', '5\n', '6\n', '7\n', '8\n', '9\n', '10\n', '11\n', '12\n', '13\n', '14\n', '15\n', '16\n', '17\n', '18\n', '19\n', '20\n', '21\n', '22\n', '23\n', '24\n', '25\n', '26\n', '27\n', '28\n', '29\n', '30\n', '31\n', '32\n', '33\n', '34\n', '35\n', '36\n', '37\n', '38\n', '39\n', '40\n', '41\n', '42\n', '43\n', '44\n', '45\n', '46\n', '47\n', '48\n', '49\n', '50\n', '51\n', '52\n', '53\n', '54\n', '55\n', '56\n', '57\n', '58\n', '59\n', '60\n', '61\n', '62\n', '63\n', '64\n', '65\n', '66\n', '67\n', '68\n', '69\n', '70\n', '71\n', '72\n', '73\n', '74\n', '75\n', '76\n', '77\n', '78\n', '79\n', '80\n', '81\n', '82\n', '83\n', '84\n', '85\n', '86\n', '87\n', '88\n', '89\n', '90\n', '91\n', '92\n', '93\n', '94\n', '95\n', '96\n', '97\n', '98\n', '99\n', '100\n']

έτσι δεν χρειάζεται να την γράφουμε κάθε φορά αρκή μόνο να αποθηκέυσουμε όλα τα input ( πχ με list.append) σε μία λίστα
:D
Θέλουμε και μπορούμε να έχουμε μια καλύτερη ζωή και όσο θα ζούμε θα προσπαθούμε να την αποκτήσουμε ακόμα και αν πεθάνουμε προσπαθώντας, και αν κάποια στιγμή λιγίσουμε έχουμε το επίπεδο να πούμε κουράστηκα λίγο να ,να ξαποστάσουμε , ώστε να συνεχίσουμε πάλι δυνατοί ξανά.

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


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