Συζήτηση
Γεια χαρά, Επισκέπτης
Όνομα χρήστη: Κωδικός: Να με θυμάσαι

ΘΕΜΑ: εισοδος δεδομενων απο το πληκτρολογιο...

εισοδος δεδομενων απο το πληκτρολογιο... 7 Χρόνια 3 Μήνες πριν #4054

  • ks
  • Το Άβαταρ του/της ks
  • Αποσυνδεμένος
  • py____
  • Δημοσιεύσεις: 9
Οταν σε καποιο προγραμμα που φτιαχνω χρειαζεται ο χρηστης να πληκτρολογησει κατι, χρησιμοποιω το raw_input() και επειτα ελεγχω τα δεδομενα...

Εχω ακουσει ομως οτι υπαρχει και πιο ευκολος τροπος, με τον οποιο δεν χρειαζεται να περιμενεις μεχρι ο χρηστης να πατησει enter για να ελεγξεις κατα ποσον ειναι σωστη η εισοδος δεδομενων, γιατι ελεγχεις ενα προς ενα ο,τι πληκτρολογειται...

Ξερετε μηπως ποιος μπορει να ειναι ο τροπος αυτος;
Η αληθεια ειναι οτι οταν μου το ειχαν πει, δεν ρωτησα, αλλα τωρα σε ενα προγραμμα που δουλευω, το user input πρεπει να ειναι πολυυ συγκεκριμενο, και το raw_input() μαλλον μου κανει τη ζωη δυσκολη (πρεπει να το ελεγχω τουλαχιστον με 7 διαφορετικους τροπους ως προς την ορθοτητα)...

Σας παρακαλω οποιος μπορει, να με βοηθησει αμεσα...
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

εισοδος δεδομενων απο το πληκτρολογιο... 7 Χρόνια 3 Μήνες πριν #4056

  • Theo
  • Το Άβαταρ του/της Theo
  • Αποσυνδεμένος
  • pytho_
  • Δημοσιεύσεις: 249
  • Ληφθείσες Ευχαριστίες 70
stackoverflow.com/questions/3523174/raw-...thout-pressing-enter

μήν ξεχάσεις να κάνεις το decode()
if msvcrt.getch().decode() == 'S':
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

εισοδος δεδομενων απο το πληκτρολογιο... 7 Χρόνια 3 Μήνες πριν #4061

  • ks
  • Το Άβαταρ του/της ks
  • Αποσυνδεμένος
  • py____
  • Δημοσιεύσεις: 9
..Θα μπορουσες μηπως να μου δωσεις ενα παραδειγμα;

το msvcrt.getch διαβαζει μονο ενα γραμμα, το οποιο και δεν μου εμφανιζει στην οθονη...

Αν δλδ θελω να διαβασω απο το πληκτρολογιο μια λεξη, τι πρεπει να γραψω;
πχ αν θελω να ελεγχω οσο πληκτρολογει ο χρηστης, οτι η λεξη που τελικα θα μου δωσει ειναι 4γραμματων, και δεν περιεχει το συμβολο #
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

εισοδος δεδομενων απο το πληκτρολογιο... 7 Χρόνια 3 Μήνες πριν #4063

  • Theo
  • Το Άβαταρ του/της Theo
  • Αποσυνδεμένος
  • pytho_
  • Δημοσιεύσεις: 249
  • Ληφθείσες Ευχαριστίες 70
Γιατί δεν θές ο χρήστης να πατάει το enter;
Ο χρήστης μπορεί να γράψει και να σβήσει κάτι πριν πατήσει το enter
Δεν ξέρω ποιό ακρίβώς είναι το θέμα που θές να λύσεις.
Εάν είναι όπως το περιγράφεις γιατί δεν σε καλύπτεί πχ το
eisodos=input('Μύνημα :')
if len(eisodos)==4 and ('#' not in eisodos):

Εάν θες το γράμμα που παίρνει η getch να εμφανίζεται χρησιμοποίησε την getche
docs.python.org/3/library/msvcrt.html?hi...msvcrt#msvcrt.getche
Αν θες να διαβάζει περισσότερους από 1 χαρακτήρες γράψε λίγο κώδικα να το κάνει
π.χ
message=''
while len(message)<5 and ('#' not in message):
  message+=msvcrt.getche().decode()
Πιστεύω όμως ότι είναι λάθος προσέγγιση
Τελευταία διόρθωση: 7 Χρόνια 2 Μήνες πριν από Theo.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

εισοδος δεδομενων απο το πληκτρολογιο... 7 Χρόνια 2 Μήνες πριν #4072

  • pmav99
  • Το Άβαταρ του/της pmav99
  • Αποσυνδεμένος
  • Author
  • Δημοσιεύσεις: 684
  • Ληφθείσες Ευχαριστίες 111
Εχω ακουσει ομως οτι υπαρχει και πιο ευκολος τροπος, με τον οποιο δεν χρειαζεται να περιμενεις μεχρι ο χρηστης να πατησει enter για να ελεγξεις κατα ποσον ειναι σωστη η εισοδος δεδομενων, γιατι ελεγχεις ενα προς ενα ο,τι πληκτρολογειται...
Και αν δηλαδή πατήσει ο χρήστης κάτι που δεν είναι σωστό τι θα κάνεις; Ποια είναι η σωστή αντίδραση; Μην κάνεις τη ζωή σου δύσκολη... Πάρε το input κάνε validation και αν χρειαστεί ζητάς ξανά το input
def get_message():
    return raw_input("What is your message? ")
 
def validate_message(message):
    """ Validates message and returns True/False """
    if len(message) != 4:
        return False
    if not message.isdigit():
        return False
    # ... more checks
    return True
 
message = get_message()
while not validate_message(message):
    print("Your message was invalid, please try again.")
    message = get_message()
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Συντονιστές: pmav99
Χρόνος δημιουργίας σελίδας: 0.274 δευτερόλεπτα

Μοιράσου το!

Powered by CoalaWeb

Λίστα Ταχυδρομείου