Τα πάντα για την Python

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

Re: Τα πάντα για την Python

Δημοσίευσηαπό xqtr » 07 Φεβ 2010, 22:28

Δεν ασχολουμε με την Python... αλλα απο οτι φενεται... η σελιδα που κατεβαζεις εχει κωδικοποιηση πχ. windows-1253 ενω στο προγραμμα σου (η στο ubuntu γενικοτερα) χρησιμοποιει διαφορετικη. πιθανοτατα utf8.

Κατεβασε την σελιδα που επεξεργαζεσε με τον browser σου... και ανοιξε την με το gedit. Δοκιμασε διαφορες κωδικοσελιδες, μεχρι να βρεις αυτη που χρησιμοποιει το αρχειο .html. Η οποια κατα 99% θα ειναι η windows-1253/7
O χειμώνας έρχεται...
Γνώσεις ⇛ Linux: Μέτριο │ Προγραμματισμός: Ναι (Delphi/Lazarus) │ Αγγλικά: Καλά
Λειτουργικό : Ubuntu 14.04 σε Acer Aspire 5520
Προδιαγραφές ⇛ AMD Turion 1.8GHz │ 1GB │ ATI X700 │ Broadcom BCM4318 │LCD 15.4"
Άβαταρ μέλους
xqtr
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 508
Εγγραφή: 05 Φεβ 2009, 19:00
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό sokoban4ever » 07 Φεβ 2010, 23:07

@DarkLord
δες τι κωδικοποίηση έχει η σελίδα (κατά πάσα πιθανότητα έχει ISO-8859-7 ή windows-1253 )
http://czyborra.com/charsets/iso8859.html#ISO-8859-7
και κάνε decode ανάλογα
πχ
Κώδικας: Επιλογή όλων
>>> x="Παράδειγμα".decode('utf-8')
>>> x
u'\u03a0\u03b1\u03c1\u03ac\u03b4\u03b5\u03b9\u03b3\u03bc\u03b1'
>>> print x
Παράδειγμα


επίσης κοίταξε και αυτό το module (είναι όσο έξυπνος είναι και ο browser στην αναγνώριση κωδικοποίησης χαρακτήρων )
Κώδικας: Επιλογή όλων
apt-cache show python-chardet

και μετά κάνε
Κώδικας: Επιλογή όλων
sudo apt-get install python-chardet

μετα πχ ας επισκεφτούμε την σελίδα http://vancouver-webpages.com/multilingual/greek.html
που φαίνεται στα μαύρα της τα χάλια


πχ
Spoiler: show
έγραψε:
>>> import chardet
>>> import urllib2
>>> page=urllib2.urlopen("http://vancouver-webpages.com/multilingual/greek.html")
>>> contents= page.read()
>>> contents #αλαμπουρνέζικα ... :P
'<HEAD>\n\n<TITLE>Greek / \xc7\xeb\xeb\xdd\xed\xe9\xea\xe1 (ISO 8859-7)</TITLE>\n\n\n\n</HEAD>\n<BODY>\n<H1>Greek / \xc7\xeb\xeb\xdd\xed\xe9\xea\xe1 (ISO 8859-7)</H1>\n<DD> \xc3\xe5\xe9\xdc \xf3\xe1\xf2\n<p>\n<a href="http://www.diavlos.gr/agelioforos/k01.htm">\nhttp://www.diavlos.gr/agelioforos/k01.htm</a><p>\n\n<hr>\nCITROEN VISA \xe1\xed\xf4\xe1\xeb\xeb\xdc\xf3\xe5\xf4\xe1\xe9 \xec\xe5 \xe1\xe3\xf1\xef\xf4\xe9\xea\xfc NISSAN *0382/32273<P>\r\n\xc3\xca\xc1\xd1\xd3\xcf\xcd\xc9\xc5\xd1\xc1 40 \xf4\xec \xf3\xf4\xe7 \xcd\xe5\xdc\xf0\xef\xeb\xe7 \xe1\xed\xf4\xe1\xeb\xeb\xdc\xf3\xf3\xe5\xf4\xe1\xe9 \xec\xe5 \xe3\xf1\xe1\xf6\xe5\xdf\xef 30-40 \xf4\xec \xf3\xf4\xef \xea\xdd\xed\xf4\xf1\xef *869544 \xe1\xf0\xfc\xe3\xe5\xf5\xec\xe1 \xea\xe1\xe9 *287572 \xf0\xf1\xf9\xdf<P>\r\n\xc4\xc9\xc1\xcc. \xf3\xf4\xef \xea\xdd\xed\xf4\xf1\xef \xec\xe5 \xe1\xf3\xe1\xed\xf3\xdd\xf1 \xea\xe1\xe9 \xea\xe1\xeb\xef\xf1\xe9\xf6\xdd\xf1 \xe1\xee\xdf\xe1\xf2 27.000.000 \xe4\xf1\xf7 \xe1\xed\xf4\xe1\xeb\xeb\xdc\xf3\xf3\xe5\xf4\xe1\xe9 \xec\xe5 \xec\xef\xed\xef\xea\xe1\xf4\xef\xe9\xea\xdf\xe1 \xec\xe5 \xea\xde\xf0\xef \xf3\xe5 \xe1\xea\xf4\xdf\xed\xe1 \xec\xdd\xf7\xf1\xe9 30 \xf7\xeb\xec \xe1\xf0\xfc \xc8\xe5\xf3/\xed\xdf\xea\xe7 *527339<P>\r\n\xc5\xd0\xc1\xcd\xd9\xcc\xc7 \xec\xef\xed\xef\xea\xe1\xf4\xef\xe9\xea\xdf\xe1 75\xf4\xec 2\xc4\xd3\xca\xcb \xf3\xe5 \xef\xe9\xea\xef\xf0\xe5\xe4\xef 400\xf4\xec \xea\xe1\xe9 \xca\xe7\xf6\xe9\xf3\xe9\xdc \xe4\xe9\xe1\xec. 74\xf4\xec 12 \xe5\xf4\xfe\xed 1\xef\xf2 \xfc\xf1. 2\xc4\xd3\xca\xcb \xec\xe5 \xe8\xe5\xf1\xec\xef\xf3\xf5\xf3\xf3\xf9\xf1\xe5\xf5\xf4\xdd\xf2 \xe1\xed\xf4\xe1\xeb\xeb\xdc\xf3\xf3\xef\xed\xf4\xe1\xe9 \xec\xe5 2 \xe4\xe9\xe1\xec/\xf4\xe1 \xf3\xf4\xe7 \xc8\xe5\xf3/\xed\xdf\xea\xe7 \xf3\xf4\xe7\xed \xdf\xe4\xe9\xe1 \xf0\xe5\xf1\xe9\xef\xf7\xde \xef\xf0\xef\xf5\xe4\xde\xf0\xef\xf4\xe5 \xe1\xeb\xeb\xef\xfd *431972 \xea\xe1\xe9 *865924<P>\r\n<h2>GIF (from Mosaic-L10N)</h2>\n<img src="greek.html.gif">\n</BODY>\n\n'
>>> print contents #κινέζικα .... :P
<HEAD>

<TITLE>Greek / �������� (ISO 8859-7)</TITLE>



</HEAD>
<BODY>
<H1>Greek / �������� (ISO 8859-7)</H1>
<DD> ���� ��
<p>
<a href="http://www.diavlos.gr/agelioforos/k01.htm">
http://www.diavlos.gr/agelioforos/k01.htm</a><p>

<hr>
CITROEN VISA ������������ �� �������� NISSAN *0382/32273<P>
����������� 40 �� ��� ������� ������������� �� ������� 30-40 �� ��� ������ *869544 �������� ��� *287572 ����<P>
����. ��� ������ �� ������� ��� ��������� ����� 27.000.000 ��� ������������� �� ������������ �� ���� �� ������ ����� 30 ��� ��� ���/���� *527339<P>
������� ������������ 75�� 2���� �� �������� 400�� ��� ������� ����. 74�� 12 ���� 1�� ��. 2���� �� ���������������� �������������� �� 2 ����/�� ��� ���/���� ���� ���� ������� ���������� ����� *431972 ��� *865924<P>
<h2>GIF (from Mosaic-L10N)</h2>
<img src="greek.html.gif">
</BODY>


>>> chardet.detect(contents) :silent: :think: :clap:
{'confidence': 0.87901989033057149, 'encoding': 'ISO-8859-7'} # Ωραία το βρήκε είναι το 'ISO-8859-7' :thumbup:
>>>ToPithanoteroEncoding = chardet.detect(contents)['encoding']
>>> contents.decode(ToPithanoteroEncoding)
u'<HEAD>\n\n<TITLE>Greek / \u0397\u03bb\u03bb\u03ad\u03bd\u03b9\u03ba\u03b1 (ISO 8859-7)</TITLE>\n\n\n\n</HEAD>\n<BODY>\n<H1>Greek / \u0397\u03bb\u03bb\u03ad\u03bd\u03b9\u03ba\u03b1 (ISO 8859-7)</H1>\n<DD> \u0393\u03b5\u03b9\u03ac \u03c3\u03b1\u03c2\n<p>\n<a href="http://www.diavlos.gr/agelioforos/k01.htm">\nhttp://www.diavlos.gr/agelioforos/k01.htm</a><p>\n\n<hr>\nCITROEN VISA \u03b1\u03bd\u03c4\u03b1\u03bb\u03bb\u03ac\u03c3\u03b5\u03c4\u03b1\u03b9 \u03bc\u03b5 \u03b1\u03b3\u03c1\u03bf\u03c4\u03b9\u03ba\u03cc NISSAN *0382/32273<P>\r\n\u0393\u039a\u0391\u03a1\u03a3\u039f\u039d\u0399\u0395\u03a1\u0391 40 \u03c4\u03bc \u03c3\u03c4\u03b7 \u039d\u03b5\u03ac\u03c0\u03bf\u03bb\u03b7 \u03b1\u03bd\u03c4\u03b1\u03bb\u03bb\u03ac\u03c3\u03c3\u03b5\u03c4\u03b1\u03b9 \u03bc\u03b5 \u03b3\u03c1\u03b1\u03c6\u03b5\u03af\u03bf 30-40 \u03c4\u03bc \u03c3\u03c4\u03bf \u03ba\u03ad\u03bd\u03c4\u03c1\u03bf *869544 \u03b1\u03c0\u03cc\u03b3\u03b5\u03c5\u03bc\u03b1 \u03ba\u03b1\u03b9 *287572 \u03c0\u03c1\u03c9\u03af<P>\r\n\u0394\u0399\u0391\u039c. \u03c3\u03c4\u03bf \u03ba\u03ad\u03bd\u03c4\u03c1\u03bf \u03bc\u03b5 \u03b1\u03c3\u03b1\u03bd\u03c3\u03ad\u03c1 \u03ba\u03b1\u03b9 \u03ba\u03b1\u03bb\u03bf\u03c1\u03b9\u03c6\u03ad\u03c1 \u03b1\u03be\u03af\u03b1\u03c2 27.000.000 \u03b4\u03c1\u03c7 \u03b1\u03bd\u03c4\u03b1\u03bb\u03bb\u03ac\u03c3\u03c3\u03b5\u03c4\u03b1\u03b9 \u03bc\u03b5 \u03bc\u03bf\u03bd\u03bf\u03ba\u03b1\u03c4\u03bf\u03b9\u03ba\u03af\u03b1 \u03bc\u03b5 \u03ba\u03ae\u03c0\u03bf \u03c3\u03b5 \u03b1\u03ba\u03c4\u03af\u03bd\u03b1 \u03bc\u03ad\u03c7\u03c1\u03b9 30 \u03c7\u03bb\u03bc \u03b1\u03c0\u03cc \u0398\u03b5\u03c3/\u03bd\u03af\u03ba\u03b7 *527339<P>\r\n\u0395\u03a0\u0391\u039d\u03a9\u039c\u0397 \u03bc\u03bf\u03bd\u03bf\u03ba\u03b1\u03c4\u03bf\u03b9\u03ba\u03af\u03b1 75\u03c4\u03bc 2\u0394\u03a3\u039a\u039b \u03c3\u03b5 \u03bf\u03b9\u03ba\u03bf\u03c0\u03b5\u03b4\u03bf 400\u03c4\u03bc \u03ba\u03b1\u03b9 \u039a\u03b7\u03c6\u03b9\u03c3\u03b9\u03ac \u03b4\u03b9\u03b1\u03bc. 74\u03c4\u03bc 12 \u03b5\u03c4\u03ce\u03bd 1\u03bf\u03c2 \u03cc\u03c1. 2\u0394\u03a3\u039a\u039b \u03bc\u03b5 \u03b8\u03b5\u03c1\u03bc\u03bf\u03c3\u03c5\u03c3\u03c3\u03c9\u03c1\u03b5\u03c5\u03c4\u03ad\u03c2 \u03b1\u03bd\u03c4\u03b1\u03bb\u03bb\u03ac\u03c3\u03c3\u03bf\u03bd\u03c4\u03b1\u03b9 \u03bc\u03b5 2 \u03b4\u03b9\u03b1\u03bc/\u03c4\u03b1 \u03c3\u03c4\u03b7 \u0398\u03b5\u03c3/\u03bd\u03af\u03ba\u03b7 \u03c3\u03c4\u03b7\u03bd \u03af\u03b4\u03b9\u03b1 \u03c0\u03b5\u03c1\u03b9\u03bf\u03c7\u03ae \u03bf\u03c0\u03bf\u03c5\u03b4\u03ae\u03c0\u03bf\u03c4\u03b5 \u03b1\u03bb\u03bb\u03bf\u03cd *431972 \u03ba\u03b1\u03b9 *865924<P>\r\n<h2>GIF (from Mosaic-L10N)</h2>\n<img src="greek.html.gif">\n</BODY>\n\n'
>>> print contents.decode(ToPithanoteroEncoding) # δηλαδή 'iso-8859-7' ;)
<HEAD>

<TITLE>Greek / Ηλλένικα (ISO 8859-7)</TITLE>



</HEAD>
<BODY>
<H1>Greek / Ηλλένικα (ISO 8859-7)</H1>
<DD> Γειά σας
<p>
<a href="http://www.diavlos.gr/agelioforos/k01.htm">
http://www.diavlos.gr/agelioforos/k01.htm</a><p>

<hr>
CITROEN VISA ανταλλάσεται με αγροτικό NISSAN *0382/32273<P>
ΓΚΑΡΣΟΝΙΕΡΑ 40 τμ στη Νεάπολη ανταλλάσσεται με γραφείο 30-40 τμ στο κέντρο *869544 απόγευμα και *287572 πρωί<P>
ΔΙΑΜ. στο κέντρο με ασανσέρ και καλοριφέρ αξίας 27.000.000 δρχ ανταλλάσσεται με μονοκατοικία με κήπο σε ακτίνα μέχρι 30 χλμ από Θεσ/νίκη *527339<P>
ΕΠΑΝΩΜΗ μονοκατοικία 75τμ 2ΔΣΚΛ σε οικοπεδο 400τμ και Κηφισιά διαμ. 74τμ 12 ετών 1ος όρ. 2ΔΣΚΛ με θερμοσυσσωρευτές ανταλλάσσονται με 2 διαμ/τα στη Θεσ/νίκη στην ίδια περιοχή οπουδήποτε αλλού *431972 και *865924<P>
<h2>GIF (from Mosaic-L10N)</h2>
<img src="greek.html.gif">
</BODY>
:D


Σημείωση :
μάλλον ποιο πιθανόν να είναι windows-1253 την βάζουν οι windowζάδες συχνά και επειδή είναι πολλοί
πρέπει να έχει δίκιο ο xqtr :)
την σήμερον ημέρα να μην βάζεις σε ένα site utf-8 μου φαίνεται δείγμα βαρεμάρας... είτε υπερβολικό ... :evil:
Θέλουμε και μπορούμε να έχουμε μια καλύτερη ζωή και όσο θα ζούμε θα προσπαθούμε να την αποκτήσουμε ακόμα και αν πεθάνουμε προσπαθώντας, και αν κάποια στιγμή λιγίσουμε έχουμε το επίπεδο να πούμε κουράστηκα λίγο να ,να ξαποστάσουμε , ώστε να συνεχίσουμε πάλι δυνατοί ξανά.

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

Re: Τα πάντα για την Python

Δημοσίευσηαπό DarkLord » 10 Φεβ 2010, 18:23

Ευχαριστώ πολύ για τις απαντήσεις σας, έκανα αυτό που μου πρότεινε ο xqtr και δούλεψε μια χαρά

xqtr έγραψε:Κατεβασε την σελιδα που επεξεργαζεσε με τον browser σου... και ανοιξε την με το gedit. Δοκιμασε διαφορες κωδικοσελιδες, μεχρι να βρεις αυτη που χρησιμοποιει το αρχειο .html. Η οποια κατα 99% θα ειναι η windows-1253/7


αλλά στη python τα πράγματα είναι διαφορετικά
θα ήθελα να δοκιμάσετε ή να με διορθώσετε στο παρακάτω παράδειγμα κώδικα σε python και να μου πείτε πως
σας β γάζει την Ελληνική γλώσσα
Κώδικας: Επιλογή όλων

# -*- coding: windows-1253/7 -*-

import urllib
sock = urllib.urlopen("http://www.in.gr")
htmlSource = sock.read()
sock.close()
print (htmlSource)
DarkLord
babeTUX
babeTUX
 
Δημοσιεύσεις: 81
Εγγραφή: 24 Ιαν 2009, 15:26
Τοποθεσία: Karvasaras
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό cyberpython » 10 Φεβ 2010, 19:30

DarkLord έγραψε:Ευχαριστώ πολύ για τις απαντήσεις σας, έκανα αυτό που μου πρότεινε ο xqtr και δούλεψε μια χαρά

xqtr έγραψε:Κατεβασε την σελιδα που επεξεργαζεσε με τον browser σου... και ανοιξε την με το gedit. Δοκιμασε διαφορες κωδικοσελιδες, μεχρι να βρεις αυτη που χρησιμοποιει το αρχειο .html. Η οποια κατα 99% θα ειναι η windows-1253/7


αλλά στη python τα πράγματα είναι διαφορετικά
θα ήθελα να δοκιμάσετε ή να με διορθώσετε στο παρακάτω παράδειγμα κώδικα σε python και να μου πείτε πως
σας β γάζει την Ελληνική γλώσσα
Κώδικας: Επιλογή όλων

# -*- coding: windows-1253/7 -*-

import urllib
sock = urllib.urlopen("http://www.in.gr")
htmlSource = sock.read()
sock.close()
print (htmlSource)


Αν δεις τον κώδικα της σελίδας, αναφέρει οτι η κωδικοποίηση είναι ISO-8859-7, οπότε:
Κώδικας: Επιλογή όλων
import urllib
sock = urllib.urlopen("http://www.in.gr")
htmlSource = sock.read()
sock.close()
print (htmlSource.decode('iso-8859-7'))
Κοινότητα ΕΛ/ΛΑΚ Οικονομικού Πανεπιστημίου Αθηνών / Ubuntu-gr / My Web Log
Επίπεδο Γνώσεων Linux: Μέτριο, Προγραμματισμός: Ναι, Aγγλικά: Καλά
Λειτουργικό : Ubuntu 10.04 - 32bits
Η/Υ : Intel Core2 4400@2 GHz / 2GB DDR2 RAM / GeForce 8400 GS 512MB / Creative SB Audigy SE
Άβαταρ μέλους
cyberpython
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 733
Εγγραφή: 14 Μάιος 2008, 13:22
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό DarkLord » 10 Φεβ 2010, 20:28

Ευχαριστώ αρχηγέ αυτό ήταν το λάθος που έκανα, έπρεπε να βάλω το .decode('iso-8859-7') :oops:
DarkLord
babeTUX
babeTUX
 
Δημοσιεύσεις: 81
Εγγραφή: 24 Ιαν 2009, 15:26
Τοποθεσία: Karvasaras
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό cyberpython » 11 Φεβ 2010, 20:26

RSS desktop widget σε Python και PyGtk:
Κώδικας στο Pastebin

Edit: Μη κάνετε κλικ στο download - δεν κατεβαίνει ολόκληρο! Πηγαίντε στο κάτω μέρος της σελίδας και κάντε copy-paste τον κώδικα.

Για να τρέξει χρειάζεται gtk, webkit, cairo και τα αντίστοιχα python bindings. Για εγκατάστασή τους στο Ubuntu 9.10:
Κώδικας: Επιλογή όλων
sudo apt-get install python-webkit python-gobject python-gtk2 python-gtk2-dev python-glade2 python-cairo


Εικόνα
Κοινότητα ΕΛ/ΛΑΚ Οικονομικού Πανεπιστημίου Αθηνών / Ubuntu-gr / My Web Log
Επίπεδο Γνώσεων Linux: Μέτριο, Προγραμματισμός: Ναι, Aγγλικά: Καλά
Λειτουργικό : Ubuntu 10.04 - 32bits
Η/Υ : Intel Core2 4400@2 GHz / 2GB DDR2 RAM / GeForce 8400 GS 512MB / Creative SB Audigy SE
Άβαταρ μέλους
cyberpython
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 733
Εγγραφή: 14 Μάιος 2008, 13:22
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό Dr.Paneas » 13 Μάιος 2010, 21:00

Μελετάω τώρα τα μαθήματα που έχετε μεταφράσει, και έχω την εξής απορία:
Όταν έχουμε βρόγχους ( while ή for ), ποιός ο λόγος να χρησιμοποιήσουμε το else ; Θέλω να πω ότι το else εκτελείται με τον τερματισμό του βρόγχου, οπότε είτε το γράψουμε είτε όχι, δεν έχουμε πρόβλημα. Αν το γράψουμε όμως, τότε θα αναγκαστούμε να πάμε ένα tab δεξία για να δείξουμε στην python ότι αναφερόμαστε στο codeblock του else, ενώ στην πραγματικότητα δεν αναφερόμαστε πουθενά, παρά επιστρέφουμε στην κύρια δομή μετά την έξοδο της λούπας. Άρα, μήπως το χρησιμοποιούμε για να δώσουμε έμφαση σε έναν που διαβάζει γρήγορα με τον μάτι τον κώδικα, τι ποια εντολή θέλουμε να εκτελείται ακριβώς μετά την λούπα ;

Προσπαθώ να καταλάβω την λογική, έστω και αν είναι προαιρετικό το else.
I'm Noob
Άβαταρ μέλους
Dr.Paneas
babeTUX
babeTUX
 
Δημοσιεύσεις: 18
Εγγραφή: 27 Απρ 2010, 01:28
Τοποθεσία: Salonicon Valley
Launchpad: drpaneas
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό sokoban4ever » 14 Μάιος 2010, 19:45

Dr.Paneas το else παίρνει τον έλεγχο της ροής του προγράμματος όταν τα προηγούμενα (while for if ) παύουν να είναι true
πχ
Κώδικας: Επιλογή όλων
>>> def test():
... x=0
... while x < 10 :
... print "x is less than 10"
... x+=1
... else :
... print " x < 10 is no longer true "

Κώδικας: Επιλογή όλων

>>> test()
x is less than 10
x is less than 10
x is less than 10
x is less than 10
x is less than 10
x is less than 10
x is less than 10
x is less than 10
x is less than 10
x is less than 10
x < 10 is no longer true


Κώδικας: Επιλογή όλων
>>> for i in xrange(10):
... print i
... else :
... print "done"
...
...
0
1
2
3
4
5
6
7
8
9
done


Στην περίπτωση ( που είναι και ποιο εύκολα αντιληπτό ) του if then else
to else μας εξασφαλίζει ότι η ροή του προγράμματος θα συνεχιστεί από μέσα από το else όταν και μόνο όταν η if <συνθήκη> είναι ψευδές
πχ
Κώδικας: Επιλογή όλων
>>> YouHaveNotUnderstandMe = False
>>> if YouHaveNotUnderstandMe:
... print "RTFM..."
... else:
... print "You have understand me"
...
You have understand me

επειδή η γλώσσα είναι imperative οτιδήποτε βάλεις μετά θα εκτελεστεί γραμμή προς γραμμή στην σειρά
αν δεν βάλεις else δεν μπορείς να έχεις έλεγχο της ροής
ελπίζω να βοήθησα
http://en.wikipedia.org/wiki/Imperative_programming
Θέλουμε και μπορούμε να έχουμε μια καλύτερη ζωή και όσο θα ζούμε θα προσπαθούμε να την αποκτήσουμε ακόμα και αν πεθάνουμε προσπαθώντας, και αν κάποια στιγμή λιγίσουμε έχουμε το επίπεδο να πούμε κουράστηκα λίγο να ,να ξαποστάσουμε , ώστε να συνεχίσουμε πάλι δυνατοί ξανά.

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

Re: Τα πάντα για την Python

Δημοσίευσηαπό Dr.Paneas » 16 Μάιος 2010, 01:38

ευχαριστώ πολύ sokoban4ever, ήσουν κατατοπιστικότατος. Επί της ευκαιρίας, διαβάζοντας το A Byte of Python κάπου λέει :
έγραψε:Για παράδειγμα, το κείμενο "Rise to vote, sir" είναι παλίνδρομο, αλλά το τρέχον πρόγραμμά μας δεν το λέει. Μπορείτε να αναπτύξετε το ανωτέρο πρόγραμμα για να το αναγνωρίσει σαν παλίνδρομο;


Το προγραμματάκι που έγραψα:
Κώδικας: Επιλογή όλων

#!/usr/bin/env python
# -*- coding: utf-8 -*-

def antistrofi(text):
return text[::-1]

def remove_chars(text):
removed_char_list = (' ', ',', '.', ';', '\'', '\"','\\','/')
for i in range(0,len(removed_char_list)):
text = text.replace(removed_char_list[i], '')
return text

def is_it_palidrome(text):
# Μετέτρεψε όλο το κείμενο σε πεζά (επειδή είναι case sensitive)
text = text.lower()

# Διώξε χαρακτήρες όπως space, τελείες, κόμμα κλπ
text = remove_chars(text)

# Αντέστρεψε το κείμενο
rvsText = antistrofi(text)

# Έλεξε αν τα δύο κείμενα έχουν ίδιους χαρακτήρες 1 προς 1
if text in rvsText:
return True
else:
return False

phrase = input('Πληκτρολογήστε μία φράση: ')

if is_it_palidrome(phrase):
print("Το κείμενο είναι παλινδρομο")
else:
print("Το κείμενο δεν είναι παλινδρομο")
I'm Noob
Άβαταρ μέλους
Dr.Paneas
babeTUX
babeTUX
 
Δημοσιεύσεις: 18
Εγγραφή: 27 Απρ 2010, 01:28
Τοποθεσία: Salonicon Valley
Launchpad: drpaneas
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό sokoban4ever » 16 Μάιος 2010, 18:28

Thanks ,ωραίο προγραμματάκι :-)
ένα μικρό σχόλιο
για τον έλεγχο αν τα δύο κείμενα έχουν τους ίδιους χαρακτήρες ένα προς ένα
με τον τελεστή in δεν μπορείς να το τσεκάρεις μπορείς όμως να δείς πχ άμα ένα string περιέχει ένα χαρακτήρα (τουλάχιστον 1 φορά)
πχ
Κώδικας: Επιλογή όλων
>>> 'P' in 'Python'
True

>>> 'nohtyP' in 'Python'
False
Στην συνάρτηση is_it_palidrome μπορείς να κάνεις κάτι τέτοιο
Κώδικας: Επιλογή όλων
>>> counts=0
>>> for i in text":
... if "rvsText".count(i)==1:
... counts +=1
else :
return False
... if len(text) == counts:
return True

ή αλλιώς
Κώδικας: Επιλογή όλων
>>> if list(reversed(rvsText)) == list(text):
return True
else :
return False

keep on ;) :-)
Θέλουμε και μπορούμε να έχουμε μια καλύτερη ζωή και όσο θα ζούμε θα προσπαθούμε να την αποκτήσουμε ακόμα και αν πεθάνουμε προσπαθώντας, και αν κάποια στιγμή λιγίσουμε έχουμε το επίπεδο να πούμε κουράστηκα λίγο να ,να ξαποστάσουμε , ώστε να συνεχίσουμε πάλι δυνατοί ξανά.

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

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

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι