当前位置: 首页 > news >正文

python推理小游戏bagels

python推理小游戏bagels

  1. bagels是一个推理小游戏,你的朋友想到一个随机的、没有重复的3位数字,你尝试去猜测它是什么。每次猜测之后,朋友就会给出3中类型的线索:
  • Bagels: 你猜测的3个数都不在神秘数字中;
  • Pico:你猜测的是神秘数字中的一个数,但是位置不对;
  • Fermi:你猜测的是正确位置上的一个正确的数。
  1. 程序流程:首先生成一个随机数字,然后判断玩家是否用完了猜测次数,用完了则玩家失败,询问是否再玩一局;否则获取玩家的猜测,回答正确玩家获胜,询问是否再玩一局,猜测失败,告诉玩家线索,增加已猜测的次数。
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 Falsefor i in num:if i not in '0 1 2 3 4 5 6 7 8 9'.split():return Falsereturn 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 = 1while numGuesses <= MAXGUESS:guess = ''while len(guess) != NUMDIGITS or not isOnlyDigits(guess):print('Guess #%s: '%(numGuesses))guess = input()clue = getClues(guess, secretNum)print(clue)numGuesses += 1if guess == secretNum:break if numGuesses > MAXGUESS:print('You ran out of guesses. The answer was %s.'%(secretNum))if not playAgain():break
http://www.lryc.cn/news/112454.html

相关文章:

  • DBSCAN聚类
  • java+ssm美食推荐交流系统 7jsw7
  • 基于php雪花算法工具类Snowflake -来自chatGPT
  • 怎么加密文件夹才更安全?安全文件夹加密软件推荐
  • 知识分享和Tomcat简单部署press应用
  • 回归预测 | MATLAB实现SO-CNN-BiGRU蛇群算法优化卷积双向门控循环单元多输入单输出回归预测
  • 步入React前厅 - 组件和JSX
  • SpringBoot整合Sfl4j+logback的实践
  • IT 基础架构自动化
  • Docker入门——保姆级
  • MONGODB ---- Austindatabases 历年文章合集
  • 菠萝头 pinia和vuex对比 pinia比vuex更香 Pinia数据持久化及数据加密
  • 机器学习笔记 - 关于GPT-4的一些问题清单
  • sql 参数自动替换
  • Linux——设备树
  • 网络:从socket编程的角度说明UDP和TCP的关系,http和tcp的区别
  • 大数据技术之Hadoop:HDFS集群安装篇(三)
  • 移动开发最佳实践:为 Android 和 iOS 构建成功应用的策略
  • 2023年第二届网络安全国际会议(CSW 2023)
  • 【100天精通python】Day23:正则表达式,基本语法与re模块详解示例
  • C++ 派生类成员的标识与访问——作用域分辨符
  • SQL注入实操三(SQLilabs Less41-65)
  • (亲测解决)PyCharm 从目录下导包提示 unresolved reference(完整图解)
  • 【AI量化模型】跑通baseline
  • ElasticSearch:全文检索及倒排索引原理
  • blk_mq_alloc_tag_set函数struct blk_mq_tag_set结构体学习
  • Windows搭建Snort环境及使用方式
  • Android network — iptables四表五链
  • 【C++从0到王者】第十六站:stack和queue的使用
  • centos7 部署Tomcat和jpress应用