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

python实验1 猜数字游戏

实验0:猜数字游戏

  • 1. 猜数字游戏 版本1
  • 2. 猜数字游戏 版本2
  • 3. 猜数字游戏 版本3
  • 4. 猜数字游戏 版本4

1. 猜数字游戏 版本1

  • 题目
    猜数字游戏。在程序中预设一个0-9之间的整数,
    让用户通过键盘输入所猜的数,
    如果大于预设的数,显示“你猜的数字大于正确答案”:
    小于预设的数,显示“你猜的数字小于正确答案”,
    如此循环,直至猜中该数,显示“你猜了N次,猜对了,真厉害”,
    其中N是用户输入数字的次数。
    
  • 题目分析
    • 要实现用户输入数字进行比较大小的功能
    • 要实现判断是否输入的内容为数字
    • 要实现判断用户输入的内容是否为0-9之间数
  • 第一次作答
    # 1. guess_game.py 自己写的answer = 1
    times = 1
    guess_int = 100
    while (not answer == guess_int):# 把判断int和正确区域放在里边,以便于刷新guess_intis_int = Falseis_correct_area = Falseguess = input("请猜一个0-9之间的整数:")# 判断是否为0-9之间的数字while (not is_correct_area):# 利用try-except将字符型转换为int型while (not is_int):try:guess_int = int(guess)is_int = Trueexcept ValueError:guess = input("输入无效,不是一个整数,请再次输入:")if guess_int < 0 or guess_int > 9:guess = input("输入无效,不是0-9之间的整数,请再次输入:")is_int = Falseelse:is_correct_area = Trueprint(guess_int)# 进行比较大小# times作为记的次数times += 1if guess_int < answer:print("你猜的数字小于正确答案")elif guess_int == answer:print("你猜了{}次,猜对了,真厉害".format(times-1))else:print("你猜的数字大于正确答案")if answer == guess_int:break
    • 运行结果
      请猜一个0-9之间的整数:你好
      输入无效,不是一个整数,请再次输入:10
      输入无效,不是0-9之间的整数,请再次输入:8
      8
      你猜的数字大于正确答案
      请猜一个0-9之间的整数:3
      3
      你猜的数字大于正确答案
      请猜一个0-9之间的整数:0
      0
      你猜的数字小于正确答案
      请猜一个0-9之间的整数:1
      1
      你猜了4次,猜对了,真厉害
      请按任意键继续. . .
      
    • 第一次作答总结
      • 第一个while的判断条件写的麻烦,直接就是while True就可以(not answer == guess_int是按照文字意思但是计算机语言就是可以简写)
      • 把分析的三条功能分为三个独立的个体去看实际上可以合并起来写
      • 由于前两个原因导致变量过于繁多
  • 第二次作答
    # 3. guess_game.py 第二次写answer = 3
    N = 0
    while True:try:guess_int = int(input("请输入0-9之间的数字:"))if 0 <= guess_int <= 9:N += 1# 注意N要放在合格变量的里边if guess_int < answer:print("你猜的数字小于正确答案")elif guess_int == answer:print("你猜了{}次,猜对了,真厉害".format(N))breakelse:print("你猜的数字大于正确答案")else:print("输入的范围错误请重新输入。")except ValueError:print("输入格式错误请再次输入。")
    • 运行结果
      请输入0-9之间的数字:你好
      输入格式错误请再次输入。
      请输入0-9之间的数字:10
      输入的范围错误请重新输入。
      请输入0-9之间的数字:8
      你猜的数字大于正确答案
      请输入0-9之间的数字:1
      你猜的数字小于正确答案
      请输入0-9之间的数字:7
      你猜的数字大于正确答案
      请输入0-9之间的数字:5
      你猜的数字大于正确答案
      请输入0-9之间的数字:4
      你猜的数字大于正确答案
      请输入0-9之间的数字:3
      你猜了7次,猜对了,真厉害
      请按任意键继续. . .
      
    • 第二次作答总结
      • 计数变量N需要放在合格变量里边否则输入错误变量之后也会计数
      • try-except
  • chatgpt答案
    # 0.guess_game.py chatgptanswer = 5  # 你预设的正确答案
    times = 0
    while True:guess = input("请猜一个0-9之间的整数:")try:guess_int = int(guess)if 0 <= guess_int <= 9:times += 1  # 统计猜的次数if guess_int < answer:print("你猜的数字小于正确答案")elif guess_int > answer:print("你猜的数字大于正确答案")else:print(f"你猜了{times}次,猜对了,真厉害")breakelse:print("输入无效,不是0-9之间的整数,请再次输入")except ValueError:print("输入无效,不是一个整数,请再次输入")
    • 运行结果
      请猜一个0-9之间的整数:你好
      输入无效,不是一个整数,请再次输入
      请猜一个0-9之间的整数:10
      输入无效,不是0-9之间的整数,请再次输入
      请猜一个0-9之间的整数:5
      你猜了2次,猜对了,真厉害
      请按任意键继续. . .
      

2. 猜数字游戏 版本2

  • 题目
    猜数字游戏续。
    改编1中的猜数字游戏,
    让计算机能够随机产生一个预设数字,
    范围在0-100之间,其他游戏规则不变。
    
  • 作答
    # 1. guess_game.py 自己写的import randomanswer = random.randint(0, 100)
    N = 0
    while True:try:guess_int = int(input("请输入0-100之间的数字:"))if 0 <= guess_int <= 100:N += 1# 注意N要放在合格变量的里边if guess_int < answer:print("你猜的数字小于正确答案")elif guess_int == answer:print("你猜了{}次,猜对了,真厉害".format(N))breakelse:print("你猜的数字大于正确答案")else:print("输入的范围错误请重新输入。")except ValueError:print("输入格式错误请再次输入。")
  • 运行结果
    请输入0-100之间的数字:你好
    输入格式错误请再次输入。
    请输入0-100之间的数字:110
    输入的范围错误请重新输入。
    请输入0-100之间的数字:50
    你猜的数字小于正确答案
    请输入0-100之间的数字:75
    你猜的数字小于正确答案
    请输入0-100之间的数字:85
    你猜的数字大于正确答案
    请输入0-100之间的数字:80
    你猜的数字小于正确答案
    请输入0-100之间的数字:83
    你猜了6次,猜对了,真厉害
    请按任意键继续. . .
    

3. 猜数字游戏 版本3

  • 题目
    猜数字游戏再续。
    用变量maxtimes设置允许猜数字的最大次数
    (比如最多只允许猜6次maxtimes=6)
    并在猜错后提示还有几次机会。
    用for循环改写整个程序,并提交。
    (提示,猜对后可使用break跳出循环)
    
  • 用while循环(没按照要求)
    # 1. guess_game.py 自己写的(while循环增加判断功能的代码)import randomanswer = random.randint(0, 100)
    N = 0
    maxtimes = 6
    while True:  # 改为for循环,但是由于for循环一旦开始就无法改变循环次数,需要进行改变,要有前提条件猜对了才算次数try:guess_int = int(input("请输入0-100之间的数字:"))if 0 <= guess_int <= 100:N += 1if guess_int < answer:if N == maxtimes:  # 由于不想增加while循环的次数所以在这里增加判断break的条件,也可以在下一次循环的时候增加判定break的条件,会减少几行代码print("次数用尽了,最终答案是{}".format(answer))breakelse:print("你猜的数字小于正确答案,你还有{}次机会。".format(maxtimes-N))elif guess_int == answer:print("你猜了{}次,猜对了,真厉害".format(N))breakelse:if N == maxtimes:print("次数用尽了,最终答案是{}".format(answer))breakelse:print("你猜的数字大于正确答案,你还有{}次机会。".format(maxtimes-N))else:print("输入的范围错误请重新输入。")except ValueError:print("输入格式错误请再次输入。")
  • 运行结果
    请输入0-100之间的数字:你好
    输入格式错误请再次输入。
    请输入0-100之间的数字:10000
    输入的范围错误请重新输入。
    请输入0-100之间的数字:10
    你猜的数字小于正确答案,你还有5次机会。
    请输入0-100之间的数字:50
    你猜的数字小于正确答案,你还有4次机会。
    请输入0-100之间的数字:30
    你猜的数字小于正确答案,你还有3次机会。
    请输入0-100之间的数字:303
    输入的范围错误请重新输入。
    请输入0-100之间的数字:2
    你猜的数字小于正确答案,你还有2次机会。
    请输入0-100之间的数字:1
    你猜的数字小于正确答案,你还有1次机会。
    请输入0-100之间的数字:0
    次数用尽了,最终答案是92
    请按任意键继续. . .
    
  • 用for循环少了两个功能
    # 2. guess_game.py for循环没有检查格式的代码
    import randomanswer = random.randint(0, 100)
    N = 0
    maxtimes = 6
    for i in range(maxtimes):guess = int(input("请输入0-100之间的数字:"))N += 1if guess < answer:print("你猜的数字小于正确答案,你还有{}次机会。".format(maxtimes-N))elif guess == answer:print("你猜了{}次,猜对了,真厉害".format(N))else:print("你猜的数字大于正确答案,你还有{}次机会。".format(maxtimes-N))
    if N == maxtimes and guess != answer:  # 代码少但是输出格式不美化print("次数用尽了,最终答案是{}".format(answer))
  • 运行结果
    请输入0-100之间的数字:2
    你猜的数字小于正确答案,你还有5次机会。
    请输入0-100之间的数字:3
    你猜的数字小于正确答案,你还有4次机会。
    请输入0-100之间的数字:4
    你猜的数字小于正确答案,你还有3次机会。
    请输入0-100之间的数字:5
    你猜的数字小于正确答案,你还有2次机会。
    请输入0-100之间的数字:6
    你猜的数字小于正确答案,你还有1次机会。
    请输入0-100之间的数字:7
    你猜的数字小于正确答案,你还有0次机会。
    次数用尽了,最终答案是23
    请按任意键继续. . .
    

4. 猜数字游戏 版本4

  • 题目
    猜数字游戏之续了又续。
    为了增加代码的复用性,
    将猜数字游戏封装为函数GuessSecret(maxtimes),
    将允许猜数字的最大次数maxtimes作为参数。
    在调用GuessSecret时允许用户自己设置maxtimes,美化程序的输出界面。
    
  • 作答
    # 1. guess_game.py 自己写的
    import randomdef GuessSecret(maxtimes):answer = random.randint(0, 100)N = 0while True:  # 改为for循环,但是由于for循环一旦开始就无法改变循环次数,需要进行改变,要有前提条件猜对了才算次数try:guess_int = int(input("请输入0-100之间的数字:"))if 0 <= guess_int <= 100:N += 1if guess_int < answer:if N == maxtimes:  # 由于不想增加while循环的次数所以在这里增加判断break的条件,也可以在下一次循环的时候增加判定break的条件,会减少几行代码print("次数用尽了,最终答案是{}".format(answer))breakelse:print("你猜的数字小于正确答案,你还有{}次机会。".format(maxtimes-N))elif guess_int == answer:print("你猜了{}次,猜对了,真厉害".format(N))breakelse:if N == maxtimes:print("次数用尽了,最终答案是{}".format(answer))breakelse:print("你猜的数字大于正确答案,你还有{}次机会。".format(maxtimes-N))else:print("输入的范围错误请重新输入。")except ValueError:print("输入格式错误请再次输入。")maxtimes = int(input("请输入允许猜的最大次数:"))
    GuessSecret(maxtimes)

流程图过两天更新

http://www.lryc.cn/news/210069.html

相关文章:

  • docker 中给命令起别名
  • PHP的yaf框架自带插件
  • SpringCloud Alibaba【三】Gateway
  • Azure - 机器学习实战:快速训练、部署模型
  • C语言十进制转其它进制
  • 网络建设 之 React数据管理
  • 如何隐藏woocommerce 后台header,woocommerce-layout__header
  • 通俗易懂的理解 解耦 概念
  • 全志A40i android7.1 增加Vlan功能
  • NAT技术与代理服务器
  • 关于报错java.util.ConcurrentModificationException: null的源码分析和解决
  • 使用koa搭建服务器(一)
  • echarts的柱状图的重叠和堆叠实现两个柱体的显示和之前的差值显示
  • 泛积木-低代码 使用攻略
  • 红队专题-从零开始VC++C/S远程控制软件RAT-MFC-远控介绍及界面编写
  • 机器学习(五)如何理解机器学习三要素
  • 【计算机视觉】3D视觉
  • 策略路由和路由策略
  • [动态规划] (一) LeetCode 1137.第N个泰波那契数
  • SystemVerilog语法中,在Class中引用层次化信号
  • 磁盘的结构(磁道,扇区,盘面,柱面,物理地址)
  • uni-app集成uni-simple-router,报错:Uncaught ReferenceError: ROUTES is not defined
  • 几个常用的nosql数据库的操作方式
  • 如何使用 nvm-windows 这个工具来管理你电脑上的Node.js版本
  • 公司电脑禁用U盘的方法
  • Elasticsearch 7.X版本常用语法语句
  • Python分享之数学与随机数 (math包,random包)
  • Linux 基本语句_8_C语言_文件控制
  • 博通BCM575系列 RDMA 网卡驱动 bnxt_re 分析(一)
  • ExcelPatternTool 开箱即用的Excel工具包现已发布!