Μάθημα 1 - Τα βασικά

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

Re: Μάθημα 1 - Τα βασικά

Δημοσίευσηαπό malos » 12 Ιουν 2009, 10:42

Παιδιά στο παράδειγμα

Κώδικας: Επιλογή όλων
#!/usr/bin/python
# Filename: str_format.py

age = 25
name = 'Swaroop'

print('{0} is {1} years old'.format(name, age))
print('Why is {0} playing with that python?'.format(name))


οι γραμμές

print('{0} is {1} years old'.format(name, age))
και
print('Why is {0} playing with that python?'.format(name))

περιέχουν τελεία . Αυτό σημαίνει ... ότι ακολουθεί μέθοδος ; Δηλαδή " κάνε τη μέθοδο αριστερά από την τελεία ( print ) , με τη μέθοδο που υπάρχει αριστερά από την τελεία ( format ) .

Ε ;
Επεξεργαστής: 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
 
Δημοσιεύσεις: 1230
Εγγραφή: 02 Νοέμ 2008, 12:00
Εκτύπωση

Re: Μάθημα 1 - Τα βασικά

Δημοσίευσηαπό medigeek » 12 Ιουν 2009, 11:01

malos έγραψε:περιέχουν τελεία . Αυτό σημαίνει ... ότι ακολουθεί μέθοδος ; Δηλαδή " κάνε τη μέθοδο αριστερά από την τελεία ( print ) , με τη μέθοδο που υπάρχει αριστερά από την τελεία ( format ) .


Αν κατάλαβα καλά ναι. :)
Υπάρχει κι άλλος τρόπος να το γράψεις με αντικατάσταση "%s" ή "%d":
Κώδικας: Επιλογή όλων
$ python3.0
Python 3.0.1+ (r301:69556, Apr 15 2009, 17:25:52)
[GCC 4.3.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a = "wow this is %s"
>>> print(a % ("great"))
wow this is great
>>>
>>> b = "my number is: %d"
>>> print(b % (2))
my number is: 2
>>> print(b % ("2"))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: %d format: a number is required, not str
>>> print(b % ("this is a string"))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: %d format: a number is required, not str
>>>
>>> print("bla bla %s - number %d" % ("bla", 2))
bla bla bla - number 2
>>>


Ισχύει και για python2.6 :)
Κύπριος; Κόπιασε στο 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: Μάθημα 1 - Τα βασικά

Δημοσίευσηαπό paschalis.m » 12 Ιουν 2009, 12:29

το %s ειναι για λεξεις ενω το %d για αριθμους?
Εικόνα
Άβαταρ μέλους
paschalis.m
punkTUX
punkTUX
 
Δημοσιεύσεις: 280
Εγγραφή: 10 Σεπ 2008, 22:10
IRC: paschalis
Εκτύπωση

Re: Μάθημα 1 - Τα βασικά

Δημοσίευσηαπό medigeek » 12 Ιουν 2009, 12:55

bingo! :thumbup: :thumbup:
Κύπριος; Κόπιασε στο 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: Μάθημα 1 - Τα βασικά

Δημοσίευσηαπό dimosfire » 13 Ιουν 2009, 00:43

Αν μπορεί κάποιος ας εξηγήσει το παρακάτω:
Κώδικας: Επιλογή όλων
<<    Αριστερή μετάθεση    Μεταθέτει τα δυαδικά ψηφία (bits) του αριθμού προς τα αριστερά κατά το πλήθος των θέσεων που καθορίστηκε. (Κάθε αριθμός αναπαρίσταται στη μνήμη με δυαδικά ψηφία (bits, binary digits) -δηλαδή με 0 και 1).    

To 2 << 2 δίνει 8. Το 2 αναπαριστάται ως σε bits ως 10. Η μετάθεση προς τα αριστερά κατά 2 bits μας δίνει 1000 που παριστάνει το δεκαδικό 8.

>>
   

Δεξιά μετάθεση
   

Μεταθέτει τα bits του αριθμού προς τα δεξιά κατά το πλήθος των θέσεων που καθορίστηκε.
   

To 11 >> 1 δίνει 5. Το 11 αναπαριστάται σε bits ως 1011 που όταν μετατεθούν δεξιά κατά 1 bit μας δίνει 101 το οποίο είναι το δεκαδικό 5.

&
   

Δυαδικό ΚΑΙ
   

Δυαδικό ΚΑΙ των αριθμών.
   

Το 5 & 3 δίνει 1.

|
   

Δυαδικό Ή
   

Δυαδικό Ή των αριθμών.
   

Το 5 | 3 δίνει 7.

^
   

Δυαδικό αποκλειστικό Ή
   

Δυαδικό αποκλειστικό Ή των αριθμών.
   

Το 5 ^ 3 δίνει 6.

Ευχαριστώ.
ubuntu 9.10 (AMD64),Innovator desktop, motherboard MSI K8N NEO4-F,cpu AMD ATHLON64 3500+ 2.20GHz,ram 1GHz, καρτα γραφ.GIGABYTE GEFORCE 6600 256MB,καρτα τηλεορ.κ radio FM PROLINK PIXELVIEW PLAYTV PRO/ΑΓΓΛΙΚΑ-ΚΑΛΑ/ΓΝΩΣΕΙΣ ΠΡΟΓΡ.-ΚΑΘΟΛΟΥ.
dimosfire
babeTUX
babeTUX
 
Δημοσιεύσεις: 141
Εγγραφή: 02 Φεβ 2009, 11:07
Τοποθεσία: ΠΑΤΡΑ
Εκτύπωση

Re: Μάθημα 1 - Τα βασικά

Δημοσίευσηαπό medigeek » 13 Ιουν 2009, 02:13

Μπήκες στα βαθιά νερά, έλπιζα πως δε θα ρωτήσετε. Θα ήταν καλό να αποφύγετε τα "bitwise operators", έχουν να κάνουν με δυαδικό τρόπο αρίθμησης (0 και 1). Δεν είμαι σίγουρος, αλλά αμφιβάλλω αν θα σας χρησιμεύσουν για τα πρώτα σας βήματα στον προγραμματισμό (εκτός κι αν πάτε για προγραμματισμό μηχανών; :? ).

Προσωπικά δεν είμαι και πολύ καλός σ'αυτά, αλλά ένα περίπου θα τα βρεις επεξηγημένα στην ιστοσελίδα:
http://wiki.python.org/moin/BitwiseOperators
http://wiki.python.org/moin/BitManipulation

Με λίγα λόγια, οι αριθμοί στο δυαδικό σύστημα από το 0 μέχρι το 10:
Κώδικας: Επιλογή όλων
$ for i in 0 1 2 3 4 5 6 7 8 9 10; do ( echo "$i => `echo "ibase=10;obase=2;$i" | bc`" ); done
0 => 0
1 => 1
2 => 10
3 => 11
4 => 100
5 => 101
6 => 110
7 => 111
8 => 1000
9 => 1001
10 => 1010


http://en.wikipedia.org/wiki/Binary_num ... arithmetic
http://el.wikipedia.org/wiki/%CE%94%CF% ... E%BC%CE%B1

Ο δυαδικός αριθμός 1101 [μικρό 2] αναπαριστά ποσότητα ίση με 1 μονάδα (1 * 2 [στη δύναμη 0]), 0 δυάδες (0 * 2 [στη δύναμη 1]), 1 τετράδα (1 * 2 [στη δύναμη 2]) και 1 οκτάδα (1 * 2 [στη δύναμη 3]). Διαβάζεται : "ένα,ένα,μηδέν,ένα [με βάση 2]". Ισούται δηλαδή με τον αριθμό 13 του δεκαδικού συστήματος, 1 * 2 ** 0 + 0 * 2 ** 1 + 1 * 2 ** 2 + 1 * 2 ** 3 = 13.


"ΚΑΙ" - Πρόσθεση δυαδικών αριθμών
x & y: Το "ΚΑΙ" αντιστοιχεί στην πρόσθεση binary αριθμών στην python συμβολίζεται με το χαρακτήρα "&":
Σημείωση: Πρέπει ΟΛΑ να είναι 1 για να δώσουν αποτέλεσμα 1
$ python3
Python 3.0.1+ (r301:69556, Apr 15 2009, 17:25:52)
[GCC 4.3.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 0 & 0
0
>>> 1 & 0
0
>>> 0 & 1
0
>>> 1 & 1
1
>>> 1 & 1 & 1
1

>>> 1 & 1 & 0
0
>>> 1 & 0 & 1
0


"Ή"
x | y: Το "'Η" αντιστοιχεί στον έλεγχο binary αριθμών, αν ένα από αυτά είναι 1, επιστεφει 1. Στην python συμβολίζεται με το χαρακτήρα "|":
Κώδικας: Επιλογή όλων
>>> 1 | 1
1
>>> 1 | 1 | 1
1
>>> 1 | 0 | 0
1
>>> 0 | 1
1
>>> 0 | 0
0



x << y είναι το ίδιο με το χ * 2 ** y:
Κώδικας: Επιλογή όλων
>>> 1 << 3
8
>>> 1*2**3
8
>>> 3 << 10
3072
>>> 3*2**10
3072
>>>



x >> y είναι το ίδιο με x // 2 ** y :
Κώδικας: Επιλογή όλων
>>> 50 >> 3
6
>>> 50 // 2 ** 3
6


Ισχύει και για python2.6 :)
Κύπριος; Κόπιασε στο 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: Μάθημα 1 - Τα βασικά

Δημοσίευσηαπό medigeek » 13 Ιουν 2009, 02:49

Παραδείγματα εδώ:
http://www.java2s.com/Code/Python/Data-Type/Bit.htm

Ένα απλό παράδειγμα:

Κώδικας: Επιλογή όλων
#!/usr/bin/python3
# -*- coding: utf-8 -*-
working = input("Δουλεύεις; [y/n] ").lower()
student = input("Είσαι φοιτητής; [y/n] ").lower()

# y/yes δίνει 1, n/no δίνει 0
answer = {
    'y': 1,
    'yes': 1,
    'n': 0,
    'no': 0
}

if answer[working] & answer[student]:
    print("Είσαι δουλευταράς και φοιτητής!")
elif answer[working] ^ answer[student]:
    print("Είτε είσαι δουλευταράς είτε φοιτητής!")
else:
    print("Ούτε δουλευταράς είσαι, ούτε φοιτητής!")


Αποτέλεσμα:
Κώδικας: Επιλογή όλων
$ python3 ./testme.py
Δουλεύεις; [y/n] y
Είσαι φοιτητής; [y/n] y
Είσαι δουλευταράς και φοιτητής!

$ python3 ./test.py
Δουλεύεις; [y/n] y
Είσαι φοιτητής; [y/n] n
Είτε είσαι δουλευταράς είτε φοιτητής!

$ python3 ./test.py
Δουλεύεις; [y/n] n
Είσαι φοιτητής; [y/n] y
Είτε είσαι δουλευταράς είτε φοιτητής!

$ python3 ./test.py
Δουλεύεις; [y/n] n
Είσαι φοιτητής; [y/n] n
Ούτε δουλευταράς είσαι, ούτε φοιτητής!

Κύπριος; Κόπιασε στο 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: Μάθημα 1 - Τα βασικά

Δημοσίευσηαπό medigeek » 13 Ιουν 2009, 22:16

Κύπριος; Κόπιασε στο 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: Μάθημα 1 - Τα βασικά

Δημοσίευσηαπό griper » 14 Ιουν 2009, 01:21

H Python με τη μέθοδο format αντικαθιστά κάθε τιμή ορίσματος στη θέση της
προδιαγραφής. Μπορούν να δηλωθούν λεπτομερέστερες προδιαγραφές όπως:

>>> '{0:.3}'.format(1/3) # decimal (.) precision of 3 for float
'0.333'
>>> '{0:_^11}'.format('hello') # fill with underscores (_) with the text centered (^) to 11 width
'___hello___'
>>> '{name} wrote {book}'.format(name='Swaroop', book='A Byte of Python') # keyword-based
'Swaroop wrote A Byte of Python'


Μου έμεινε μία απορία από τη μέθοδο format. Δε μπορώ να καταλάβω πως ακριβώς δουλεύει η μέθοδος στα παραπάνω παραδείγματα.
Άβαταρ μέλους
griper
babeTUX
babeTUX
 
Δημοσιεύσεις: 138
Εγγραφή: 19 Σεπ 2008, 23:17
Τοποθεσία: Καβάλα
Εκτύπωση

Re: Μάθημα 1 - Τα βασικά

Δημοσίευσηαπό Luke » 14 Ιουν 2009, 14:46

Στα 2 πρώτα παραδείγματα ό,τι βρίσκεται πριν τα ":" είναι το "ψευδώνυμο" του ορίσματος (στη συγκεκριμένη περίπτωση το 0). Ό,τι ακολουθεί το ":" δείχνει τις ιδιότητες μορφοποίησης που θέλουμε να έχουμε.

Π.χ. στο πρώτο παράδειγμα λέμε ότι μετά την υποδιαστολή (".") θέλουμε να ακολουθούν μόνο 3 δεκαδικά ψηφία. Αυτό το οποίο μορφοποιείς και το οποίο αντικαθιστά τη "μεταβλητή" 0 (δεν ξέρω αν θεωρείται μεταβλητή γι' αυτό βάζω τη λέξη σε εισαγωγικά) είναι τα κλάσμα 1/3 (το οποίο αν δεν ορίζαμε το format θα έδινε 1.33333333333....).

Στο 2ο παράδειγμα μορφοποιείς τη συμβολοσειρά "hello" αλλά ορίζεις 3 ιδιότητες μαζί στο format. Κάνεις ταυτόχρονα συμπλήρωση με χαρακτήρες "_", συνολικό μήκος τελικού string 11 χαρακτήρες μαζί με τα underscore που προσθέσαμε και τελικά κεντράρεις (^) το αρχικό σου string στην τελική συμβολοσειρά.

Στο 3ο παράδειγμα απλά αντικαθιστάς τις "μεταβλητές" name και book με κάποιες τιμές ('Swaroop' και 'A Byte of Python' αντίστοιχα).
1 Γνώσεις ⇛ Linux: Χαμηλό προς Μέτριο ┃ Προγραμματισμός: Ναι ┃ Αγγλικά: Καλά
2 Λειτουργικά → Ubuntu 10.04 lucid 64bit (en_US.utf8), Windows 7
3 Προδιαγραφές → Intel Core i5-2500 CPU @ 3.30GHz ‖ RAM 7916 MiB ‖ MSI H67MA-E35 (MS-7680) - MSI MS-7680
4 Κάρτες γραφικών: Intel Sandy Bridge Integrated Graphics Controller [8086:0102] (rev 09)
5 Δίκτυα: eth0: Realtek RTL8111/8168B PCI Express Gigabit Ethernet controller [10ec:8168] (rev 06)
Άβαταρ μέλους
Luke
babeTUX
babeTUX
 
Δημοσιεύσεις: 91
Εγγραφή: 23 Μάιος 2009, 21:31
Εκτύπωση

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

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