-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathguess_game.py
73 lines (49 loc) · 1.79 KB
/
guess_game.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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import random
def convert_user_input(user_input: str) -> int:
return int(user_input)
def get_user_range() -> tuple[int, int]:
min_range_txt: str = input(f'Enter min range:\n')
max_range_txt: str = input(f'Enter max range:\n')
try:
min_range: int = convert_user_input(min_range_txt)
max_range: int = convert_user_input(max_range_txt)
except ValueError:
print('Please enter a valid numbers')
raise ValueError('Invalid numbers.')
if min_range > max_range:
raise ValueError('Range max has to be greater than range min.')
if max_range == min_range:
raise ValueError('Range min and max have to not be equal')
return min_range, max_range
def draw_number(min_number: int, max_number: int) -> int:
return random.randint(min_number, max_number)
def guess_number(min_number: int, max_number: int, drawn_number: int) -> None:
print(f'Guess number from range: {min_number} to {max_number}. Good Luck!')
counter: int = 0
while True:
try:
user_digit: int = convert_user_input(input('Enter valid number: \n'))
except ValueError:
continue
counter += 1
if user_digit > drawn_number:
print(f'Too high')
elif user_digit < drawn_number:
print(f'Too low')
else:
print(f'You won! Your numbers of guesses: {counter}')
break
def main() -> None:
while True:
try:
min_number: int
max_number: int
min_number, max_number = get_user_range()
except ValueError:
continue
break
drawn_number = draw_number(min_number, max_number)
guess_number(min_number, max_number, drawn_number)
print('Game Over')
if __name__ == '__main__':
main()