καλησπέρα παιδιά. μια επείγουσα βοήθεια παρακαλώ. σε python3 θέλω να ζητάω από τον χρήστη να γράψει ένα νούμερο και αυτό να προστεθεί στην λιστα. αν το νούμερο που γράψει έχει την μορφή 01, 02 τότε προστίθεται στην αρχή του προγράμματος χωρίς το 0, ενώ αν δεν έχει 0 τότε πάει στο τέλος. αν πατήσει q το πρόγραμμα σταματάει. με r αφαιρεί ένα στοιχείο από το τέλος ενώ με 0r από την αρχή.
ξεκίνησα να γράφω κάτι τέτοιο
αλλά εχω σκαλώσει, εκτός του ότι το παραπάνω βγάζει λάθη.Κώδικας:while True: if input("\n\n\nPlease enter a number to add it to the queue or press q to end the game: ") == 'q': break mylist=[] user_input = int(input("Enter a number: ")) mylist = user_input.append(i) print(input_list)
Εμφάνιση 1-9 από 9
-
04-11-17, 23:30 [python] user input in list #1
-
05-11-17, 14:11 Απάντηση: [python] user input in list #2
Πρώτον σε αυτό τον κώδικα που γίνεται ο έλεγχος αν ο χρήστης έχει δώσει αριθμό με την μορφή 0Χ ή Χ (όπου Χ ένας αριθμός).
Η append δεν συντάσσετε έτσι, συντάσσετε Όνομα λίστας.append(δεδομένα) και πάντα προσθέτει το στοιχείο στο τέλος της λίστας.
Αν θέλεις να εισάγεις κάποιο στοιχείο σε διαφορετική θέση της λίστας εκτός της τελευταίας χρησιμοποίησε την insert. Σύνταξη Όνομα λίστας.insert(δείκτης,δεδομένα)
Όπου δείκτης η θέση της λίστας στην οποία θέλεις να εισάγεις δεδομένα. Να έχεις υπόψιν ότι η αρίθμηση ξεκινάει από το 0 και όχι από το 1.Τα όνειρα που κάνω από τα 20 παρκάρουν στον ακάλυπτο νωρίς. Μα εσύ που με κοιτάς σαν λύτρωση ζωή παρκαρισμένη μην δεχτείς.
-
05-11-17, 19:40 Απάντηση: [python] user input in list #3
ευχαριστώ για την απάντηση.
το θέμα είναι ότι η λίστα αλλάζει δυναμικά και συνεχώς προστίθενται πράγματα. δεν μπορώ να προσθέσω σε σευγκεκριμένη θέση πχ list[5]=100 μιας και και δεν ξέρω ούτε τι νούμερο θα πληκτρολογήσει ο χρήστης αλλά ούτε και πόσα νούμερα θα βάλει ώστε να ξέρω την θέση τους.
μέχρι τώρα:
Κώδικας:queue = list() status = '' instructions = "\n\nAdd a number to the queue or q to exit: " while True: # -- convert the string inputs to int(), float() or whatever type you want # the program to operate on # response = input(status + instructions) response = response.lower() # -- lower case the string if response == 'q': break # try: number = int(response) # -- or float(response) except ValueError: status = "Ignoring non-integer input: " + response continue queue.append(response) status = "queue = " + str(queue) print(queue)
τέλος πως θα αφαιρέσω ένα νούμερο από το τέλος με r ή από την αρχή με 0r?
- - - Updated - - -
μέχρι τώρα έχω:
Κώδικας:import collections queue = list() status = '' instructions = "\n\nPlease enter an integer to add to queue or q to exit: " while True: response = input(status + instructions) response = response.lower() if response == 'q': break if response == 'r': #remove a number from right queue.pop() if response =='0r': #remove a number from left queue.popleft() # try: number = int(response) except ValueError: status = "Non integers are ignored: " + response continue queue.append(response) status = "queue = " + str(queue) #print(queue)
-δεν δουλεύει το r και το 0r. Αυτά αφαιρούν από δεξιά της λίστας και αριστερά αντίστοιχα.
-δεν έχω βρει τρόπο όταν ο χρήστης εισάγει έναν αριθμό που ξεκινά από 0, πχ 03, να αφαιρείται το 0 και να μπαίνει στην αρχή της λίστας μόνο το 3.
την βοήθεια σας παρακαλώ.
-
06-11-17, 12:23 Απάντηση: [python] user input in list #4
Δεν ξερω Python , αλλα αν συμπεριφερθεις στο 01 , 02 , κλπ σαν string και αφαιρεσεις απλως το 0 , ενω οταν προστιθεται αριθμος πχ 1 ,2 ,3 κλπ να τους μετατρεπεις σε ακεραιους?
- - - Updated - - -
Δηλαδη οπως το φανταζομαι το πρωτο τμημα της λιστας θα εχει strings με ταξινομηση, απο τον πινακα ASCII ή κατι και το δευτερο τμημα της λιστας ακεραιους αριθμους.
-
06-11-17, 14:34 Απάντηση: [python] user input in list #5
Θα πρέπει αρχικά να κάνεις έναν έλεγχο εάν το string (στοιχείο) που παίρνεις απο τον χρήστη ξεκινάει απο 0.
Εάν ναι, τότε το στοιχείο μπαίνει αριστερά της λίστας αλλά αφαιρώντας ταυτόχρονα το πρώτο χαρακτήρα. Άν όχι μπαίνει δεξιά (li + [a]).
Για να αφαιρέσουμε το πρώτο στοιχείο απο τη λίστα, χρησιμοποιείς την pop() με index 0 ενω το τελευταίο την pop() as-is.
*Εάν ο χρήστης, εισάγει το 0001, θα πρέπει να αφαιρεθούν όλα ή μόνο το πρώτο 0;Αν νομίζεις ότι μπορείς να το κάνεις καλύτερα, απόδειξέ το. Μή μένεις μόνο στα λόγια.
-
07-11-17, 01:36 Απάντηση: [python] user input in list #6
Φαίνεται ότι προσπαθείς να γράψεις κώδικα χωρίς να έχεις αποφασίσει ποια ακριβώς δομή θα έχει το προγραμμά σου.
Ξεκίνα τυπώνοντας σαφής οδηγίες στους χρήστες για το πως να χρησιμοποιήσουν το πρόγραμμα. Το Please enter an integer to add to queue or q to exit: δεν τους λέει ούτε πως να προσθέσουν αριθμό στην αρχή ή στο ΄τελος της λίστας, ούτε πως μπορούν να αφαιρέσουν κάποιο στοιχείο.
Μετά τι μπορεί να δώσει ο χρήστης σύμγωνα με τις οδηγίες που του έδωσες;
Έδωσε q;
Σε αυτή την περίπτωση πιθανών να θέλουμε να εμφανίσουμε την λίστα που έχει δημιουργηθεί μέχρι εκείνη την στιγμή και να τερματίσουμε το πρόγραμμα.
Έδωσε r;
Τότε θα πρέπει να ελέγξουμε αν το μήκος της λίστας είναι μεγαλύτερο από το 0.
Αν δεν είναι τότε σημαίνει ότι η λίστα είναι κενή και δεν υπάρχει νόημα να προσπαθήσουμε να αφαιρέσουμε κάποιο στοιχείο. Ενημερώνουμε τον χρήστη με μήνυμα και ξαναστέλνουμε τον έλεγχο του προγράμματος στην αρχή του βρόγχου
Αν το μήκος της είναι μεγαλύτερο από το 0 χρησιμοποιούμε την pop όπως σου είπαν για να αφαιρέσαουμε το τελευταίο στοιχείο της λίστας. Εναλακτικά μπορείς να χρησιμοποιήσεις και την del αλλά ας μην σε μπερδευώ.
Έδωσε 0r;
Τότε θα πρέπει να ελέγξουμε αν το μήκος της λίστας είναι μεγαλύτερο από το 0.
Αν δεν είναι τότε σημαίνει ότι η λίστα είναι κενή και δεν υπάρχει νόημα να προσπαθήσουμε να αφαιρέσουμε κάποιο στοιχείο. Ενημερώνουμε τον χρήστη με μήνυμα και ξαναστέλνουμε τον έλεγχο του προγράμματος στην αρχή του βρόγχου
Αν το μήκος της είναι μεγαλύτερο από το 0 χρησιμοποιούμε την pop όπως σου είπαν για να αφαιρέσαουμε το πρώτο στοιχείο της λίστας.
Αν δεν έδωσε τίποτα από τα πρώτα 2 τότε περιμένουμε να μας έδωσε έναν αριθμό ή μηδέν ακολουθούμενο από έναν αριθμό
Αυτό που έδωσε ο χρήστης έχει στην πρώτη θέση το 0 και έχει μήκος πάνω από 1 χαρακτήρα; (Εξήγηση: Ο χρήστης θα μπορούσε να δώσει τον αριθμό 0 που θα πρέπει να μπει στο τέλος, αν θέλει να δώσει τον αριθμό 0 και να μπει στην αρχή θα πρέπει να τον δώσει με την μορφή 00)
Αν ναι:
Μετέτρεψε την είσοδο του χρήστη σε integer. (Με αυτό τον τρόπο αν ο χρήστης δώσει 010 θα μείνει το 10 αλλά και το ίδιο αν δώσει 00010 αν θέλεις να αφαιρείτε μόνο το πρώτο 0 και να υπάρχουν τα υπόλοιπα δεν θα πρέπει να κάνεις την μετατροπή)
Χρησιμοποίησε την insert για να εισάγεις τον αριθμό στην πρώτη θέση της λίστας
διαφορετικά (αν όχι):
μετέτρεψε την είσοδο του χρήστη σε integer
χρησιμοποίησε την append για να εισάγεις το στοιχείο στο τέλος της λίστας
τέλος προγράμματος
Θα ήταν καλή ιδέα μετά από κάθε ενέργεια πάνω στην λίστα (προσθήκη,διαγραφή) να την παρουσιάζεις στον χρήστη αλλά αυτό φυσικά είναι προαιρετικό.
Την ποιο πάνω δομή του προγράμματος την έχω υλοποιήσει και σε κώδικα, αλλά μια που αυτό φαίνεται να είναι από κάποια εργασία σε κάποια σχολή, το να σου δώσει κάποιος έτοιμη την λύση σε μορφή κώδικα πρωτίστως θα κάνει ζημιά εσένα.
Ίσως τώρα να σου φανεί ως ευκολία αλλά αν δεν μάθεις να σκεφτεσαι για το πως θα φτιάξεις την δομή ενός προγράμματος αυτό θα φανεί στο τέλος στις εξετάσεις που δεν θα έχεις την πολυτέλεια να αναζητήσεις βοήθεια από τους άλλους.Τα όνειρα που κάνω από τα 20 παρκάρουν στον ακάλυπτο νωρίς. Μα εσύ που με κοιτάς σαν λύτρωση ζωή παρκαρισμένη μην δεχτείς.
-
07-11-17, 01:56 Απάντηση: [python] user input in list #7
Χμ εγω δεν διαβασα την εκφωνηση καλα , νομιζα οτι την ηθελες και ταξινομημενη δλδ πρωτα το 01 που θα γινει 1 μετα το 02 που θα γινει 2, μετα το 1 μετα το 2 κλπ. αλλα τελικα πουθενα δεν αναφερεις κατι τετοιο .... λαθος μου.
-
07-11-17, 16:50 Απάντηση: [python] user input in list #8
Στην περιγραφή που σου έκανε προηγουμένως θέλει μια πολύ μικρή διόρθωση. Συγκεκριμένα όταν είσαι στην περίπτωση 0 και αριθμός, π.χ. 05 θα πρέπει πριν δοκιμάσεις να το μετατρέψεις σε ακέραιο να αφαιρέσεις το 0.
Μα γιατί θα ρωτήσεις, η συνάρτηση int δεν θα το κάνει αυτόματα;
Θα το κάνει, αλλά σύμφωνα με τις οδηγίες που έχεις δώσει στον χρήστη, αν θελήσει να εισάγει το -5 στην αρχή της λίστας, θα πρέπει να δώσει ως είσοδο το 0-5 (0 για να πάει στην αρχή της λίστας και θέλει να καταχωρηθεί ο αριθμός -5)
Αν δοκιμάσεις να μετατρέψεις σε ακέραιο με την int το 0-5 φυσικά θα χτυπήσει σφάλμα.Τα όνειρα που κάνω από τα 20 παρκάρουν στον ακάλυπτο νωρίς. Μα εσύ που με κοιτάς σαν λύτρωση ζωή παρκαρισμένη μην δεχτείς.
-
07-11-17, 22:21 Απάντηση: [python] user input in list #9
Σας ευχαριστώ πολύ
Παρόμοια Θέματα
-
Απλό CPU Benchmarking με Python (μαθητική εργασία)
Από GeorgeVita στο φόρουμ Unix - LinuxΜηνύματα: 13Τελευταίο Μήνυμα: 17-05-17, 23:48
Bookmarks