Почему компилятор выдаёт что такой позиции(i) в элементах не существует?
Пишу игру Бейглз. Проблема появляется в классе getClues(), компилятор выдаёт что такой позиции(i) в элементах не существует. Прошу помочь.
import random
num_digits=3
max_guesses=10
def main():
print('''Бейглз это дедуктивная логическая игра.
Я думаю о {}-значном числе без повторяющихся чисел.
Попробуй угадать его. Я дам несколько подсказок:
Когда я говорю: Это значит:
Пико Правильная цифра на неправильном месте
Ферми Правильная цифра на правильном месте
Бейглз Нет правильных цифр
Например, если загаданное число было 248 и ты говоришь 843, то подсказки будут "Ферми Пико"'''.format(num_digits))
while True:
secretNum=getSecretNum()
print('Я задумал число.')
print('У тебя есть {} попыток чтобы отгадать его'.format(max_guesses))
numGuesses=1
while numGuesses<=max_guesses:
guess=''
while len(guess) != num_digits or not guess.isdecimal():
print('Попытка №{}: '.format(numGuesses))
guess=input('> ')
clues=getClues(guess, secretNum)
print(clues)
numGuesses+=1
if guess==secretNum:
break
if numGuesses>max_guesses:
print('У тебя закончились попытки')
print('Ответом было {}.'.format(secretNum))
print('Вы хотите сыграть ещё раз?(да или нет)')
if not input('> ').lower().startswith('y'):
break
print('Спасибо за игру!')
def getSecretNum():
numbers=[0,1,2,3,4,5,6,7,8,9]
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 'Бейглз'
else:
clues.sort()
return ' '.join(clues)
if __name__=='__main__':
main()
Ответы (1 шт):
Автор решения: IFR1T
→ Ссылка
В функции def getSecretNum(): на строке return "лишний" знак табуляции. Цикл завершается на первом же прохождении, и в итоге секретное число - из одной цифры. Убери табуляцию на 1 шаг назад, и все будет работать правильно.