Μεταμορφώστε το παιχνίδι ψευδοκώδικα σε πύθωνα

ψήφοι
1

Κάντε τον υπολογιστή μαντέψει έναν αριθμό που ο χρήστης επιλέγει μεταξύ 1 και 1000 δεν πρέπει να υπερβαίνει το 10 guesses.This ανάθεση χρησιμοποιεί έναν αλγόριθμο που ονομάζεται δυαδική αναζήτηση. Μετά από κάθε εικασία, ο αλγόριθμος μειώνει τον αριθμό των πιθανών απαντήσεων για να αναζητήσετε στο μισό. Ψευδοκώδικα για το πλήρες πρόγραμμα δίνεται παρακάτω? καθήκον σας είναι να το μετατρέψει σε ένα πρόγραμμα εργασίας python. Το πρόγραμμα θα πρέπει να ξεκινήσει με την εκτύπωση οδηγίες στην οθόνη, εξηγώντας ότι ο χρήστης θα πρέπει να επιλέξει έναν αριθμό μεταξύ 1 και 1000 και ο υπολογιστής θα το μαντέψει το πολύ σε 10 προσπάθειες. Στη συνέχεια αρχίζει να κάνει εικασίες, και μετά από κάθε υποθέτω ότι ζητά από το χρήστη για την ανατροφοδότηση. Ο χρήστης θα πρέπει να καθοδηγούνται να εισάγετε -1 αν η εικασία πρέπει να είναι χαμηλότερη, 0 αν ήταν σωστό, και 1 αν πρέπει να είναι higher.When το πρόγραμμα μαντέψει σωστά, θα πρέπει να αναφέρει πώς έπρεπε πολλές εικασίες. Αν ο χρήστης εισάγει μια έγκυρη απάντηση, οι οδηγίες θα πρέπει να επαναληφθεί και ο χρήστης επιτρέπεται να προσπαθήσετε ξανά.

Ψευδοκώδικας

- Print instructions to the user  
-Start with high = 1000, low = 1, and tries = 1 
- While high is greater than low   
  - Guess the average of high and low  
  - Ask the user to respond to the guess  
  - Handle the four possible outcomes:  
    - If the guess was right, print a message that tries guesses were required and quit the program
    - If the guess was too high, set high to one less than the guess that was displayed to the user and increment tries  
    - If the guess was too low, set low to one more than the guess that was displayed to the user and increment tries
    - If the user entered an incorrect value, print out the instructions again
- high and low must be equal, so print out the answer and the value of tries

Χρειάζομαι κάποια σοβαρή βοήθεια! Δεν καταλαβαίνω κάποια από αυτά τα πράγματα σε όλους! Αυτό είναι το μόνο που έχω

def main(x, nums, low, high):
        input(Enter -1 if the guess needs to be lower, 0 if the guess was right, or 1 if the guess needs to be higher: )
    for i in range (1, 1001):

main()

και εγώ δεν ξέρω καν αν είναι σωστό!

Δημοσιεύθηκε 14/06/2009 στις 04:28
πηγή χρήστη
Σε άλλες γλώσσες...                            


7 απαντήσεις

ψήφοι
4

Είσαι προφανώς πολύ νέα για τον προγραμματισμό, και υποθέτω ότι είναι ένας από τους λόγους για την καθυστερημένη απάντηση από την κοινότητα. Είναι δύσκολο να αποφασίσει πού να αρχίσω και πώς να σας καθοδηγήσει μέσα από όλη αυτή την άσκηση.

Έτσι, προτού να πάρετε μια καλή απάντηση εδώ που περιλαμβάνει την κάνουν να καταλάβετε τι συμβαίνει εκεί, και σας καθοδηγεί μέσα από την οικοδόμηση τη λύση μόνοι σας (ιδανικά!) Θα ήθελα να σας προτείνω να επισκεφθείτε αυτή τη σελίδα για να προσπαθήσετε να πάρετε μια κατανόηση του ίδιου του πραγματικού προβλήματος.

http://www.openbookproject.net/pybiblio/gasp/course/4-highlow.html

Εν τω μεταξύ, να δούμε όλες τις απαντήσεις σε αυτό το νήμα και να κρατήσει την επεξεργασία μετά σας, έτσι ώστε να γνωρίζουμε είστε το πάρει.

Απαντήθηκε 14/06/2009 στις 04:37
πηγή χρήστη

ψήφοι
1

Εντάξει, το ωραίο μέρος σχετικά με τη χρήση της Python είναι ότι είναι σχεδόν ψευδοκώδικα ούτως ή άλλως.

Τώρα, ας σκεφτούμε τα επιμέρους βήματα:

  1. Πώς θα αποκτήσετε το μέσο όρο μεταξύ υψηλών και χαμηλών;

  2. Πώς μπορείτε να ζητήσετε από το χρήστη αν η answerr είναι σωστή

  3. Τι κάνει «αν» δηλώσεις μοιάζουν στην Python, και πώς θα γράψετε το ψευδοκώδικα ως εάν δηλώσεις;

Εδώ είναι ένα άλλο υπόδειξη - μπορείτε να εκτελέσετε python ως διερμηνέας και να προσπαθήσουμε ατομικές δηλώσεις κατά μήκος, έτσι ώστε, για παράδειγμα, θα μπορούσατε να κάνετε

high=23
low=7

Στη συνέχεια υπολογίζουμε τι νομίζετε ότι πρέπει να είναι ο μέσος όρος ή μέσο μεταξύ τους (hint: 15)

Απαντήθηκε 14/06/2009 στις 04:42
πηγή χρήστη

ψήφοι
11

Δεν καταλαβαίνω κάποια από αυτά τα πράγματα σε όλους!

Αυτό είναι αρκετά προβληματική, αλλά, εντάξει, ας κάνουμε ένα βήμα κάθε φορά! εργασία για το σπίτι σας αρχίζει ως εξής:

οδηγίες εκτύπωσης για τον χρήστη

Έτσι, δεν καταλαβαίνεις κάποια από τις πράγματα, που λέτε, έτσι ώστε να σημαίνει ότι δεν καταλαβαίνουν αυτό το μέρος, είτε. Λοιπόν: «ο χρήστης» είναι το πρόσωπο που τρέχει το πρόγραμμά σας. «Οδηγίες» είναι η αγγλική φράση που τον ή να της πω τι πρέπει να κάνετε για να παίξει το παιχνίδι, σύμφωνα με το ακόλουθο απόσπασμα από αυτό το άριστα σαφή και λεπτομερή καθορισμό:

Το πρόγραμμα θα πρέπει να ξεκινήσει με την εκτύπωση οδηγίες στην οθόνη, εξηγώντας ότι ο χρήστης θα πρέπει να επιλέξει έναν αριθμό μεταξύ 1 και 1000 και ο υπολογιστής θα το μαντέψει το πολύ σε 10 προσπάθειες.

« print» Είναι μια εντολή Python που εκπέμπει πληροφορίες? Για παράδειγμα, δοκιμάστε ένα πρόγραμμα που περιέχει μόνο

print "some information"

για να δούμε πώς λειτουργεί. Εντάξει, μπορεί να σας παρακαλώ να επεξεργαστείτε την απάντησή σας για να μας δείξει ότι έχετε πάρει αυτό το σημείο, ώστε να μπορέσουμε να προχωρήσουμε στο επόμενο; Μη διστάσετε να σχολιάσω εδώ με περισσότερες ερωτήσεις και αν τις λέξεις ή έννοιες που είμαι με τη χρήση είναι ακόμη πολύ προχωρημένο για σας, και εγώ θα προσπαθήσω να διευκρινίσει!

Απαντήθηκε 14/06/2009 στις 04:43
πηγή χρήστη

ψήφοι
14

Πριν να σκεφτόμαστε πώς να εφαρμόσουν αυτό το python (ή οποιαδήποτε γλώσσα) αφήνει να δούμε την ψευδοκώδικα, το οποίο μοιάζει με ένα πολύ καλό σχέδιο για την επίλυση του προβλήματος.

Θα ήθελα να μαντέψει ότι ένα πράγμα που θα μπορούσε να πάρει κολλήσει σε είναι ο τρόπος με τον ψευδοκώδικα αναφοράς των μεταβλητών , όπως highκαι low. Ο τρόπος για να κατανοήσουμε μεταβλητές είναι να εξετάσει slots που οι τιμές μπορεί να αποθηκευτεί. Σε κάθε δεδομένη στιγμή, μια μεταβλητή έχει κάποια αξία, όπως ο αριθμός 5, ή μια αναφορά σε ένα ανοικτό αρχείο. Αυτή η τιμή μπορεί να κληθεί οποιαδήποτε στιγμή, χρησιμοποιώντας το όνομά του, ή μπορεί να δοθεί μια νέα τιμή με την ανάθεση σε αυτήν, και η παλιά τιμή θα ξεχαστεί με τη νέα τιμή που λαμβάνει χώρα του.

Ο ψευδοκώδικας αναφέρει τρεις μεταβλητές, high, lowκαι tries. Επίσης σας λέει τι θα πρέπει να είναι αρχικές τους τιμές. Αφού έχει εκτελεστεί η δεύτερη γραμμή, οι τιμές αυτές καθορίζονται 1000, 1 και 1, αντίστοιχα, αλλά παίρνουν νέες τιμές καθώς το πρόγραμμα εξελίσσεται.

Ένα άλλο χαρακτηριστικό της ψευδοκώδικα είναι ένα υπό όρους βρόχο, και μία ανάλυση περίπτωση της εισόδου του χρήστη. Μετάφραση σας του βρόχου του ψευδοκώδικα είναι εσφαλμένη. Στην περίπτωσή σας, έχετε δημιουργήσει μια νέα μεταβλητή, iκαι οι οδηγίες του προγράμματος για να τρέξει το σώμα βρόχου με κάθε τιμή του i μεταξύ 1 και 1000. Προφανώς αυτό δεν έχει ένα πάρα πολύ να κάνει με τον ψευδοκώδικα.

Αντ 'αυτού τι θέλετε να κάνετε είναι να βρόχο για πάντα, μέχρι κάποια πάθηση (που αλλάζει στο σώμα βρόχου) γίνεται ψευδής. Στην python, η whileδήλωση κάνει αυτό. Αν είστε εξοικειωμένοι με μια ifδήλωση, whileμοιάζει το ίδιο, αλλά μετά από το σώμα γίνεται, η κατάσταση έχει επανεκτιμηθεί και το σώμα εκτελείται και πάλι, αν εξακολουθεί να είναι αλήθεια.

Τέλος, η ανάλυση περίπτωση στο σώμα του βρόχου απαιτεί τη σύγκριση κάτι για αναμενόμενες τιμές. Αν και κάποιες άλλες γλώσσες έχουν μια σειρά από τρόπους έκφρασης αυτού, σε python εμείς μόνο έχουμε if- elif- elseρήτρες.


Έξω από τη μετατροπή ψευδοκώδικα στον κώδικα εργασίας, είναι ίσως χρήσιμο να καταλάβουμε ποιο είναι το πρόγραμμα που στην πραγματικότητα κάνει. Το κλειδί εδώ είναι στη γραμμή 4, όπου το πρόγραμμα υποθέτει ο μέσος όρος των δύο τιμών. μετά από αυτό το πρόγραμμα λειτουργεί από το πόσο καλά η εικασία εκπονηθεί.

Στην πρώτη κίνηση μέσω του βρόγχου, με highπεριείχε 1000 και lowπεριέχει 1, ο μέσος όρος είναι 500 (στην πραγματικότητα η μέση τιμή είναι 500,5, αλλά επειδή είμαστε κατά μέσο όρο ακέραιους αριθμούς, εικασίες πύθωνα που θέλουμε το αποτέλεσμα της διαίρεσης επίσης να είναι ένας ακέραιος ). Προφανώς η εικασία έχει μόνο μια πιθανότητα 0,1% να είναι σωστό, αλλά αν είναι λάθος, ο χρήστης αναμένεται να μας πει αν ήταν πάρα πολύ υψηλή ή πολύ χαμηλή. Είτε έτσι είτε αλλιώς, η απάντηση εξαλείφει πλήρως το 50% των πιθανών εικασίες.

Αν, για παράδειγμα, ο χρήστης σκέφτεται ένα μικρό αριθμό, στη συνέχεια, όταν το πρόγραμμα μαντέψατε 500, ο χρήστης θα πει το πρόγραμμα που 500 ήταν πολύ υψηλή, και στη συνέχεια, το πρόγραμμα δεν θα πρέπει ποτέ να μαντέψει ότι ο αριθμός ήταν το φάσμα των 501 μέσω 1000. Αυτό μπορεί να σώσει τον υπολογιστή πολλή δουλειά.

Για να το θέσουμε αυτές τις πληροφορίες για να χρησιμοποιήσετε το πρόγραμμα παρακολουθεί το εύρος των πιθανών τιμών, ο αριθμός στόχος θα μπορούσε να είναι. Όταν ο αριθμός μαντέψατε είναι πολύ υψηλή, το πρόγραμμα προσαρμόζεται της άνω όριο προς τα κάτω, ακριβώς κάτω από την εικασία, και αν η εικασία ήταν πολύ χαμηλή, της προσαρμογής του προγράμματος της κάτω όριο προς τα πάνω ακριβώς πάνω από την εικασία.

Όταν το πρόγραμμα εικασίες και πάλι, η εικασία είναι ακριβώς στη μέση του δυνατού φάσματος, μειώνοντας το εύρος στο μισό και πάλι. Ο αριθμός των πιθανών εικασίες πήγε από την αρχική 1000 σε 500 σε μια εικασία, 250 σε δύο εικασίες. Αν το πρόγραμμα έχει φοβερή τύχη, και δεν μπορεί να πάρει δύο (το οποίο είναι πραγματικά πολύ πιθανό), τότε το τρίτο, έχει μόνο 125 αριθμούς άφησε να ανησυχούν. Μετά την τέταρτη εικασία, μόνο 62 αριθμοί παραμένουν εντός εμβέλειας. Αυτό συνεχίζεται και μετά από οκτώ εικασίες, μόνο 3 αριθμούς παραμένουν, και το πρόγραμμα προσπαθεί το μεσαίο αριθμό για ένατη εικασία του. Αν αυτό αποδειχθεί ότι είναι λάθος, μόνο ένας αριθμός αριστερά, και το πρόγραμμα αυτό μαντεύει!

Αυτή η τεχνική της διάσπασης ένα εύρος στο μισό και στη συνέχεια συνεχίζει τη στενότερη μισό είναι που ονομάζεται διχοτόμησης και εμφανίζεται σε ένα ευρύ φάσμα θεμάτων που παρουσιάζουν ενδιαφέρον για την επιστήμη των υπολογιστών.


Τι θα λέγατε για λίγο κώδικα! Επειδή δεν θέλω να σας στερήσει την εμπειρία μάθησης, απλά θα σας δώσω μερικά αποσπάσματα που μπορεί να σας βοηθήσει κατά μήκος. Python είναι μια γλώσσα σχεδιασμένη για διαδραστική εξερεύνηση, έτσι φωτιά μέχρι διερμηνέα σας και να δώσει σε αυτό έναν πυροβολισμό. Θα πρέπει να αποσπούν παραδείγματα με τα μηνύματα εμφανίζονται, μην πληκτρολογήσετε στην πραγματικότητα αυτό.

Εδώ είναι ένα παράδειγμα με τη χρήση της whileρήτρας:

>>> x = 1000
>>> while x > 1:
...     x = x/2
...     print x
...
500
250
125
62
31
15
7
3
1
>>> x
1

Να πάρει εισόδου της κονσόλας από τον χρήστη θα πρέπει να γίνει μέσω της raw_input()λειτουργίας. Επιστρέφει μόνο ανεξάρτητα από το είδος του χρήστη. Αυτό είναι λίγο πιο δύσκολο να δείξει. Για να απλοποιήσουμε τα πράγματα, μετά από κάθε γραμμή του πύθωνα που απαιτεί είσοδο, θα πληκτρολογήσετε «Hello World!» (χωρίς τα εισαγωγικά)

>>> raw_input()
Hello World!
'Hello World!'
>>> y = raw_input()
Hello World!
>>> print y
Hello World!
>>> 

Τι θα λέγατε για κάποιο συνδυασμό των εννοιών!

>>> myvar = ''
>>> while myvar != 'exit':
...     myvar = raw_input()
...     if myvar == 'apples':
...         print "I like apples"
...     elif myvar == 'bananas':
...         print "I don't like bananas"
...     else:
...         print "I've never eaten", myvar
...
apples
I like apples
mangoes
I've never eaten mangoes
bananas
I don't like bananas
exit
I've never eaten exit
>>> 

Ωχ. μικρό κομμάτι από ένα bug εκεί. Δείτε αν μπορείτε να το διορθώσετε!

Απαντήθηκε 14/06/2009 στις 05:17
πηγή χρήστη

ψήφοι
0

Εδώ είναι μερικές συμβουλές για να ξεκινήσετε:

Μέσος όρος = Αξία + + αρχική τιμή [...] / αριθμός τιμών? (Για παράδειγμα, ((2 + 5 + 3) / (3))

Πολλές γλώσσες προγραμματισμού χρησιμοποιούν διαφορετικά προτεραιότητα χειριστή. Όταν είμαι προγραμματισμό, χρησιμοποιώ πάντα παρενθέσεις όταν είμαι σίγουρος για την προτεραιότητα χειριστή. Στο παράδειγμά μου παραπάνω, αν το μόνο που έκανε 2 + 5 + 3.3, το πρόγραμμα θα κάνει τη διάσπαση πριν από την προσθήκη - γι 'αυτό θα evaulate 2 + 5 + (3/3), ή 2 + 5 + 1 == 7 .

Μετάβαση αυτό για τους χρήστες python / * Δεύτερον: πρώτα τα προγράμματά σας μπορούν να επωφεληθούν από const ορθότητα ( εδώ είναι μια καλή εξήγηση για το τι είναι και γιατί είναι εξαιρετικά ορθή πρακτική). Παρακαλούμε διαβάστε αυτό και καταλαβαίνω γιατί θα πρέπει να χρησιμοποιήσετε σταθερές (ή ό, τι το αντίστοιχο python είναι). Επίσης κοιτάζω προς τα πάνω «μαγικό αριθμό», η οποία είναι μια μεγάλη περιοχή όπου χρησιμοποιούνται σταθερές. * /

Google «Παρακαλώ συγχωρείτε Αγαπητέ θεία Sally μου» (Σημείωση: αυτό ασχολείται μόνο με μαθηματικούς τελεστές, και ως επί το πλείστον ισχύει και για τις γλώσσες προγραμματισμού? Για μια πιο ολοκληρωμένη μελέτη της υπεροχής φορέα, κοιτάζω προς τα πάνω την τεκμηρίωση επιλέξει τη γλώσσα σας για το προβάδισμα - επίσης να σημειωθεί ότι τα περισσότερα προγράμματα δεν έχουν κατασκευαστεί σε φορείς εξουσίας, αλλά οι περισσότεροι πρότυπο βιβλιοθήκες έχουν pow λειτουργίες).

Μιλώντας πρότυπο βιβλιοθήκης: Γνωρίστε τις βασικές λειτουργίες της βιβλιοθήκης (Δεν έχω χρησιμοποιήσει ποτέ Python, δεν ξέρω πώς να το εφαρμόζει SL, αλλά θα ήμουν πολύ έκπληκτος εάν η γλώσσα ότι η λαϊκή δεν έχουν ένα καλά αναπτυγμένο SL). Αν δεν ξέρετε τι είναι αυτό, και το βιβλίο σας / φροντιστήριο δεν το έχετε, να πάρετε ένα νέο. Κάθε πόρος που δεν αναφέρονται σε μια πρότυπη βιβλιοθήκη δεν αξίζει τον κόπο.

Τέλος: ενώ η θέση αυτή μπορεί να μοιάζει ξέρω τι μιλώ για, πραγματικά είμαι ακόμα στα πρώτα στάδια της μάθησης, ακριβώς όπως σας. Μερικά πράγματα που ίσως να θέλετε να συνηθίσετε νωρίς (όταν παραλειφθούν αυτά τα μέρη, να επιβραδύνει την εκμάθηση μου πολλά): Η χρήση των αναφορών και των δεικτών (Q για σχόλια: δεν Python έχει δείκτες;), η διαφορά μεταξύ των δεδομένων σε μια θέση μνήμης και την πραγματική θέση μνήμης (συχνά φορές, η θέση του αξίας στη μνήμη θα είναι περισσότερο χρήσιμη από την ίδια την τιμή, τουλάχιστον κατά την εγγραφή δομές δεδομένων). Ειδικά συνηθίσουν στην πρότυπη βιβλιοθήκη? ψάξτε για αντιγραφή, βρείτε, κλπ λειτουργίες τύπου χρήσιμα στο χειρισμό αλφαριθμητικών.

Στην πραγματικότητα, ξαναδιαβάζοντας την αρχική σας θέση, δεν είχα συνειδητοποιήσει αυτό ήταν μια εργασία τύπου εργασία. Αν δεν το κάνουμε αυτό για διασκέδαση, μάλλον θα ποτέ δεν πάρετε τις συμβουλές μου. Απλά θυμηθείτε ότι ο προγραμματισμός μπορεί να είναι εξαιρετικά διασκεδαστικό, αν δεν το κάνει αγγαρεία - και δεν παίρνουν απογοητευμένοι όταν κωδικό σας δεν συγκεντρώσει (ή ... να ερμηνεύσει), ή μπορείτε να πάρετε μη αναμενόμενα αποτελέσματα, κ.λπ.

Απαντήθηκε 14/06/2009 στις 05:24
πηγή χρήστη

ψήφοι
1

Καλώς ήρθατε στο Υπερχείλιση στοίβας!

Το κόλπο εδώ είναι να συνειδητοποιήσουμε ότι το πρόγραμμα Python σας θα πρέπει να είναι σχεδόν όμοια με τον ψευδοκώδικα.

Κατ 'αρχάς ας προσπαθήσουμε να καταλάβουμε τι ακριβώς κάνει ο ψευδοκώδικας. Αν έπρεπε να αλληλεπιδράσει με το πρόγραμμα που περιγράφεται από τον ψευδοκώδικα, θα δούμε κάτι σαν αυτό:

Think of a number between 1 and 1000 and press Enter.
>>> 
Is it 500? Enter -1 if it's lower, 0 if I guessed right, or 1 if it's higher.
>>> 1
Is it 750? Enter -1 if it's lower, 0 if I guessed right, or 1 if it's higher.
>>> -1
Is it 625? Enter -1 if it's lower, 0 if I guessed right, or 1 if it's higher.

και τα λοιπα.

Όταν η πρώτη μας σκέψη του αριθμού μας, το πρόγραμμα ξέρει μόνο ότι είναι μεταξύ 1 και 1000. Αντιπροσωπεύει αυτή τη γνώση με τη ρύθμιση της μεταβλητής «χαμηλό» στο 1 και η μεταβλητή «υψηλή» στο 1000. πρώτη εικασία του είναι ο μέσος όρος αυτών αριθμοί, το οποίο είναι 500.

Αφού πείτε το πρόγραμμα που αριθμός μας είναι μεγαλύτερη από 500, να ενημερώνει την αξία των «χαμηλό» σε 501. Με άλλα λόγια, το πρόγραμμα, στη συνέχεια, ξέρει ότι ο αριθμός μας είναι μεταξύ 501 και 1000. Στη συνέχεια μαντεύει το μέσο όρο των 501 και 1000, το οποίο είναι 750. Πρέπει να πω ότι ο αριθμός μας είναι κάτω, έτσι ώστε το πρόγραμμα ενημερώνει την αξία των «υψηλών» σε 749 και μαντεύει το μέσο όρο των 501 και 749 την επόμενη, και ούτω καθεξής μέχρι να μαντέψει σωστά, ή έχει μειωθεί το πιθανό εύρος προς τα κάτω σε ένα μόνο αριθμό (δηλαδή την επόμενη εικασία του θα είναι σωστό).

Έτσι, πίσω στο γράψιμο το πρόγραμμα σε Python: Είμαστε ουσιαστικά μόνο μεταφράσει τη γραμμή ψευδοκώδικα για τη γραμμή. Για παράδειγμα βρόχο πρόγραμμά μας θα πρέπει να δούμε ακριβώς όπως το κάνει στο pseucode:

while high > low:
  # Guess (high + low) / 2 and ask user to respond
  # Handle user response

Δεν υπάρχει καμία ανάγκη για ένα for-loop 'όσον έχετε τον κωδικό σας.

Για να πάρετε είσοδο μπορούμε να κάνουμε κάτι σαν αυτό:

guess = (high + low) / 2
response = input('Is it ' + str(guess) + '? Enter -1 if it's lower, 0 if I guessed right, or 1 if it's higher.')

Τώρα η είσοδος του χρήστη αποθηκεύεται στη μεταβλητή «απάντηση», και μπορούμε να χειριστεί τις δυνατότητες με το αν δηλώσεις του τύπου «εάν απάντηση == -1: για παράδειγμα.

Απλά θυμηθείτε να εκτυπώσετε τις οδηγίες και να «υψηλής» και «χαμηλής» στην αρχική τους τιμή πριν την είσοδο στο βρόχο while και θα πρέπει να είναι όλα έτοιμα.

Καλή τύχη!

Απαντήθηκε 14/06/2009 στις 06:59
πηγή χρήστη

ψήφοι
2

Δεν ταιριάζει με το psudocode ακριβώς αλλά δουλεύει. χαχαχα ;)

Ξέρω ότι αυτό είναι ένα κακό παλιά θέση, αλλά αυτό είναι το ίδιο με ανάθεση Πήρα επίσης. Εδώ είναι αυτό που κατέληξα με:

high = 1000
low = 1
print "Pick a number between 1 and 1000."
print "I will guess your number in 10 tries or less."
print "Or at least i'll try to.  ;)"
print "My first guess is 500."
guess = 500
tries = 0
answer = 1
print "Enter 1 if it's higher."
print "Enter -1 if it's lower."
print "Enter 0 if I guessed it!"
print ""
while (answer != 0):
    answer = int(raw_input("Am I close?"))
    if answer == 1:
        tries = tries + 1
        low = guess
        guess = (high + low) / 2
        print "My next guess is:"
        print guess
    elif answer == -1:
        tries = tries + 1
        high = guess
        guess = (high + low) / 2
        print "My next guess is:"
        print guess
    elif answer == 0:
        tries = tries + 1
        print "Your number is:"
        print guess
        print "Yay! I got it! Number of guesses:"
        print tries
Απαντήθηκε 25/09/2010 στις 20:02
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more