/
guess-nobreak.py
57 lines (52 loc) · 2.63 KB
/
guess-nobreak.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
''' επέκταση από το http://pythonies.mysch.gr/chapters/guess.pdf
Διατυπώστε μια εναλλακτική εκδοχή του προγράμματος, στην οποία η
while θα χρησιμοποιεί την συνθήκη number != secret, αντί για τον
έλεγχο της λογικής μεταβλητής found ή την χρήση της break.
'''
import random
def readNumber(a,b):
""" Ζητάει από το χρήστη έναν αριθμό
μεταξύ των a και b και τον επιστρέφει.
a, b: όρια για τον αριθμό (δεν ελέγχονται)
"""
# εμφάνιση προτροπής και ανάγνωση αριθμού
print("Μάντεψε τον αριθμό:", a , "-", b)
num = int(input())
# επιστροφή αριθμού
return num
# οι μεταβλητές low και high είναι τα όρια
# ανάμεσα στα οποία βρίσκεται ο μυστικός αριθμός
low = 1
high = 32
# δημιουργία τυχαίου μυστικού αριθμού
secret = random.randint(low,high)
# ορισμός μέγιστου πλήθους προσπαθειών
tries = 4
# εμφάνιση αρχικού πλήθους προσπαθειών
print("Απομένουν", tries, "προσπάθειες.")
tries = tries - 1
# επιλογή αριθμού από το χρήστη
# (ο πρώτος αριθμός θα ζητηθεί πριν από την επανάληψη
# ώστε να έχει τιμή για τον έλεγχο της συνθήκης στη while)
number = readNumber(low,high)
# επανάληψη: τερματίζεται όταν
# βρεθεί ο αριθμός ή εξαντληθούν οι προσπάθειες
while number != secret and tries > 0:
# έλεγχος αριθμού και εμφάνιση μηνύματος
if number > secret:
print("Λάθος. Είναι μικρότερος.")
high = number - 1
elif number < secret:
print("Λάθος. Είναι μεγαλύτερος.")
low = number + 1
# εμφάνιση και μείωση προσπαθειών
print("Απομένουν", tries, "προσπάθειες.")
tries = tries - 1
# επιλογή αριθμού από το χρήστη
number = readNumber(low,high)
# μετά την επανάληψη
# εμφάνιση μηνύματος αν έχει βρεθεί ο αριθμός ή όχι
if number != secret:
print("Ήταν ο", secret)
else:
print("Σωστά!")