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

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

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

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

Δημοσίευσηαπό Ilias95 » 11 Σεπ 2013, 01:06

@medigeek
Ναι και εγώ σε διάφορα links στο SO έπεσα και σε κάποια δεν έβγαλα άκρη, κάποια δεν τα κατάλαβα και κάποια με τρόμαξε το μακροσκελές της απάντησης και δεν τα διάβασα. Αλλά θα κάνω άλλη μια προσπάθεια γιατί μάλλον αυτός πρέπει να είναι ο μόνος τρόπος να μάθω την αλήθεια... :P

@konn
Η java δεν παράγει εκτελέσιμο (αν και υπάρχει και αυτή η δυνατότητα), αλλά ο compiler της παράγει ένα .class αρχείο που περιέχει bytecode. Αυτό το αρχείο μετά μπορεί να μεταφερθεί σε οποιαδήποτε πλατφόρμα και να εκτελεστεί απ' την JVM. Η python μπορεί να διερμηνευτεί κατευθείαν απ' τον interpreter χωρίς να προηγηθεί bytecode, αλλά αν τρέξεις ένα πρόγραμμα με python θα δημιουργήσει το bytecode και την επόμενη φορά το πρόγραμμα θα εκτελεστεί από εκεί. Την διαφορά στα 2 ψάχνω.
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

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

Δημοσίευσηαπό Tassos10 » 21 Οκτ 2013, 09:06

Παιδιά, να σας ρωτήσω, όταν θέλω σε python3 να κάνω κάτι σαν είσοδος χρήστη ας πούμε :P π.χ. :
Κώδικας: Επιλογή όλων
kodikos = (input("δώσε κάτι : "))
if kodikos == "tasos" :
......

έτσι οκ παίζει. εγώ όμως θέλω να το κάνω κάπως έτσι :
Κώδικας: Επιλογή όλων
if kodikos == "tasos" or "kostas" :
......

Γιατί όμως έτσι δε τρέχει; τι γίνεται με το or, το έχω ξανά χρησιμοποιήσει και πάλι τα ίδια προβλήματα, να μην τρέχει σωστά είχα ή να το αναγνωρίζει ως λάθος ;;
Spoiler: show
1 Γνώσεις Linux: Πρώτα βήματα ┃ Προγραμματισμού: Πρώτα βήματα ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 12.04 precise 3.2.0-50-generic 64bit (el_GR.UTF-8, Unity ubuntu), Ubuntu 3.2.0-49-generic
3 Intel Core2 Quad CPU Q9400 2.66GHz ‖ RAM 3954 MiB ‖ ASRock G31M-S
4 nVidia G92 [GeForce 9800 GT] [10de:0614] {nvidia}
5 eth0: Realtek RTL8101E/RTL8102E PCI Express Fast Ethernet controller [10ec:8136] (rev 02)
Tassos10
dudeTUX
dudeTUX
 
Δημοσιεύσεις: 472
Εγγραφή: 29 Μαρ 2010, 10:43
Εκτύπωση

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

Δημοσίευσηαπό kamar » 21 Οκτ 2013, 11:52

Δοκίμασε αυτό:

Κώδικας: Επιλογή όλων
kodikos = input('Login name: ')

if kodikos == "tasos" or kodikos == "kostas" :
print(kodikos)
else:
print("False")


EDIT
Μπορείς επίσης να το κάνεις κάπως έτσι:

Κώδικας: Επιλογή όλων
if kodikos in ['kostas', 'tasos']:
print(kodikos)
......
1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 14.04 trusty 3.13.0-91-generic 64bit (el_GR.UTF-8, Unity ubuntu)
3 AMD A6-5400K APU with Radeon HD Graphics ‖ RAM 3347 MiB ‖ ASUS F2A55-M LK2 PLUS
4 Advanced Micro Devices, Inc. [AMD/ATI] Trinity [Radeon HD 7540D] [1002:9991] {radeon}
5 eth0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 09)
Άβαταρ μέλους
kamar
punkTUX
punkTUX
 
Δημοσιεύσεις: 166
Εγγραφή: 10 Μάιος 2008, 20:24
Τοποθεσία: Χανιά
Εκτύπωση

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

Δημοσίευσηαπό Tassos10 » 28 Οκτ 2013, 20:25

A!! Μάλιστα παίζει και το πρώτο ωραία.. απλώς έπρεπε να το κάνω όπως εσύ

Κώδικας: Επιλογή όλων
if kodikos == "tasos" or [b]kodikos ==[/b] "kostas" :
....


και όχι :
Κώδικας: Επιλογή όλων
if kodikos == "tasos" or "kostas" :

όπως το έκανα εγώ ^_^.

Το δεύτερο δε το δοκίμασα, διότι δεν το κατάλαβα.. είναι λίστα το :
Κώδικας: Επιλογή όλων
['kostas', 'tasos']
;;
Spoiler: show
1 Γνώσεις Linux: Πρώτα βήματα ┃ Προγραμματισμού: Πρώτα βήματα ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 12.04 precise 3.2.0-50-generic 64bit (el_GR.UTF-8, Unity ubuntu), Ubuntu 3.2.0-49-generic
3 Intel Core2 Quad CPU Q9400 2.66GHz ‖ RAM 3954 MiB ‖ ASRock G31M-S
4 nVidia G92 [GeForce 9800 GT] [10de:0614] {nvidia}
5 eth0: Realtek RTL8101E/RTL8102E PCI Express Fast Ethernet controller [10ec:8136] (rev 02)
Tassos10
dudeTUX
dudeTUX
 
Δημοσιεύσεις: 472
Εγγραφή: 29 Μαρ 2010, 10:43
Εκτύπωση

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

Δημοσίευσηαπό kamar » 29 Οκτ 2013, 00:29

Tassos10 έγραψε:A!! Μάλιστα παίζει και το πρώτο ωραία.. απλώς έπρεπε να το κάνω όπως εσύ

Κώδικας: Επιλογή όλων
if kodikos == "tasos" or [b]kodikos ==[/b] "kostas" :
....


και όχι :
Κώδικας: Επιλογή όλων
if kodikos == "tasos" or "kostas" :

όπως το έκανα εγώ ^_^.

Το δεύτερο δε το δοκίμασα, διότι δεν το κατάλαβα.. είναι λίστα το :
Κώδικας: Επιλογή όλων
['kostas', 'tasos']
;;


Πρακτικά λέει: αν ο κωδικός είναι μέρος της λίστας συνέχισε την επεξεργασία. Πλεονέκτημα έναντι της πρώτης λύσης είναι, ότι σε διευκολύνει αν έχεις πολλά στοιχεία για επεξεργασία.
1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 14.04 trusty 3.13.0-91-generic 64bit (el_GR.UTF-8, Unity ubuntu)
3 AMD A6-5400K APU with Radeon HD Graphics ‖ RAM 3347 MiB ‖ ASUS F2A55-M LK2 PLUS
4 Advanced Micro Devices, Inc. [AMD/ATI] Trinity [Radeon HD 7540D] [1002:9991] {radeon}
5 eth0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 09)
Άβαταρ μέλους
kamar
punkTUX
punkTUX
 
Δημοσιεύσεις: 166
Εγγραφή: 10 Μάιος 2008, 20:24
Τοποθεσία: Χανιά
Εκτύπωση

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

Δημοσίευσηαπό Tassos10 » 14 Δεκ 2013, 00:20

kamar έγραψε:
Πρακτικά λέει: αν ο κωδικός είναι μέρος της λίστας συνέχισε την επεξεργασία. Πλεονέκτημα έναντι της πρώτης λύσης είναι, ότι σε διευκολύνει αν έχεις πολλά στοιχεία για επεξεργασία.


Θα μπορούσαμε και αντί για:
Κώδικας: Επιλογή όλων
if kodikos in ['kostas', 'tasos']:
print(kodikos)
......

να έχουμε :

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

...
passwlist=['kostas','tasos']
..
if kodikos in passwlist:
print(kodikos)
......

έτσι, με το όνομα της λίστας, δε παίζει ρόλο;


Υ.Σ. : Συγνώμη που άργησα τόσο πολύ να απαντήσω.
Spoiler: show
1 Γνώσεις Linux: Πρώτα βήματα ┃ Προγραμματισμού: Πρώτα βήματα ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 12.04 precise 3.2.0-50-generic 64bit (el_GR.UTF-8, Unity ubuntu), Ubuntu 3.2.0-49-generic
3 Intel Core2 Quad CPU Q9400 2.66GHz ‖ RAM 3954 MiB ‖ ASRock G31M-S
4 nVidia G92 [GeForce 9800 GT] [10de:0614] {nvidia}
5 eth0: Realtek RTL8101E/RTL8102E PCI Express Fast Ethernet controller [10ec:8136] (rev 02)
Tassos10
dudeTUX
dudeTUX
 
Δημοσιεύσεις: 472
Εγγραφή: 29 Μαρ 2010, 10:43
Εκτύπωση

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

Δημοσίευσηαπό Ilias95 » 14 Δεκ 2013, 04:30

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

Ίσως είναι καλύτερα να χρησιμοποιήσεις και tuple αντί για list:
Κώδικας: Επιλογή όλων
if kodikos in ('kostas', 'tasos'):
print(kodikos)
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

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

Δημοσίευσηαπό Tassos10 » 14 Δεκ 2013, 11:04

Να χρησιμοποιήσω πλειάδα;
Οι πλειάδες όμως δεν είναι "στατικές" δε μπορώ να αλλάξω το περιεχόμενο τους, ενώ στην λίστα μπορώ να προσθέτω π.χ. κάποιον καινούριο χρήστη στην ίδια λίστα, έτσι δεν είναι;
Spoiler: show
1 Γνώσεις Linux: Πρώτα βήματα ┃ Προγραμματισμού: Πρώτα βήματα ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 12.04 precise 3.2.0-50-generic 64bit (el_GR.UTF-8, Unity ubuntu), Ubuntu 3.2.0-49-generic
3 Intel Core2 Quad CPU Q9400 2.66GHz ‖ RAM 3954 MiB ‖ ASRock G31M-S
4 nVidia G92 [GeForce 9800 GT] [10de:0614] {nvidia}
5 eth0: Realtek RTL8101E/RTL8102E PCI Express Fast Ethernet controller [10ec:8136] (rev 02)
Tassos10
dudeTUX
dudeTUX
 
Δημοσιεύσεις: 472
Εγγραφή: 29 Μαρ 2010, 10:43
Εκτύπωση

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

Δημοσίευσηαπό Ilias95 » 14 Δεκ 2013, 14:34

Εγώ αναφέρθηκα στην περίπτωση που έχεις δύο συγκεκριμένους κωδικούς και θες να ελέγχεις μόνο αυτούς. Οι tuples είναι γρηγορότερες απ' τις lists, αλλά είναι όντως immutable όπως αναφέρεις. Αν θες να προσθέτεις "χρήστες" τότε ναι, αναγκαστικά θα χρησιμοποιήσεις λίστα.
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

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

Δημοσίευσηαπό Tassos10 » 14 Δεκ 2013, 14:41

Ναι, απλώς το ανέφερα και εγώ για να το συζητήσουμε, την περίπτωση που θέλεις να προσθέτεις χρήστες.
Γιατί όμως οι πλειάδες ( tuples ), είναι πιο γρήγορες από τις λίστες ( lists ) ;;
Spoiler: show
1 Γνώσεις Linux: Πρώτα βήματα ┃ Προγραμματισμού: Πρώτα βήματα ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 12.04 precise 3.2.0-50-generic 64bit (el_GR.UTF-8, Unity ubuntu), Ubuntu 3.2.0-49-generic
3 Intel Core2 Quad CPU Q9400 2.66GHz ‖ RAM 3954 MiB ‖ ASRock G31M-S
4 nVidia G92 [GeForce 9800 GT] [10de:0614] {nvidia}
5 eth0: Realtek RTL8101E/RTL8102E PCI Express Fast Ethernet controller [10ec:8136] (rev 02)
Tassos10
dudeTUX
dudeTUX
 
Δημοσιεύσεις: 472
Εγγραφή: 29 Μαρ 2010, 10:43
Εκτύπωση

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

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