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之有容乃大的list(3)
Sep 15 Python
详解Python中heapq模块的用法
Jun 28 Python
Python采用Django开发自己的博客系统
Sep 29 Python
python实现发送邮件功能
Jul 22 Python
Python基于win32ui模块创建弹出式菜单示例
May 09 Python
django manage.py扩展自定义命令方法
May 27 Python
Python自然语言处理 NLTK 库用法入门教程【经典】
Jun 26 Python
对python中类的继承与方法重写介绍
Jan 20 Python
Python实现EXCEL表格的排序功能示例
Jun 25 Python
Pandas之MultiIndex对象的示例详解
Jun 25 Python
python实现爱奇艺登陆密码RSA加密的方法示例详解
May 27 Python
一个入门级python爬虫教程详解
Jan 27 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+mysql留言本源码
2009/11/11 PHP
smarty自定义函数htmlcheckboxes用法实例
2015/01/22 PHP
用php守护另一个php进程的例子
2015/02/13 PHP
ThinkPHP文件缓存类代码分享
2015/04/22 PHP
laravel框架邮箱认证实现方法详解
2019/11/22 PHP
关于使用 jBox 对话框的提交不能弹出问题解决方法
2012/11/07 Javascript
js用Date对象处理时间实现思路及代码
2013/01/31 Javascript
js控制的遮罩层实例介绍
2013/05/29 Javascript
js+jquery实现图片裁剪功能
2015/01/02 Javascript
基于jQuery+Cookie实现的防止刷新的在线考试倒计时
2015/06/19 Javascript
学习JavaScript设计模式(链式调用)
2015/11/26 Javascript
js和jquery分别验证单选框、复选框、下拉框
2015/12/17 Javascript
再谈JavaScript异步编程
2016/01/27 Javascript
JavaScript+canvas实现七色板效果实例
2016/02/18 Javascript
NodeJS的Promise的用法解析
2016/05/05 NodeJs
Bootstrap中的Dropdown下拉菜单更改为悬停(hover)触发
2016/08/31 Javascript
jQuery Ajax使用FormData对象上传文件的方法
2016/09/07 Javascript
jQuery中show与hide方法用法示例
2016/09/16 Javascript
实例浅析js的this
2016/12/11 Javascript
JavaScript实现图片拖曳效果
2017/09/08 Javascript
vue源码入口文件分析(推荐)
2018/01/30 Javascript
Node.JS循环删除非空文件夹及子目录下的所有文件
2018/03/12 Javascript
vue插件实现v-model功能
2018/09/10 Javascript
electron实现静默打印的示例代码
2019/08/12 Javascript
原生JavaScript实现五子棋游戏
2020/11/09 Javascript
JavaScript实现弹出窗口效果
2020/12/09 Javascript
Python中的包和模块实例
2014/11/22 Python
python访问mysql数据库的实现方法(2则示例)
2016/01/06 Python
python在TXT文件中按照某一字符串取出该字符串所在的行方法
2018/12/10 Python
Django框架HttpResponse对象用法实例分析
2019/11/01 Python
德国箱包网上商店:koffer24.de
2016/07/27 全球购物
三八妇女节活动主持词
2014/03/17 职场文书
个人欠款协议书范本2014
2014/11/02 职场文书
2015年万圣节活动总结
2015/03/24 职场文书
大学生自我鉴定怎么写
2019/05/07 职场文书
Python制作一个随机抽奖小工具的实现
2021/07/07 Python