72 lines
2.6 KiB
Python
72 lines
2.6 KiB
Python
import random
|
||
|
||
NUM_DIGITS = 3
|
||
MAX_GUESS = 10
|
||
|
||
def getSecretNum():
|
||
# Возвращает строку уникальных случайных цифр, длина которой составляет NUM_DIGITS.
|
||
numbers = list(range(10))
|
||
random.shuffle(numbers)
|
||
secretNum = ''
|
||
for i in range(NUM_DIGITS):
|
||
secretNum += str(numbers[i])
|
||
return secretNum
|
||
|
||
def getClues(guess, secretNum):
|
||
# Возвращает строку с подсказками пользователю "Тепло", "Горячо" и "Холодно".
|
||
if guess == secretNum:
|
||
return 'Вы угадали!'
|
||
|
||
clues = []
|
||
for i in range(len(guess)):
|
||
if guess[i] == secretNum[i]:
|
||
clues.append('Горячо')
|
||
elif guess[i] in secretNum:
|
||
clues.append('Тепло')
|
||
if len(clues) == 0:
|
||
return 'Холодно'
|
||
|
||
clues.sort()
|
||
return ' '.join(clues)
|
||
|
||
def isOnlyDigits(num):
|
||
# Возвращает значение True, если num - строка, состоящая только из цифр. В противном случае возвращает False.
|
||
if num == '':
|
||
return False
|
||
for i in num:
|
||
if i not in '0 1 2 3 4 5 6 7 8 9'.split():
|
||
|
||
return False
|
||
|
||
return True
|
||
|
||
|
||
print('Я загадаю %s-х значное число, которое вы должны отгадать.' % (NUM_DIGITS))
|
||
print('Я дам несколько подсказок...')
|
||
print('Когда я говорю: Это означает:')
|
||
print(' Холодно Ни одна цифра не отгадана.')
|
||
print(' Тепло Одна цифра отгадана, но не отгадана ее позиция.')
|
||
print(' Горячо Одна цифра и ее позиция отгаданы.')
|
||
|
||
while True:
|
||
secretNum = getSecretNum()
|
||
print('Итак, я загадал число. У вас есть %s попыток, чтобы отгадать его.' % (MAX_GUESS))
|
||
|
||
guessesTaken = 1
|
||
while guessesTaken <= MAX_GUESS:
|
||
guess = ''
|
||
while len(guess) != NUM_DIGITS or not isOnlyDigits(guess):
|
||
print('Попытка №%s: ' % (guessesTaken))
|
||
guess = input()
|
||
|
||
print(getClues(guess, secretNum))
|
||
guessesTaken += 1
|
||
|
||
if guess == secretNum:
|
||
break
|
||
if guessesTaken > MAX_GUESS:
|
||
print('Попыток больше не осталось. Я загадал число %s.' % (secretNum))
|
||
|
||
print('Хотите сыграть еще раз? (да или нет)')
|
||
if not input().lower().startswith('д'):
|
||
break |