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中的yield浅析
Jun 16 Python
python实现线程池的方法
Jun 30 Python
Python统计日志中每个IP出现次数的方法
Jul 06 Python
使用Anaconda3建立虚拟独立的python2.7环境方法
Jun 11 Python
python执行CMD指令,并获取返回的方法
Dec 19 Python
Python编程深度学习计算库之numpy
Dec 28 Python
利用Python进行图像的加法,图像混合(附代码)
Jul 14 Python
基于python框架Scrapy爬取自己的博客内容过程详解
Aug 05 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
Jan 14 Python
Python中格式化字符串的四种实现
May 26 Python
Python执行时间的几种计算方法
Jul 31 Python
python简单实现插入排序实例代码
Dec 16 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
印尼林东PWN黄金曼特宁咖啡豆:怎么冲世界上最醇厚的咖啡冲煮教程
2021/03/03 冲泡冲煮
php警告Creating default object from empty value 问题的解决方法
2014/04/02 PHP
php截取字符串函数substr,iconv_substr,mb_substr示例以及优劣分析
2014/06/10 PHP
Codeigniter实现智能裁剪图片的方法
2014/06/12 PHP
php+xml实现在线英文词典查询的方法
2015/01/23 PHP
PHP getallheaders无法获取自定义头(headers)的问题
2016/03/23 PHP
php如何执行非缓冲查询API
2016/07/22 PHP
PHP正则表达式匹配替换与分割功能实例浅析
2017/02/04 PHP
Nginx实现反向代理
2017/09/20 Servers
利用Laravel生成Gravatar头像地址的优雅方法
2017/12/30 PHP
详谈 Jquery Ajax异步处理Json数据.
2011/09/09 Javascript
重写javascript中window.confirm的行为
2012/10/21 Javascript
JQuery打造省市下拉框联动效果
2014/05/18 Javascript
js函数内变量的作用域分析
2015/01/12 Javascript
jQuery插件bxSlider实现响应式焦点图
2015/04/12 Javascript
基于JS实现PHP的sprintf函数实例
2015/11/14 Javascript
jQuery与Ajax以及序列化
2016/02/01 Javascript
原生js实现轮播图的示例代码
2017/02/20 Javascript
微信小程序tabBar模板用法实例分析【附demo源码下载】
2017/11/28 Javascript
JavaScript实现页面中录音功能的方法
2019/06/04 Javascript
微信小程序开发常见问题及解决方案
2019/07/11 Javascript
Python中使用PyHook监听鼠标和键盘事件实例
2014/07/18 Python
python3序列化与反序列化用法实例
2015/05/26 Python
python使用fork实现守护进程的方法
2017/11/16 Python
Django--权限Permissions的例子
2019/08/28 Python
python将下载到本地m3u8视频合成MP4的代码详解
2020/11/24 Python
python math模块的基本使用教程
2021/01/16 Python
CSS3实现自定义Checkbox特效实例代码
2017/04/24 HTML / CSS
阿根廷首家户外用品制造商和经销商:Montagne
2018/02/12 全球购物
shallow copy和deep copy的区别
2016/05/09 面试题
说出你对remoting 和webservice的理解和应用
2014/06/08 面试题
年度安全生产目标责任书
2014/07/23 职场文书
2014年度党员自我评议
2014/09/13 职场文书
手术室护士个人总结
2015/02/13 职场文书
2015年成本会计工作总结
2015/10/14 职场文书
USB TYPE-C 或将成为所有智能手机充电标准
2022/04/21 数码科技