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的面向对象思想分析
Jan 14 Python
python实现将元祖转换成数组的方法
May 04 Python
python判断给定的字符串是否是有效日期的方法
May 13 Python
mvc框架打造笔记之wsgi协议的优缺点以及接口实现
Aug 01 Python
Python输出\u编码将其转换成中文的实例
Dec 15 Python
在Python中,不用while和for循环遍历列表的实例
Feb 20 Python
python多线程实现TCP服务端
Sep 03 Python
复化梯形求积分实例——用Python进行数值计算
Nov 20 Python
在pytorch中对非叶节点的变量计算梯度实例
Jan 10 Python
python 6种方法实现单例模式
Dec 15 Python
Python基于爬虫实现全网搜索并下载音乐
Feb 14 Python
Python实现简单的猜单词
Jun 15 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基础知识:类与对象(3) 构造函数和析构函数
2006/12/13 PHP
解析htaccess伪静态的规则
2013/06/18 PHP
PHP开启opcache提升代码性能
2015/04/26 PHP
JS无法捕获滚动条上的mouse up事件的原因猜想
2012/03/21 Javascript
JS对select控件option选项的增删改查示例代码
2013/10/21 Javascript
js写的评论分页(还不错)
2013/12/23 Javascript
JavaScript中实现依赖注入的思路分享
2015/01/15 Javascript
Javascript基础教程之switch语句
2015/01/18 Javascript
javascript实现图片循环渐显播放的方法
2015/02/24 Javascript
JS+CSS实现Div弹出窗口同时背景变暗的方法
2015/03/04 Javascript
jquery中radio checked问题
2015/03/16 Javascript
Jquery实现弹性滑块滑动选择数值插件
2015/08/08 Javascript
整理一下常见的IE错误
2016/11/18 Javascript
将angular.js项目整合到.net mvc中的方法详解
2017/06/29 Javascript
jQuery中的$是什么意思及 $. 和 $().的区别
2018/04/20 jQuery
微信小程序scroll-view实现字幕滚动
2018/07/14 Javascript
通过cordova将vue项目打包为webapp的方法
2019/02/02 Javascript
ES6使用 Array.includes 处理多重条件用法实例分析
2020/03/02 Javascript
JS正则表达式验证密码强度
2020/03/18 Javascript
python获取糗百图片代码实例
2013/12/18 Python
python缩进长度是否统一
2020/08/02 Python
Python 测试框架unittest和pytest的优劣
2020/09/26 Python
CSS3+font字体文件实现圆形半透明菜单具体步骤(图解)
2013/06/03 HTML / CSS
Chantelle仙黛尔内衣美国官网:法国第一品牌内衣
2018/07/26 全球购物
一套Delphi的笔试题二
2013/05/11 面试题
教师实习自我鉴定
2013/12/14 职场文书
乡镇交通安全实施方案
2014/03/29 职场文书
学习型班组申报材料
2014/05/31 职场文书
学校督导评估方案
2014/06/10 职场文书
2014年银行年终工作总结
2014/12/19 职场文书
2015年学生会工作总结范文
2015/03/31 职场文书
党员转正介绍人意见
2015/06/03 职场文书
小学校园广播稿
2015/08/18 职场文书
《灰雀》教学反思
2016/02/19 职场文书
导游词之沈阳清昭陵
2019/12/28 职场文书
Opencv中cv2.floodFill算法的使用
2021/06/18 Python