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文件中文编码问题
Nov 22 Python
Python基础学习之常见的内建函数整理
Sep 06 Python
python3+requests接口自动化session操作方法
Oct 13 Python
Django安装配置mysql的方法步骤
Oct 15 Python
VSCode Python开发环境配置的详细步骤
Feb 22 Python
Python+selenium点击网页上指定坐标的实例
Jul 05 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
May 24 Python
python中关于数据类型的学习笔记
Jul 19 Python
详解如何在PyCharm控制台中输出彩色文字和背景
Aug 17 Python
python开根号实例讲解
Aug 30 Python
如何实现一个python函数装饰器(Decorator)
Oct 12 Python
python中sqllite插入numpy数组到数据库的实现方法
Jun 21 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
动态网站web开发 PHP、ASP还是ASP.NET
2006/10/09 PHP
PHP模块 Memcached功能多于Memcache
2011/06/14 PHP
如何获知PHP程序占用多少内存(memory_get_usage)
2012/09/23 PHP
PHP生成条形图的方法
2014/12/10 PHP
PHP创建PowerPoint2007文档的方法
2015/12/10 PHP
PHP获取当前日期及本周一是几月几号的方法
2017/03/28 PHP
PHP长网址与短网址的实现方法
2017/10/13 PHP
JavaScript 实现??打印?理
2007/04/28 Javascript
js异或加解密效果代码
2008/06/25 Javascript
JS 文件传参及处理技巧分析
2010/05/13 Javascript
基于jquery库的tab新形式使用
2012/11/16 Javascript
JS中setInterval、setTimeout不能传递带参数的函数的解决方案
2013/04/28 Javascript
鼠标移到导航当前位置的LI变色处于选中状态
2013/08/23 Javascript
ie与ff下的event事件使用介绍
2013/11/25 Javascript
JavaScript中Null与Undefined的区别解析
2015/06/30 Javascript
JS代码实现table数据分页效果
2016/05/26 Javascript
Vue.js弹出模态框组件开发的示例代码
2017/07/26 Javascript
Vue计算属性的使用
2017/08/04 Javascript
vue多页面开发和打包正确处理方法
2018/04/20 Javascript
javascript实现获取中文汉字拼音首字母
2020/05/19 Javascript
Javascript前端下载后台传来的文件流代码实例
2020/08/18 Javascript
python实现红包裂变算法
2016/02/16 Python
Django文件存储 自己定制存储系统解析
2019/08/02 Python
Python实现CNN的多通道输入实例
2020/01/17 Python
美国值得信赖的婚恋交友网站:eHarmony
2018/10/04 全球购物
分布式数据库需要考虑哪些问题
2013/12/08 面试题
自荐信模版
2013/10/24 职场文书
英文请假条
2014/04/11 职场文书
体育专业自荐书
2014/05/29 职场文书
大学生万能检讨书范例
2014/10/04 职场文书
华清池导游词
2015/02/02 职场文书
离婚协议书范本(2016最新版)
2016/03/18 职场文书
Java数组与堆栈相关知识总结
2021/06/29 Java/Android
详细聊聊MySQL中慢SQL优化的方向
2021/08/30 MySQL
MySQL常用慢查询分析工具详解
2022/08/14 MySQL