Λοιπόν είναι πολύ απλό. Εφόσον σε έχουν πει να κάνεις το παιχνίδι κρεμάλα και να διαβάζεις τις λέξεις που θα μαντεύει ο χρήστης από ένα αρχείο πρέπει να σκεφτείς τα εξής:
1) Η κάθε λέξη στο αρχείο θα βρίσκεται σε διαφορετική γραμμή έτσι ώστε να μπορείς να τις διαβάσεις
πολύ εύκολα με τον τρόπο που θα σε δείξω.
Τα υπόλοιπα θα τα πούμε ποιο μετά. Πες τώρα ότι έχεις το εξής αρχείο λέξεις.txt:
γαλα
πετρα
λακουβα
καραμελα
αγγελαδα
καραγκιοζης
σκαντζoχοιρος
Όπως βλέπεις η κάθε λέξη χωρίζεται με αλλαγή γραμμής και θα καταλάβεις αργότερα γιατί αυτό
είναι σημαντικό!
Πάμε τώρα στον κώδικα:
file = open("Λέξεις.txt", 'r') #Άνοιγμα αρχείου.
myWords = [] #Δημιουργία κενής λίστας.
#Αυτο το loop διαβάζει μία μία όλες
#τις γραμμές του αρχείου, αφαιρεί
#τον χαρακτήρα new line '\n' και στην
#συνέχεια προσθέτει την κάθε γραμμή
#σε μια λίστα.
for line in file.readlines():
line = line.replace("\n", "") #Αφαιρώ την χαρακτήρα new line '\n' από την συγκεκριμένη γραμμή.
myWords.append(line) #Προσθέτω την συγκεκριμένη γραμμή στην λίστα μου.
Αν πρόσθεσης και μια τελευταία εντολή
θα δεις την εξής έξοδο:
['γαλα', 'πετρα', 'λακουβα', 'καραμελα', 'αγγελαδα', 'καραγκιοζης', 'σκαντζοχοιρος']
που σημαίνει ότι επιτυχώς διάβασα τις λέξεις από το αρχείο και τις αποθήκευσα μέσα σε μια λίστα
και τώρα μπορώ να τις κάνω ότι θέλω!
Πάμε τώρα γραμμή προς γραμμή να δούμε πως δουλεύει αυτό!
Εδώ απλός ανοίγω το αρχείο
ώστε να διαβάσω συμβολοσειρές!
file = open("Λέξεις.txt", 'r') #Άνοιγμα αρχείου.
Εδώ απλός δημιουργώ μια άδεια λίστα για να μπορέσω αργότερα να
προσθέσω σε αυτήν δεδομένα.
myWords = [] #Δημιουργία κενής λίστας.
Ας δούμε τώρα αναλυτικά πως συμπεριφέρεται αυτήν η επανάληψη!
for line in file.readlines():
line = line.replace("\n", "")
myWords.append(line)
Προτού συνεχίσουμε θα ήθελα να σε εξηγήσω την κάνει το
.
Αυτήν η μέθοδος
readlines() επιστρέφει μια λίστα με όλες τις
γραμμές που υπάρχουν στο αρχείο μας. Στο συγκεκριμένο αρχείο, η λίστα μας θα ήταν αυτή:
['γαλα\n', 'πετρα\n', 'λακουβα\n', 'καραμελα\n', 'αγγελαδα\n', 'καραγκιοζης\n', 'σκαντζοχοιρος']
Όπως βλέπεις όμως το πρόβλημα είναι ότι διαβάζεται και ο χαρακτήρας new line κάτι το οποίο
δεν το θέλουμε διότι θα είχαμε πρόβλημα στον έλεγχο με τον χρήστη. Δηλαδή αν ο χρήστης έδινε
'γαλα' και εσύ έλεγχες
'γαλα' == 'γαλα\n' προφανώς δεν θα ήταν το ίδιο. Άρα πρέπει να
εξαφανίσω το new line από την συμβολοσειρά μου.
Για να το πετύχω αυτό "loop-άρω" στην κάθε γραμμή και της αφαιρώ τον χαρακτήρα new line.
Πάμε να δούμε πως το πετυχαίνω αυτό:
Πρώτα η μεταβλητή line = 'γαλα\n' . Στην συνέχεια αφαιρώ τον '\n' με την εντολή
line = line.replace("\n", "")
και στην συνέχεια την προσθέτω στην
λίστα μου με την εντολή
Ξανά συνεχίζει η επανάληψη και το τώρα line = 'πετρα\n'. Ξανά γίνονται τα ίδια
πράματα και το loop συνεχίζει μέχρι και το τελευταίο στοιχείο της λίστας.
Το εξήγησα όσο καλύτερα μπορούσα. Εάν δεν το κατάλαβες τότε δεν ξέρεις τη
κάνει αυτό το loop
for line in file.readlines():
.
Εάν δεν το γνωρίζεις ρώτα με δεν είναι κακό, συνήθως οι νέοι προγραμματιστές
γνωρίζουν μόνο αυτόν τον τρόπο χρήσης της for
.
Μόλις το καταλάβεις αυτό τότε πες μου να συνεχίσω για το πως πρέπει να σκεφτείς και για
τα υπόλοιπα