Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Η ασκηση ειναι η εξης:

Γράψτε πρόγραμμα που να διαβάζει ένα αλφαριθμητικό που πληκτρολογεί ο χρήστης και βρίσκει αν είναι παλίνδρομο, δηλ. αν διαβάζεται το ίδιο και με την αντίστροφη φορά ανάγνωσης (πχ. τα αλφαριθμητικά ‘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Γ ειμαι καινουργιος στον ποργραμματισμο και μαθαινω σιγα σιγα

Δημοσ.
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

Δημοσ.

Eυχαριστω πολύ για την βοηθεια. Το εκανα αυτο που λες και τωρα το προγραμμα τρεχει αψογα. Επισης διόρθωσα το λαθος που έκανα απο if if else σε if elif else.

  • Like 1
Δημοσ. (επεξεργασμένο)

@Figantu Τρία πραγματάκια:

1) Όταν παίρνεις είσοδο, καλό είναι να δίνεις και μία ιδέα στον άλλον σχετικά με το τι περιμένεις (π.χ. "Δώσε μία λέξη: ")
2) Τη βιβλιοθήκη math γιατί την κάνεις import; Σκοπεύεις να τη χρησιμοποιήσεις κάπου;
3) Τη λίστα τη γεμίζεις με κάτι;

Επεξ/σία από Orestis_G
Δημοσ. (επεξεργασμένο)

Ξέχασες να γράψεις κώδικα για τα 2 "σταματά". Τι εννοώ;

Στη συγκεκριμένη περίπτωση δεν υπάρχει πρόβλημα. Σκέψου όμως ότι εσύ ή κάποιος άλλος γράφει παρακάτω κώδικα για το τι γίνεται με τα παλίνδρομα, πχ τα βάζω σε ένα αρχείο με όνομα palindroms.txt. Κάνει λοιπόν μια συνάρτηση add_palindrome_to_file(file, palindrome) και την καλεί add_palindrome_to_file('palindromes.txt', s). Ελπίζω να καταλαβαίνεις την ουσία.

 

Επεξ/σία από k33theod
Δημοσ.
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 η γνωση ειναι δυναμη.

Δημοσ.

Μια μικρή λεπτομέρεια: Η σύγκριση  l > 1 είναι άχρηστη καθώς στην εκφώνηση υπάρχει η παραδοχή ότι ο χρήστης θα εισάγει τουλάχιστον έναν χαρακτήρα. Όποτε αν δεν ισχύει το πρώτο if, τότε ισχύει σίγουρα το l >1 άρα δεν υπάρχει ανάγκη για έλεγχο. 🙂

Δημοσ.
10 ώρες πριν, liakos18 είπε

Μια μικρή λεπτομέρεια: Η σύγκριση  l > 1 είναι άχρηστη καθώς στην εκφώνηση υπάρχει η παραδοχή ότι ο χρήστης θα εισάγει τουλάχιστον έναν χαρακτήρα. Όποτε αν δεν ισχύει το πρώτο if, τότε ισχύει σίγουρα το l >1 άρα δεν υπάρχει ανάγκη για έλεγχο. 🙂

Το ξερω απλα επειδη δεν ειχα βαλει την elif και το αφησα με if καθε φορα που εβαζα ενα αλφαριθμητικο μου εμφανιζε μηκος=1 και δεν ειναι παλινδρομο. Μεχρι να δω οτι ειχα κάνει αυτο το λαθος το έκανα ετσι μπας και διορθωθεί αλλα οταν το αντιλήφθηκα την εσβησα την συγκριση

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...