Python猜数字算法题详解

今天刷的第一道算法题,先拿一道简单点的试试手,这道题目的要求是:

两个人甲乙在猜数字,甲先从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实现猜数字内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python实现猜数字小游戏

    Python初学者小游戏:猜数字 游戏逻辑:电脑随机生成一个数字,然后玩家猜数字,电脑提示猜的数字大了还是小了,供玩家缩小数字范围,达到既定次数后,玩家失败.若在次数内猜对,玩家获胜. 涉及知识点:random.randint() , print() , input() ( raw_input() ) 参考实现代码: #!/usr/bin/env python # encoding: utf-8 #使用print("",end=...)标准 from __future__ import

  • python3实现猜数字游戏

    本文实例为大家分享了python3实现猜数字游戏的具体代码,供大家参考,具体内容如下 需求目标: 需求:猜数字游戏 1: 开始游戏产生一个1~100随机数 2: 用户输入,游戏根据输入值提示大或者小 3: 用户根据提示继续输入,知道猜中为止 4: 如果用户输入错误,程序可以处理异常. 代码如下: # coding=utf-8 import random num = random.randint(0, 100) while True: try: guess = int(input("Enter 1

  • python实现猜数字游戏

    说明: 本例改编自<Python编程快速上手>.例子很简单我就不多说了 直接上代码,给初学python练手用. 给你6次机会猜对一个预先生成好的1-20之间的整数.覆盖一下知识点: 条件语句 控制语句 random函数 读取输入 异常处理 代码: """ 猜数字 """ from random import * secretNumber = randint(1, 20) # print(secretNumber) print('猜一个

  • python编写猜数字小游戏

    本文实例为大家分享了python编写猜数字小游戏的具体代码,供大家参考,具体内容如下 import random secret = random.randint(1, 30) guess = 0 tries = 0 print("我叫丁丁,我有一个秘密数字!") print("数字从1到30,你只有6次机会!") while int(guess) != secret and tries < 6: print("你猜的数字是?") guess

  • Python猜数字算法题详解

    今天刷的第一道算法题,先拿一道简单点的试试手,这道题目的要求是: 两个人甲乙在猜数字,甲先从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和a

  • Go Java算法猜数字游戏示例详解

    目录 猜数字游戏 方法一:遍历(Java) 方法一:遍历(Go) 猜数字游戏 你在和朋友一起玩 猜数字(Bulls and Cows)游戏,该游戏规则如下: 写出一个秘密数字,并请朋友猜这个数字是多少.朋友每猜测一次,你就会给他一个包含下述信息的提示: 猜测数字中有多少位属于数字和确切位置都猜对了(称为 "Bulls",公牛), 有多少位属于数字猜对了但是位置不对(称为 "Cows",奶牛).也就是说,这次猜测中有多少位非公牛数字可以通过重新排列转换成公牛数字. 给

  • 基于python实现雪花算法过程详解

    这篇文章主要介绍了基于python实现雪花算法过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Snowflake是Twitter提出来的一个算法,其目的是生成一个64bit的整数: 1bit:一般是符号位,不做处理 41bit:用来记录时间戳,这里可以记录69年,如果设置好起始时间比如今年是2018年,那么可以用到2089年,到时候怎么办?要是这个系统能用69年,我相信这个系统早都重构了好多次了. 10bit:10bit用来记录机器ID

  • Java实现猜数字小游戏详解流程

    猜数字游戏 系统自动生成一个随机整数(1-100), 然后由用户输入一个猜测的数字. 如果输入的数字比该随机数小, 提示 "低 了", 如果输入的数字比该随机数大, 提示 "高了" , 如果输入的数字和随机数相等, 则提示 "猜对了 整理思路 1. 我们玩游戏的时候,都有开始游戏和退出游戏 2. 其次,它要生成一个随机数,如果是固定值,哪有什么意思? 3. 再者,我们要输入数字,根据它反馈的情况进行判断和猜测数字的大小 4. 但是我们不可能说一次就判断成功

  • Python 十大经典排序算法实现详解

    目录 关于时间复杂度 关于稳定性 名词解释 1.冒泡排序 (1)算法步骤 (2)动图演示 (3)Python代码 2.选择排序 (1)算法步骤 (2)动图演示 (3)Python代码 3.插入排序 (1)算法步骤 (2)动图演示 (3)Python代码 4.希尔排序 (1)算法步骤 (2)Python代码 5.归并排序 (1)算法步骤 (2)动图演示 (3)Python代码 6.快速排序 (1)算法步骤 (2)动图演示 (3)Python代码 7.堆排序 (1)算法步骤 (2)动图演示 (3)P

  • Python编程实现粒子群算法(PSO)详解

    1 原理 粒子群算法是群智能一种,是基于对鸟群觅食行为的研究和模拟而来的.假设在鸟群觅食范围,只在一个地方有食物,所有鸟儿看不到食物(不知道食物的具体位置),但是能闻到食物的味道(能知道食物距离自己位置).最好的策略就是结合自己的经验在距离鸟群中距离食物最近的区域搜索. 利用粒子群算法解决实际问题本质上就是利用粒子群算法求解函数的最值.因此需要事先把实际问题抽象为一个数学函数,称之为适应度函数.在粒子群算法中,每只鸟都可以看成是问题的一个解,这里我们通常把鸟称之为粒子,每个粒子都拥有: 位置,可

  • python正则表达式从字符串中提取数字的思路详解

    python从字符串中提取数字 使用正则表达式,用法如下: ## 总结 ## ^ 匹配字符串的开始. ## $ 匹配字符串的结尾. ## \b 匹配一个单词的边界. ## \d 匹配任意数字. ## \D 匹配任意非数字字符. ## x? 匹配一个可选的 x 字符 (换言之,它匹配 1 次或者 0 次 x 字符). ## x* 匹配0次或者多次 x 字符. ## x+ 匹配1次或者多次 x 字符. ## x{n,m} 匹配 x 字符,至少 n 次,至多 m 次. ## (a|b|c) 要么匹配

  • python动态规划算法实例详解

    如果大家对这个生僻的术语不理解的话,那就先听小编给大家说个现实生活中的实际案例吧,虽然现在手机是相当的便捷,还可以付款,但是最初的时候,我们经常会使用硬币,其中,我们如果遇到手中有很多五毛或者1块钱硬币,要怎么凑出来5元钱呢?这么一个过程也可以称之为动态规划算法,下面就来看下详细内容吧. 从斐波那契数列看动态规划 斐波那契数列:Fn = Fn-1 + Fn-2 ( n = 1,2 fib(1) = fib(2) = 1) 练习:使用递归和非递归的方法来求解斐波那契数列的第 n 项 代码如下: #

  • Python中读取文件名中的数字的实例详解

    我们在使用计算机时,我们创建一个个文件夹,可以节省桌面空间,做好整理归纳.python中,每个文件中有着不同的内容,我们要想使用文件,就要读取文件.本文向大家介绍Python读取文件名中的数字的方法:1.使用正则表达式:2.获取匹配的字符串:3.需要整数,可以使用int:4.生成数字. 第一步:可以使用正则表达式 regex = re.compile(r'\d+') 第二步:然后获取匹配的字符串 regex.findall(filename) 这将返回包含数字的字符串列表. 第三步:如果您实际需

  • python 图像增强算法实现详解

    使用python编写了共六种图像增强算法: 1)基于直方图均衡化 2)基于拉普拉斯算子 3)基于对数变换 4)基于伽马变换 5)限制对比度自适应直方图均衡化:CLAHE 6)retinex-SSR 7)retinex-MSR其中,6和7属于同一种下的变化. 将每种方法编写成一个函数,封装,可以直接在主函数中调用. 采用同一幅图进行效果对比. 图像增强的效果为: 直方图均衡化:对比度较低的图像适合使用直方图均衡化方法来增强图像细节 拉普拉斯算子可以增强局部的图像对比度 log对数变换对于整体对比度

随机推荐