Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
66 lines (60 sloc) 3.78 KB
''' επέκταση από το http://pythonies.mysch.gr/chapters/guess.pdf
Εδώ θα προστεθεί η εκφώνηση (όταν παγιωθεί) ώστε το πρόγραμμα
να είναι αυτοτελές.
'''
import random
def computeNumber(a,b,tries):
""" επιλέγει τον μεσαίο αριθμό
μεταξύ των a και b και τον επιστρέφει,
εκτός κι αν η tries είναι ίση με 1, οπότε
επιστρέφει έναν τυχαίο αριθμό μεταξύ των a και b.
a, b: όρια για τον αριθμό
tries: το πλήθος των προσπαθειών που απομένουν
"""
# εμφάνιση προτροπής
print("Μάντεψε τον αριθμό:", a , "-", b)
if tries > 1:
# υπολογισμός μεσαίου αριθμού
num = (a + b) // 2
print("Ο υπολογιστής επιλέγει:", num)
else:
# επιλογή τυχαίου αριθμού
num = random.randint(a, b)
print("Ο υπολογιστής επιλέγει τυχαία:", num)
# επιστροφή αριθμού
return num
# Τι πλεονέκτημα προσφέρει η computeNumber, σε σχέση με την midNumber;
# Αν οι προσπάθειες που δίνονται στον παίκτη είναι λίγες, τότε θα υπάρξουν περιπτώσεις όπου θα απομένει μόνο μια προσπάθεια και ο παίκτης δεν θα έχει περιορίσει επαρκώς το εύρος των πιθανών αριθμών ώστε να μαντέψει τον μυστικό αριθμό. Αν ο παίκτης επιλέγει *πάντα* τον μεσαίο αριθμό ανάμεσα στα άκρα του διαστήματος (όπως κάνει η midNumber), τότε υπάρχουν μυστικοί αριθμοί που ο παίκτης δεν θα μπορέσει να τους μαντέψει ποτέ όταν οι διαθέσιμες προσπάθειες είναι λίγες (π.χ. το 17). Αντίθετα, αν η τελευταία επιλογή είναι τυχαία (όπως κάνει η computeNumber), τότε το πρόβλημα αυτό εξαλείφεται.
# οι μεταβλητές low και high είναι τα όρια
# ανάμεσα στα οποία βρίσκεται ο μυστικός αριθμός
low = 1
high = 32
# δημιουργία τυχαίου μυστικού αριθμού
secret = random.randint(low,high)
# ο μυστικός αριθμός δεν έχει εντοπιστεί
found = False
# ορισμός μέγιστου πλήθους προσπαθειών
tries = 4
# επανάληψη: τερματίζεται όταν
# βρεθεί ο αριθμός ή εξαντληθούν οι προσπάθειες
while not found and tries > 0:
# εμφάνιση προσπαθειών
print("\nΑπομένουν", tries, "προσπάθειες.")
# επιλογή αριθμού από το ίδιο το πρόγραμμα
number = computeNumber(low,high,tries)
# έλεγχος αριθμού και εμφάνιση μηνύματος
if number > secret:
print("Λάθος. Είναι μικρότερος.")
high = number - 1
elif number < secret:
print("Λάθος. Είναι μεγαλύτερος.")
low = number + 1
else:
print("Σωστά!")
# ο μυστικός αριθμός εντοπίστηκε
found = True
tries = tries - 1
# μετά την επανάληψη
# εμφάνιση μηνύματος αν δεν έχει βρεθεί ο αριθμός.
if not found:
print("Ήταν ο",secret)
You can’t perform that action at this time.