Figantu Δημοσ. 20 Δεκεμβρίου 2021 Δημοσ. 20 Δεκεμβρίου 2021 Η ασκηση ειναι η εξης: Γράψτε πρόγραμμα που να διαβάζει ένα αλφαριθμητικό που πληκτρολογεί ο χρήστης και βρίσκει αν είναι παλίνδρομο, δηλ. αν διαβάζεται το ίδιο και με την αντίστροφη φορά ανάγνωσης (πχ. τα αλφαριθμητικά ‘ANNA’, ‘SAKAS’, ‘4KEK4’ κλπ. είναι παλίνδρομα). Οι λεπτομέρειες του κώδικα έχουν ως εξής: Το πρόγραμμα διαβάζει με input ένα αλφαριθμητικό και το συνδέει με το όνομα (δηλ. μεταβλητή) s που θα έχετε στον κώδικά σας. Στη συνέχεια ελέγχει αν το s αποτελείται από ένα μόνον χαρακτήρα. Αν ναι, τότε εμφανίζει το μήνυμα ‘Μήκος = 1’ και σταματά χωρίς να κάνει κάτι άλλο. Αν όχι (δηλ. το s έχει περισσότερους από 1 χαρακτήρες), τότε ελέγχει αν το s είναι παλίνδρομο. Αν το s είναι παλίνδρομο τότε το πρόγραμμα δημιουργεί και εμφανίζει στην οθόνη: ένα λεξικό με όνομα adict που περιλαμβάνει ένα μόνο ζεύγος με κλειδί το s και τιμή το μήκος του s, και μία λίστα alist που περιλαμβάνει ως στοιχεία της τους χαρακτήρες του s Αν το s δεν είναι παλίνδρομο το πρόγραμμα εμφανίζει το μήνυμα ‘Δεν είναι παλίνδρομο’ και σταματά (δηλ. δεν γίνεται καμιά επανάληψη του προγράμματος). ΠΑΡΑΔΕΙΓΜΑ ΕΚΤΕΛΕΣΗΣ Αν δοθεί στην είσοδο το αλφαριθμητικό ‘ANNA’ το πρόγραμμα στην έξοδο πρέπει να εμφανίσει: {'ΑΝΝΑ': 4} ['Α', 'Ν', 'Ν', 'Α'] Πριν υποβάλετε παρακαλούμε ελέγξτε αν ο κώδικάς σας για είσοδο ‘ΑΝΝΑ’ εμφανίζει τα παραπάνω αποτελέσματα. ΠΡΟΣΟΧΗ στα ΟΝΟΜΑΤΑ s για να διαβάσετε από το πληκτρολόγιο το αλφαριθμητικό που εισάγει ο χρήστης adict και alist για το λεξικό και τη λίστα αντίστοιχα που δημιουργεί το πρόγραμμα όταν το s είναι παλίνδρομο ΥΠΟΔΕΙΞΕΙΣ Θεωρούμε πως ο χρήστης πληκτρολογεί πάντοτε κεφαλαία (και για ελληνικά: άτονα) και τουλάχιστον 1 χαρακτήρα (γράμμα ή αριθμό). Επομένως δεν χρειάζεται ο κώδικάς σας να κάνει κάποιον πρόσθετο έλεγχο όσον αφορά την είσοδο που δίνει ο χρήστης. Εχω κολλησει στην δημιουργια alist import math s = input("") l= len(s) if l == 1: print('Μήκος=1') if l > 1 and s == s[::-1]: adict = {s:l} alist = {} print(adict) print(alist) else: print('Δεν είναι παλίνδρομο') YΓ ειμαι καινουργιος στον ποργραμματισμο και μαθαινω σιγα σιγα
SOADNICK Δημοσ. 20 Δεκεμβρίου 2021 Δημοσ. 20 Δεκεμβρίου 2021 30 λεπτά πριν, Figantu είπε s για να διαβάσετε από το πληκτρολόγιο το αλφαριθμητικό που εισάγει ο χρήστης adict και alist για το λεξικό και τη λίστα αντίστοιχα που δημιουργεί το πρόγραμμα όταν το s είναι παλίνδρομο if l > 1 and s == s[::-1]: adict = {s:l} alist = {} print(adict) print(alist) else: print('Δεν είναι παλίνδρομο') Με το {} φτιάχνεις κενό λεξικό, όχι λίστα. Δες εδώ για hint: https://www.programiz.com/python-programming/methods/built-in/list
Figantu Δημοσ. 20 Δεκεμβρίου 2021 Μέλος Δημοσ. 20 Δεκεμβρίου 2021 Eυχαριστω πολύ για την βοηθεια. Το εκανα αυτο που λες και τωρα το προγραμμα τρεχει αψογα. Επισης διόρθωσα το λαθος που έκανα απο if if else σε if elif else. 1
Επισκέπτης Δημοσ. 21 Δεκεμβρίου 2021 Δημοσ. 21 Δεκεμβρίου 2021 (επεξεργασμένο) @Figantu Τρία πραγματάκια: 1) Όταν παίρνεις είσοδο, καλό είναι να δίνεις και μία ιδέα στον άλλον σχετικά με το τι περιμένεις (π.χ. "Δώσε μία λέξη: ") 2) Τη βιβλιοθήκη math γιατί την κάνεις import; Σκοπεύεις να τη χρησιμοποιήσεις κάπου; 3) Τη λίστα τη γεμίζεις με κάτι; Επεξ/σία 21 Δεκεμβρίου 2021 από Orestis_G
k33theod Δημοσ. 21 Δεκεμβρίου 2021 Δημοσ. 21 Δεκεμβρίου 2021 (επεξεργασμένο) Ξέχασες να γράψεις κώδικα για τα 2 "σταματά". Τι εννοώ; Στη συγκεκριμένη περίπτωση δεν υπάρχει πρόβλημα. Σκέψου όμως ότι εσύ ή κάποιος άλλος γράφει παρακάτω κώδικα για το τι γίνεται με τα παλίνδρομα, πχ τα βάζω σε ένα αρχείο με όνομα palindroms.txt. Κάνει λοιπόν μια συνάρτηση add_palindrome_to_file(file, palindrome) και την καλεί add_palindrome_to_file('palindromes.txt', s). Ελπίζω να καταλαβαίνεις την ουσία. Επεξ/σία 21 Δεκεμβρίου 2021 από k33theod
Figantu Δημοσ. 21 Δεκεμβρίου 2021 Μέλος Δημοσ. 21 Δεκεμβρίου 2021 12 ώρες πριν, Orestis_G είπε @Figantu Τρία πραγματάκια: 1) Όταν παίρνεις είσοδο, καλό είναι να δίνεις και μία ιδέα στον άλλον σχετικά με το τι περιμένεις (π.χ. "Δώσε μία λέξη: ") 2) Τη βιβλιοθήκη math γιατί την κάνεις import; Σκοπεύεις να τη χρησιμοποιήσεις κάπου; 3) Τη λίστα τη γεμίζεις με κάτι; 1) καλη συμβουλη 2) λογω συνηθειας μου ξεφυγε αλλα δεν επηρεαζει το πρόγραμμα οπότε δεν ξερω αν ειναι σωστο ή λαθος που υπαρχει 3)με το πληθος των αλφαριθμητικών χαρακτήρων. Δεν ειναι ολοκληρωμενο το προγραμμα που έγραψα καθως ειχα κολλησει. 9 ώρες πριν, k33theod είπε Ξέχασες να γράψεις κώδικα για τα 2 "σταματά". Τι εννοώ; Στη συγκεκριμένη περίπτωση δεν υπάρχει πρόβλημα. Σκέψου όμως ότι εσύ ή κάποιος άλλος γράφει παρακάτω κώδικα για το τι γίνεται με τα παλίνδρομα, πχ τα βάζω σε ένα αρχείο με όνομα palindroms.txt. Κάνει λοιπόν μια συνάρτηση add_palindrome_to_file(file, palindrome) και την καλεί add_palindrome_to_file('palindromes.txt', s). Ελπίζω να καταλαβαίνεις την ουσία. Δεν εχουμε κανει ακομα τετοια πιο συνθετα οποτε δεν χρειάζεται να το βαλω στο προγραμμα. Anyway η γνωση ειναι δυναμη.
liakos18 Δημοσ. 22 Δεκεμβρίου 2021 Δημοσ. 22 Δεκεμβρίου 2021 Μια μικρή λεπτομέρεια: Η σύγκριση l > 1 είναι άχρηστη καθώς στην εκφώνηση υπάρχει η παραδοχή ότι ο χρήστης θα εισάγει τουλάχιστον έναν χαρακτήρα. Όποτε αν δεν ισχύει το πρώτο if, τότε ισχύει σίγουρα το l >1 άρα δεν υπάρχει ανάγκη για έλεγχο. 🙂
Figantu Δημοσ. 22 Δεκεμβρίου 2021 Μέλος Δημοσ. 22 Δεκεμβρίου 2021 10 ώρες πριν, liakos18 είπε Μια μικρή λεπτομέρεια: Η σύγκριση l > 1 είναι άχρηστη καθώς στην εκφώνηση υπάρχει η παραδοχή ότι ο χρήστης θα εισάγει τουλάχιστον έναν χαρακτήρα. Όποτε αν δεν ισχύει το πρώτο if, τότε ισχύει σίγουρα το l >1 άρα δεν υπάρχει ανάγκη για έλεγχο. 🙂 Το ξερω απλα επειδη δεν ειχα βαλει την elif και το αφησα με if καθε φορα που εβαζα ενα αλφαριθμητικο μου εμφανιζε μηκος=1 και δεν ειναι παλινδρομο. Μεχρι να δω οτι ειχα κάνει αυτο το λαθος το έκανα ετσι μπας και διορθωθεί αλλα οταν το αντιλήφθηκα την εσβησα την συγκριση
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα