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中的条件判断语句基础学习教程
Feb 07 Python
在Django中进行用户注册和邮箱验证的方法
May 09 Python
python批量添加zabbix Screens的两个脚本分享
Jan 16 Python
Python 专题一 函数的基础知识
Mar 16 Python
Python学习小技巧之利用字典的默认行为
May 20 Python
postman模拟访问具有Session的post请求方法
Jul 15 Python
pytorch 固定部分参数训练的方法
Aug 17 Python
Python OrderedDict的使用案例解析
Oct 25 Python
简单了解python字符串前面加r,u的含义
Dec 26 Python
Python基于百度AI实现抓取表情包
Jun 27 Python
python lambda 表达式形式分析
Apr 03 Python
使用Python拟合函数曲线
Apr 14 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
Session的工作方式
2006/10/09 PHP
php与php MySQL 之间的关系
2009/07/17 PHP
PHP实现的简单三角形、矩形周长面积计算器分享
2014/11/18 PHP
PHP生成条形图的方法
2014/12/10 PHP
php天翼开放平台短信发送接口实现方法
2014/12/22 PHP
php选择排序法实现数组排序实例分析
2015/02/16 PHP
php判断当前操作系统类型
2015/10/28 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
一些相见恨晚的 JavaScript 技巧
2010/04/25 Javascript
浅谈JavaScript字符集
2014/05/22 Javascript
javascript中加号(+)操作符的一些神奇作用
2014/06/06 Javascript
浅谈JavaScript字符串与数组
2015/06/03 Javascript
Hallo.js基于jQuery UI所见即所得的Web编辑器
2016/01/26 Javascript
Bootstrap fileinput 上传新文件移除时触发服务器同步删除的配置
2018/10/08 Javascript
如何使用vuex实现兄弟组件通信
2018/11/02 Javascript
微信小程序合法域名配置方法
2019/05/06 Javascript
jQuery表单选择器用法详解
2019/08/22 jQuery
JavaScript实现PC端四格密码输入框功能
2020/02/19 Javascript
Element el-button 按钮组件的使用详解
2021/02/01 Javascript
python如何通过protobuf实现rpc
2016/03/06 Python
Python读取word文本操作详解
2018/01/22 Python
Python3之读取连接过的网络并定位的方法
2018/04/22 Python
python处理数据,存进hive表的方法
2018/07/04 Python
对python xlrd读取datetime类型数据的方法详解
2018/12/26 Python
Python高级特性与几种函数的讲解
2019/03/08 Python
python3.6+selenium实现操作Frame中的页面元素
2019/07/16 Python
python语言线程标准库threading.local解读总结
2019/11/10 Python
Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError
2019/12/20 Python
详解python的xlwings库读写excel操作总结
2021/02/26 Python
英国最大的邮寄种子和植物公司:Thompson & Morgan
2017/09/21 全球购物
哪些情况下不应该使用索引
2015/07/20 面试题
工作时间上网检讨书
2014/02/03 职场文书
新教师岗前培训方案
2014/06/05 职场文书
党的群众路线整改落实情况汇报
2014/10/28 职场文书
《社戏》教学反思
2016/02/22 职场文书
通过shell脚本对mysql的增删改查及my.cnf的配置
2021/07/07 MySQL