猜数字游戏

  • 在游戏中,程序每一轮会随机生成一个0~1024之间的数字,用户输入猜测的数字,程序告诉用户猜大了还是猜小了。在一定次数内猜对,则本轮用户获胜,否则本轮用户失败。每一轮开始时,程序会要求用户输入用户名。程序会一直运行,直到用户输入“3”,停止游戏。在每一轮游戏开始前,输入“1”可以查看用户的输入历史。
  • 如何判断每一轮猜测多少次以内算猜测成功,多少次以上算猜测失败?
  • 根据二分法的原理,假设答案的范围是M~N,那么最多猜测log2(M+N)次就能猜测出正确答案。在这个案例中,范围为0~1024,以2为底,1024的对数为10,所以最多猜测10次就能得到正确答案。
  • 程序代码:
    import randomhistory = {}def creat_answer():return random.randint(0, 1024)def try_to_guess(name, answer):# 猜数的次数try_num = 0while try_num < 10:guess_answer = int(input("请输入一个数字:"))if guess_answer < answer:print("你猜小了~")history[name].append('失败')elif guess_answer == answer:print("bingo,你猜对了~")history[name].append('成功')breakelse:print("你猜大了~")history[name].append('失败')try_num += 1else:print("你猜的次数太多啦,失败~")history[name].append('失败')# 显示历史成绩
    def show_history():for name, score in history.items():print('用户名:',name + ',历史成绩', score)# 开始游戏
    def start():guess_name = input("请输入你的名字:")# 检查用户名是否存在,不存在则创建if guess_name not in history.keys():history[guess_name] = []try_to_guess(guess_name, creat_answer())if __name__ == '__main__':select_dict = {'1': show_history, '2': start, '3': exit}while True:guess_select = input('1. 历史记录\n2. 开始游戏\n3. 退出游戏\n请输入数字选择:')select_dict.get(guess_select)()
    
  • 运行结果
  • 拓展,用户自定义数字区间
    import random
    import mathhistory = {}def input_guess(start, end):''' 判断用户输入的字符,不符合则提示用户重新输入,符合则返回这个字符 '''guess = int(input('请输入{}~{}之间,猜测的数字:'.format(start, end)))if guess >= start and guess <= end:return guesselse:print('输入非法数字,重新输入,请确定数字在{}~{}之间'.format(start, end))def try_to_guess(name):# 定义猜测次数try_num = 0# 定义数字范围,并转成整型start, end = input("请输入猜测数字的范围(用,分隔):").split(',')start, end = int(start), int(end)# 随机答案answer = random.randrange(start, end+1)# 规定次数,并转为整数times = math.log2(start + end)times = math.floor(times)print('请在{}次内猜测正确数字'.format(times))# 判断语句,当猜测次数小于规定次数,则循环while try_num < times:guess_answer = input_guess(start, end)if guess_answer < answer:print("你猜小了~")history[name].append('失败')elif guess_answer == answer:print("bingo,你猜对了~")history[name].append('成功')breakelse:print("你猜大了~")history[name].append('失败')try_num += 1else:print("你猜的次数太多啦,失败~")history[name].append('失败')def show_history():for name, score in history.items():print('用户名:',name + ',历史成绩', score)def start():guess_name = input("请输入你的名字:")# 检查用户名是否存在,不存在则创建if guess_name not in history.keys():history[guess_name] = []try_to_guess(guess_name)if __name__ == '__main__':select_dict = {'1': show_history, '2': start, '3': exit}while True:guess_select = input('1. 历史记录\n2. 开始游戏\n3. 退出游戏\n请输入数字选择:')select_dict.get(guess_select)()
    
  • 运行结果

python实例 - 猜数字游戏相关推荐

  1. python实现猜数字游戏_python如何实现猜数字游戏

    python实现猜数字游戏的方法:使用条件语句实现判断,代码为[print('猜一个1-20之间的整数.');print('开始猜:');for i in range(1, 7):try:guess ...

  2. python编写猜数字游戏

    一.猜数字游戏介绍 猜数字(又称 Bulls and Cows )是一种古老的的密码破译类益智类小游戏,起源于20世纪中期,一般由两个人或多人玩,也可以由一个人和电脑玩. 二.猜数字游戏规则 先解释标 ...

  3. python随机猜数字游戏_Python小游戏——猜数字教程(random库教程)

    今天来开发一个简单的数字逻辑游戏,猜数字(数字炸弹) 首先开发游戏第一件事,了解需求. 猜数字游戏规则: 计算机随机生成一个指定范围的数字,由玩家来猜测, 之后计算机会根据玩家提供数字来与自己生成的数 ...

  4. python猜数字游戏代码多次_黄哥Python:猜数字游戏代码

    猜数字游戏,电脑随机生存一个[1, 100] 之间的正整数,人输入一个数字,输出大了,还是小了,猜对了,就退出游戏.由于初学者没有学异常,所以没有采用异常. """ 猜数 ...

  5. python外星人入侵游戏代码_黄哥Python:猜数字游戏代码

    """猜数字游戏 黄哥所写黄哥Python培训 2020 全新升级课程"""import randomcomputer_num = rand ...

  6. 用python写猜数字游戏

    猜数字游戏 从名单中随机抽取5位同学,参加猜数字 目的:练习文件操作.循环.判断.构造函数.列表和集合的操作 主要思路: 随机抽取从文件中抽取5个人员参加游戏 判断名单名字的行数 随机生成数,并在文件 ...

  7. python猜数字游戏编程、最后显示猜了几次_用Python完成猜数字游戏

    五一假期第一天突然想学点新东西,于是把Python重新捡起来.按照Crossin的编程教室中的<Python入门教程>写了一段代码,实现猜字游戏. !/usr/bin/python cod ...

  8. 小甲鱼python数字游戏给三次机会_【python 入门案例】小甲鱼python入门 猜数字游戏...

    一.猜数字--一次机会,无提示 print("--------------第一次尝试---------------") temp = input("猜一下小西几心里想的什 ...

  9. python入门——猜数字游戏

    学习资料:www.fishc.com 我的第一个程序: print('-------MissZhou的第一个游戏-------------') temp=input('猜猜她心里想的是那个数字') g ...

最新文章

  1. Android中的多线程(字节跳动)
  2. 基于 Docker 的 MySQL 导入导出数据
  3. 查看 centos 版本
  4. 如何写好注释,让同事赞不绝口?
  5. 自助建站软件越来越友好,三大优点值得用心体会
  6. CentOS下Docker安装
  7. Smart field 1 how is smartField controller loaded - how is main view defined in manifest.json
  8. GIT-Linux(CentOS7)系统部署git服务器
  9. 算法笔记_226:填符号凑算式(Java)
  10. python 字符串替换_学完Python打算出去找工作,怕找不到?看完这篇你可以提高通过率...
  11. php公众号客服系统,公众号在线客服系统哪个好,主流客服系统评测及推荐
  12. ACMMM 2021-多模态宝藏!京东梅涛团队重磅开源第一个适用于多个任务的多模态代码库x-modaler...
  13. 腾讯开源视频动作检测算法DBG,打破两项世界纪录!
  14. 为dhcp服务器授权的作用,有关在 AD DS 中为 DHCP 服务器授权的详细信息
  15. 如何将Tomcat注册为系统服务
  16. Leetcode那点事儿
  17. ubuntu 常用软件
  18. thinkpade470清灰_ThinkPad笔记本E470/T470/T470s禁用触控板教程
  19. 解决方案-联想电脑插耳机后仍然外放
  20. kali翻译插件_Kali2.0上的一款翻译神器【GoldenDict神器介绍】

热门文章

  1. 基于Tesseract训练的数字识别研究
  2. PostgreSQL pg中 lpad函数使用
  3. Centos7 搭建Openv*n
  4. talent 命令_telnet命令,详细教您telnet命令的用法
  5. MOD13Q1.061质量控制(去云等)之GEE
  6. JS 获取当前完整的 url 地址及获取 url 地址中各个部分
  7. 销售管理系统c语言实验报告,汽车销售信息管理系统程序设计实验报告.DOC
  8. 关于广域网与局域网介绍及数据交换
  9. 解决VS中无法调用c++万能库stdc++.h
  10. 慕尼黑工业大学TUM简介