Python猜数字算法题详解


Posted in Python onMarch 01, 2020

今天刷的第一道算法题,先拿一道简单点的试试手,这道题目的要求是:

两个人甲乙在猜数字,甲先从1,2,3三个数字中随机抽3次,结果是guess。乙随后也随机抽三次,结果是answer。然后对比甲乙两个人的结果。示例如下:

guess:[1,2,3], answer: [1, 2, 3]

那么结果就是猜对了3次

guess: [1,2,3] answer:[3,2,1]

那么结果就是猜对了1次

guess: [1,2,3], answer:[3, 3,1]

那么结果就是猜对了0次

即将guess和answer两个作为参数输入,返回猜对的次数。

我想出来的几个答案如下所示:

答案1

class Solution:
  def game(self, guess: List[int], answer: List[int]) -> int:
    count = 0
    for i in zip(guess, answer):
      if i[0] == i[1]:
        count += 1
    return count

思路是:使用zip将两个列表进行组合,返回每个列表中单个元素组成的元组,然后循环对比。如果相等就将临时变量值+1,最终返回统计结果。

答案2:

class Solution:
  def game(self, guess: List[int], answer: List[int]) -> int:
    count = 0
    for i in range(3):
      if guess[i] == answer[i]:
        count+=1
    return count

思路:转念一想,发现自己想复杂了,因为不需要拼接,就可以直接取这两个列表对应的值进行对比。就更简单了,直接循环对比,有相等的情况将临时变量+1,最后返回临时变量即可。

答案3:

class Solution:
  def game(self, guess: List[int], answer: List[int]) -> int:
    return sum(map(lambda x,y: x==y, guess, answer))

思路:既然可以直接对比,那么能不能再简单点,我就想到了map函数,map函数第一个参数直接使用匿名函数来进行元素对比,然后收集函数执行结果。如果对比相等,结果是True,对比不相等,结果是False。

最后返回map函数直接结果的总和即可。

答案4:

class Solution:
  def game(self, guess: List[int], answer: List[int]) -> int:
    if guess == answer:
      return 3
    elif guess[0] == answer[0]:
      if guess[1] == answer[1]:
        return 2
      else:
        return 1
    elif guess[1] == answer[1]:
      if guess[2] == answer[2]:
        return 2
      else:
        return 1
    elif guess[2] == answer[2]:
      return 1
    else:
      return 0

思路:将guess和answer进行对比,这是我认为自己最差的一个答案,因为这种情况只适合这种简短的列表对比,再长一点整个代码就没法看了。

内容扩展:

Python初学者小游戏:猜数字

游戏逻辑:电脑随机生成一个数字,然后玩家猜数字,电脑提示猜的数字大了还是小了,供玩家缩小数字范围,达到既定次数后,玩家失败。若在次数内猜对,玩家获胜。

涉及知识点:random.randint() , print() , input() ( raw_input() )

参考实现代码:

#!/usr/bin/env python 
# encoding: utf-8 
  
#使用print("",end=...)标准 
from __future__ import print_function 
  
import os 
import sys 
import time 
import random 
  
#输入检测 
  
while 1: 
  os.system('cls') 
  print ("Hello , Welcome to Guess_Number Games...The Number is between 1 - 10...") 
  print ("Please input the level you want(1~10): ",end = '') 
  level = raw_input("") 
  diff = 11-int(level) 
  if diff > 10 or diff <1: 
    print ("Invalid Input...") 
    time.sleep(0.3) 
  else: 
    break
  
#猜数字流程 
  
count_num = 0
ran = random.randint(1,10) 
while count_num < diff: 
  count_num += 1
  print (str(count_num)+": "+"Please input the number you guess: ",end = '') 
  number = raw_input() 
  number = int(number) 
  if number < ran: 
    print ("Too Little...") 
    continue
  elif number > ran: 
    print ("Too Big...") 
    continue
  else: 
    print ("Congraduation! You Win...") 
    break
if count_num == diff: 
  print ("You Lose...")

到此这篇关于Python猜数字算法题详解的文章就介绍到这了,更多相关Python实现猜数字内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python实现partial改变方法默认参数
Aug 18 Python
Python中列表和元组的相关语句和方法讲解
Aug 20 Python
利用Python自动监控网站并发送邮件告警的方法
Aug 24 Python
django 创建过滤器的实例详解
Aug 14 Python
Python使用gRPC传输协议教程
Oct 16 Python
python实现网页自动签到功能
Jan 21 Python
Python学习笔记之迭代器和生成器用法实例详解
Aug 08 Python
Pycharm 2019 破解激活方法图文详解
Oct 11 Python
使用 Python 合并多个格式一致的 Excel 文件(推荐)
Dec 09 Python
浅谈django 重载str 方法
May 19 Python
使用豆瓣源来安装python中的第三方库方法
Jan 26 Python
Python 正则模块详情
Nov 02 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
Feb 29 #Python
python 中的paramiko模块简介及安装过程
Feb 29 #Python
python中使用paramiko模块并实现远程连接服务器执行上传下载功能
Feb 29 #Python
vue学习笔记之动态组件和v-once指令简单示例
Feb 29 #Python
Python实现动态给类和对象添加属性和方法操作示例
Feb 29 #Python
Python使用type动态创建类操作示例
Feb 29 #Python
Django框架静态文件处理、中间件、上传文件操作实例详解
Feb 29 #Python
You might like
PHP 中dirname(_file_)讲解
2007/03/18 PHP
使用PHP socke 向指定页面提交数据
2008/07/23 PHP
PHP 得到根目录的 __FILE__ 常量
2008/07/23 PHP
memcached 和 mysql 主从环境下php开发代码详解
2010/05/16 PHP
php数据结构与算法(PHP描述) 查找与二分法查找
2012/06/21 PHP
PHP调用MsSQL Server 2012存储过程获取多结果集(包含output参数)的详解
2013/07/03 PHP
lnmp安装多版本PHP共存的方法详解
2018/08/02 PHP
浅析javascript闭包 实例分析
2010/12/25 Javascript
JavaScript获取onclick、onchange等事件值的代码
2013/07/22 Javascript
JavaScript实现的in_array函数
2014/08/27 Javascript
JavaScript必知必会(七)js对象继承
2016/06/08 Javascript
Angular外部使用js调用Angular控制器中的函数方法或变量用法示例
2016/08/05 Javascript
webpack打包node.js后端项目的方法
2018/03/10 Javascript
VUE实现图片验证码功能
2020/11/18 Javascript
从零开始在vue-cli4配置自适应vw布局的实现
2020/06/08 Javascript
深入分析JavaScript 事件循环(Event Loop)
2020/06/19 Javascript
JS实现audio音频剪裁剪切复制播放与上传(步骤详解)
2020/07/28 Javascript
Python使用爬虫爬取静态网页图片的方法详解
2018/06/05 Python
使用CodeMirror实现Python3在线编辑器的示例代码
2019/01/14 Python
python根据文章标题内容自动生成摘要的实例
2019/02/21 Python
Python的高阶函数用法实例分析
2019/04/11 Python
Python3中列表list合并的四种方法
2019/04/19 Python
浅谈django 模型类使用save()方法的好处与注意事项
2020/03/28 Python
PyTorch在Windows环境搭建的方法步骤
2020/05/12 Python
HTML5+CSS3模仿优酷视频截图功能示例
2017/01/05 HTML / CSS
东南亚旅游平台:The Trip Guru
2018/01/01 全球购物
美国和加拿大房车出售在线分类广告:RVT.com
2018/04/23 全球购物
美国肌肉和力量商店:Muscle & Strength
2019/06/22 全球购物
数百万免费的图形资源:Freepik
2020/09/21 全球购物
2019年分享net面试的经历和题目
2016/08/07 面试题
历史学专业毕业生求职信
2013/09/27 职场文书
施工员岗位职责
2014/03/16 职场文书
创文明城市标语
2014/06/16 职场文书
派出所副所长四风问题个人整改措施思想汇报
2014/10/13 职场文书
毕业生自我鉴定范文
2019/05/13 职场文书
Python识别花卉种类鉴定网络热门植物并自动整理分类
2022/04/08 Python