• python实验1 猜数字游戏


    1. 猜数字游戏 版本1

    • 题目
      猜数字游戏。在程序中预设一个0-9之间的整数,
      让用户通过键盘输入所猜的数,
      如果大于预设的数,显示“你猜的数字大于正确答案”:
      小于预设的数,显示“你猜的数字小于正确答案”,
      如此循环,直至猜中该数,显示“你猜了N次,猜对了,真厉害”,
      其中N是用户输入数字的次数。
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
    • 题目分析
      • 要实现用户输入数字进行比较大小的功能
      • 要实现判断是否输入的内容为数字
      • 要实现判断用户输入的内容是否为0-9之间数
    • 第一次作答
      # 1. guess_game.py 自己写的
      
      
      answer = 1
      times = 1
      guess_int = 100
      while (not answer == guess_int):
          # 把判断int和正确区域放在里边,以便于刷新guess_int
          is_int = False
          is_correct_area = False
          guess = input("请猜一个0-9之间的整数:")
          # 判断是否为0-9之间的数字
          while (not is_correct_area):
              # 利用try-except将字符型转换为int型
              while (not is_int):
                  try:
                      guess_int = int(guess)
                      is_int = True
                  except ValueError:
                      guess = input("输入无效,不是一个整数,请再次输入:")
              if guess_int < 0 or guess_int > 9:
                  guess = input("输入无效,不是0-9之间的整数,请再次输入:")
                  is_int = False
              else:
                  is_correct_area = True
                  print(guess_int)
          # 进行比较大小
          # times作为记的次数
          times += 1
          if guess_int < answer:
              print("你猜的数字小于正确答案")
          elif guess_int == answer:
              print("你猜了{}次,猜对了,真厉害".format(times-1))
          else:
              print("你猜的数字大于正确答案")
          if answer == guess_int:
              break
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
      • 34
      • 35
      • 36
      • 37
      • 38
      • 运行结果
        请猜一个0-9之间的整数:你好
        输入无效,不是一个整数,请再次输入:10
        输入无效,不是0-9之间的整数,请再次输入:8
        8
        你猜的数字大于正确答案
        请猜一个0-9之间的整数:3
        3
        你猜的数字大于正确答案
        请猜一个0-9之间的整数:0
        0
        你猜的数字小于正确答案
        请猜一个0-9之间的整数:1
        1
        你猜了4次,猜对了,真厉害
        请按任意键继续. . .
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
      • 第一次作答总结
        • 第一个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))
                      break
                  else:
                      print("你猜的数字大于正确答案")
              else:
                  print("输入的范围错误请重新输入。")
          except ValueError:
              print("输入格式错误请再次输入。")
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 运行结果
        请输入0-9之间的数字:你好
        输入格式错误请再次输入。
        请输入0-9之间的数字:10
        输入的范围错误请重新输入。
        请输入0-9之间的数字:8
        你猜的数字大于正确答案
        请输入0-9之间的数字:1
        你猜的数字小于正确答案
        请输入0-9之间的数字:7
        你猜的数字大于正确答案
        请输入0-9之间的数字:5
        你猜的数字大于正确答案
        请输入0-9之间的数字:4
        你猜的数字大于正确答案
        请输入0-9之间的数字:3
        你猜了7次,猜对了,真厉害
        请按任意键继续. . .
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        • 16
        • 17
      • 第二次作答总结
        • 计数变量N需要放在合格变量里边否则输入错误变量之后也会计数
        • try-except
    • chatgpt答案
      # 0.guess_game.py chatgpt
      
      
      answer = 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}次,猜对了,真厉害")
                      break
              else:
                  print("输入无效,不是0-9之间的整数,请再次输入")
          except ValueError:
              print("输入无效,不是一个整数,请再次输入")
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 运行结果
        请猜一个0-9之间的整数:你好
        输入无效,不是一个整数,请再次输入
        请猜一个0-9之间的整数:10
        输入无效,不是0-9之间的整数,请再次输入
        请猜一个0-9之间的整数:5
        你猜了2次,猜对了,真厉害
        请按任意键继续. . .
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7

    2. 猜数字游戏 版本2

    • 题目
      猜数字游戏续。
      改编1中的猜数字游戏,
      让计算机能够随机产生一个预设数字,
      范围在0-100之间,其他游戏规则不变。
      
      • 1
      • 2
      • 3
      • 4
    • 作答
      # 1. guess_game.py 自己写的
      
      import random
      
      
      answer = 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))
                      break
                  else:
                      print("你猜的数字大于正确答案")
              else:
                  print("输入的范围错误请重新输入。")
          except ValueError:
              print("输入格式错误请再次输入。")
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
    • 运行结果
      请输入0-100之间的数字:你好
      输入格式错误请再次输入。
      请输入0-100之间的数字:110
      输入的范围错误请重新输入。
      请输入0-100之间的数字:50
      你猜的数字小于正确答案
      请输入0-100之间的数字:75
      你猜的数字小于正确答案
      请输入0-100之间的数字:85
      你猜的数字大于正确答案
      请输入0-100之间的数字:80
      你猜的数字小于正确答案
      请输入0-100之间的数字:83
      你猜了6次,猜对了,真厉害
      请按任意键继续. . .
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15

    3. 猜数字游戏 版本3

    • 题目
      猜数字游戏再续。
      用变量maxtimes设置允许猜数字的最大次数
      (比如最多只允许猜6次maxtimes=6)
      并在猜错后提示还有几次机会。
      用for循环改写整个程序,并提交。
      (提示,猜对后可使用break跳出循环)
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
    • 用while循环(没按照要求)
      # 1. guess_game.py 自己写的(while循环增加判断功能的代码)
      
      import random
      
      
      answer = 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 += 1
                  if guess_int < answer:
                      if N == maxtimes:  # 由于不想增加while循环的次数所以在这里增加判断break的条件,也可以在下一次循环的时候增加判定break的条件,会减少几行代码
                          print("次数用尽了,最终答案是{}".format(answer))
                          break
                      else:
                          print("你猜的数字小于正确答案,你还有{}次机会。".format(maxtimes-N))
                  elif guess_int == answer:
                      print("你猜了{}次,猜对了,真厉害".format(N))
                      break
                  else:
                      if N == maxtimes:
                          print("次数用尽了,最终答案是{}".format(answer))
                          break
                      else:
                          print("你猜的数字大于正确答案,你还有{}次机会。".format(maxtimes-N))
              else:
                  print("输入的范围错误请重新输入。")
          except ValueError:
              print("输入格式错误请再次输入。")
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
    • 运行结果
      请输入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
      请按任意键继续. . .
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
    • 用for循环少了两个功能
      # 2. guess_game.py for循环没有检查格式的代码
      import random
      
      
      answer = random.randint(0, 100)
      N = 0
      maxtimes = 6
      for i in range(maxtimes):
          guess = int(input("请输入0-100之间的数字:"))
          N += 1
          if 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))
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
    • 运行结果
      请输入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
      请按任意键继续. . .
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14

    4. 猜数字游戏 版本4

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

    流程图过两天更新

  • 相关阅读:
    VSCode remote无法链接
    python 使用requests爬取百度图片并显示
    使用Hot Chocolate和.NET 6构建GraphQL应用(9) —— 实现Mutate更新数据
    /usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5.15‘ not found
    Vue/Nuxt框架开发的PC端网站兼容平板设备的
    MySQL为自动编号的字段赋值
    WPF 项目开发入门(四) MVVM 模式 与 TreeView树组件
    html自定义大屏6宫格9宫格12宫格多宫格替换合并,jquery实现自定义大屏宫格替换
    【前端版】分布式医疗云平台【登陆页面修改、页面 title 修改、登陆接口准备说明、把前端和后端统一使用 git 管理、启动前端 VUE 项目、用户登陆】(十七)
    高精度延时实验
  • 原文地址:https://blog.csdn.net/m0_73293867/article/details/134070533