sotirisPy έγραψε:
δημιουργηστε ενα προγραμμα που
1 Μετραει ποσους χαρακτηρες υπαρχει σε ενα αρχειο
2 Ποσες λεξεις υπαρχουν
3 Ποσες προτασεις υπαρχουν
Καλησπερα και χρονια πολλα ξεκινησα να κανω το πρωτο αλλα εχω ενα προβλημα μου χτηπαει λαθος
ο compiler στον counter καταρχας ο κωδικας μου ειναι σωστος?
fw = open('a.txt','r')
running = True
counter = 0
while running:
text = fw.read()
if text is chr:
counter +=1
print("to arxeio exei xarakthres : ",counter)
Με μια γενική απάντηση, ο κώδικας σου είναι εντελώς λάθος.
Καταρχάς η read() διαβάζει όλο το αρχείο με την μία επομένως
δεν χρειάζεται να το έχεις μέσα σε ένα loop.Δεύτερων το if text is chr δεν θα βγει αληθές ακόμα και αν το text είναι
χαρακτήρας. Δεν χρειάζεται καν να κάνεις έναν έλεγχο.
Αν επίσης έχω καταλάβει καλά, νομίζεις ότι χαρακτήρες είναι
μόνο a,b,c κτλ και όχι το κενό και άλλα παρόμοια που ονομάζονται white spaces, και αυτός μάλλον είναι ο λόγος που
έβαλες τον έλεγχο.
Το μόνο που πρέπει να κάνεις είναι το εξής:
file = open("file.txt", "r") #Άνοιγμα του αρχείου.
text = file.read() #Διάβασμα του αρχείου.
file.close() #Κλείσιμο του αρχείου.
list_text = list(text) #Μετατροπή του text σε μια λίστα.
#Εδώ παίρνω το μέγεθος της λίστας
#το οποίο όμως είναι και το πόσοι
#χαρακτήρες υπάρχουν στο αρχείο.
characters_number = len(list_text)
print("Το αρχείο περιέχει",characters_number,"χαρακτήρες.")
Όταν κάνω αυτό text = file.read() στο text αποθηκεύετε μια
συμβολοσειρά(string) με όλους τους χαρακτήρες του κειμένου
(συμπεριλαμβανομένων και τον κενών και τον χαρακτήρα αλλαγής
γραμμής \n).Κάνε ένα print το text και θα δεις ότι στην οθόνη
θα εμφανιστεί ακριβώς το ίδιο κείμενο με το αρχείο.
Με αυτό list_text = list(text) δημιουργώ μία λίστα η οποία
περιέχει όλους τους χαρακτήρες του text.Αυτό που καταφέρνω
είναι ότι τώρα μπορώ να χρησιμοποιήσω την συνάρτηση len()
για να πάρα το μέγεθος της λίστας.Το μέγεθός της λίστα είναι
ακριβός το ίδιο με τον αριθμό τον χαρακτήρων που υπάρχει στο
αρχείο.Κάνε ένα print και την λίστα για να το δεις και μόνος
σου.
Άμα όμως η άσκηση λέει ότι θέλει των αριθμώ όλων των χαρακτήρων από το αρχείο εκτός από τα κενά και τον χαρακτήρα
αλλαγής γραμμής τότε ο αλγόριθμος γίνετε λίγο ποιο περίπλοκος
διότι χρειάζεται έλεγχος.