import random
# 获取一个长度为numDigits的字符串,该字符串由唯一的随机数字组成defgetSecretNum(numDigits):
numbers =list(range(10))# 随机修改列表元素的顺序
random.shuffle(numbers)
secretNum =''for i inrange(numDigits):
secretNum +=str(numbers[i])# 给用户提供关于pico, fermi, bagels的线索defgetClues(guess, secretNum):if guess == secretNum:return"You got it!"
clue =[]for i inrange(len(guess)):if guess[i]== secretNum[i]:
clue.append('Fermi')elif guess[i]in secretNum:
clue.append('Pico')iflen(clue)==0:return'Bagels'
clue.sort()# 排序去除掉线索中和顺序相关的额外信息return''.join(clue)# 如果num是仅由数字组成的字符串,则返回True。否则返回False。defisOnlyDigits(num):if num =='':returnFalsefor i in num:if i notin'0 1 2 3 4 5 6 7 8 9'.split():returnFalsereturnTrue# 是否再玩一次defplayAgain():print('Do you want to play again?(yes or no)')returninput().lower().startswith('y')
NUMDIGITS =3
MAXGUESS =10print('I am thinking of a %s-digit number. Try to guess what it is.'%(NUMDIGITS))print('Here are some clues:')print('When I say: That means:')print(' Pico One digit is correct but in the wrong position.')print(' Fermi One digit is correct and in the right position.')print(' Bagels No digit is correct.')whileTrue:
secretNum = getSecretNum(NUMDIGITS)print('I have thought up a number. You have %s guesses to get it.'%(MAXGUESS))
numGuesses =1while numGuesses <= MAXGUESS:
guess =''whilelen(guess)!= NUMDIGITS ornot isOnlyDigits(guess):print('Guess #%s: '%(numGuesses))
guess =input()
clue = getClues(guess, secretNum)print(clue)
numGuesses +=1if guess == secretNum:breakif numGuesses > MAXGUESS:print('You ran out of guesses. The answer was %s.'%(secretNum))ifnot playAgain():break