python推理小游戏bagels

python推理小游戏bagels

  1. bagels是一个推理小游戏,你的朋友想到一个随机的、没有重复的3位数字,你尝试去猜测它是什么。每次猜测之后,朋友就会给出3中类型的线索:
  • Bagels: 你猜测的3个数都不在神秘数字中;
  • Pico:你猜测的是神秘数字中的一个数,但是位置不对;
  • Fermi:你猜测的是正确位置上的一个正确的数。
  1. 程序流程:首先生成一个随机数字,然后判断玩家是否用完了猜测次数,用完了则玩家失败,询问是否再玩一局;否则获取玩家的猜测,回答正确玩家获胜,询问是否再玩一局,猜测失败,告诉玩家线索,增加已猜测的次数。
python 复制代码
import random

# 获取一个长度为numDigits的字符串,该字符串由唯一的随机数字组成
def getSecretNum(numDigits):
    numbers = list(range(10))
    # 随机修改列表元素的顺序
    random.shuffle(numbers)
    secretNum = ''
    for i in range(numDigits):
        secretNum += str(numbers[i])
        
# 给用户提供关于pico, fermi, bagels的线索
def getClues(guess, secretNum):
    if guess == secretNum:
        return "You got it!"
    
    clue = []
    for i in range(len(guess)):
        if guess[i] == secretNum[i]:
            clue.append('Fermi')
		elif guess[i] in secretNum:
            clue.append('Pico')
	
    if len(clue) == 0:
        return 'Bagels'
    
    clue.sort()
    # 排序去除掉线索中和顺序相关的额外信息
    return ''.join(clue)

# 如果num是仅由数字组成的字符串,则返回True。否则返回False。
def isOnlyDigits(num):
    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

# 是否再玩一次
def playAgain():
    print('Do you want to play again?(yes or no)')
    return input().lower().startswith('y')
        
NUMDIGITS = 3
MAXGUESS = 10
print('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.')
while True:
    secretNum = getSecretNum(NUMDIGITS)
    print('I have thought up a number. You have %s guesses to get it.'%(MAXGUESS))
    numGuesses = 1
    while numGuesses <= MAXGUESS:
        guess = ''
        while len(guess) != NUMDIGITS or not isOnlyDigits(guess):
            print('Guess #%s: '%(numGuesses))
            guess = input()

        clue = getClues(guess, secretNum)
        print(clue)
        numGuesses += 1
        if guess == secretNum:
            break 
        if numGuesses > MAXGUESS:
            print('You ran out of guesses. The answer was %s.'%(secretNum))
        if not playAgain():
            break
相关推荐
陈苏同学15 分钟前
4. 将pycharm本地项目同步到(Linux)服务器上——深度学习·科研实践·从0到1
linux·服务器·ide·人工智能·python·深度学习·pycharm
唐家小妹18 分钟前
介绍一款开源的 Modern GUI PySide6 / PyQt6的使用
python·pyqt
XKSYA(小巢校长)1 小时前
NatGo我的世界联机篇
开发语言·php
羊小猪~~1 小时前
深度学习项目----用LSTM模型预测股价(包含LSTM网络简介,代码数据均可下载)
pytorch·python·rnn·深度学习·机器学习·数据分析·lstm
Cons.W1 小时前
Codeforces Round 975 (Div. 1) C. Tree Pruning
c语言·开发语言·剪枝
憧憬成为原神糕手1 小时前
c++_ 多态
开发语言·c++
VBA63371 小时前
VBA信息获取与处理第三个专题第三节:工作薄在空闲后自动关闭
开发语言
Marst Code1 小时前
(Django)初步使用
后端·python·django
985小水博一枚呀1 小时前
【对于Python爬虫的理解】数据挖掘、信息聚合、价格监控、新闻爬取等,附代码。
爬虫·python·深度学习·数据挖掘
立秋67892 小时前
Python的defaultdict详解
服务器·windows·python