今天刷的第一道算法题,先拿一道简单点的试试手,这道题目的要求是:
两个人甲乙在猜数字,甲先从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实现猜数字内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!
我正在尝试创建一个游戏,它将要求用户进行一个猜测,如果猜测低于随机生成的整数,那么它将打印(“太低了!再试一次。”),如果猜测高于猜测,那么它将打印(“太高了!再试一次”),如果猜测等于随机整数,那么它将询问用户她是否想再玩一次。这就是我遇到麻烦的地方--如果输入了“y”,我如何让代码循环回它来重新创建随机整数并开始循环呢?
本文向大家介绍python快排算法详解,包括了python快排算法详解的使用技巧和注意事项,需要的朋友参考一下 快排是python经典算法之一。 1、下面讲解的是什么是快排和快排的图示。 2、快排是一种解决排序问题的运算方法。 3、快排的原理:在数组中任意选择一个数字作为基准,用数组的数据和基准数据进行比较,比基准数字打的数字的基准数字的右边,比基准数字小的数字在基准数字的左边, 第一次排序之后分
本文向大家介绍python实现的简单猜数字游戏,包括了python实现的简单猜数字游戏的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python实现的简单猜数字游戏。分享给大家供大家参考。具体如下: 给定一个1-99之间的数,让用户猜数字,当用户猜错时会提示用户猜的数字是过大还是过小,知道用户猜对数字为止,猜对数字用的次数越少成绩越好。 希望本文所述对大家的Python程序设计有所帮助。
我们时常在电视台看到一些节目,这些节目,会展示一个商品,然后由嘉宾猜价格。嘉宾每猜一次价格,主持人会告诉嘉宾,高了,还是低了。然后嘉宾根据主持人提示,调整报价,直到最后答对。今天这期小编就向大家展示一下这个简单的小游戏。
我们打算用java创建一个程序,在这个程序中,计算机随机猜测1-100之间的一个数字,并允许用户猜测到这个数字。如果这个数字低于随机数,程序应该说:低!而对于更高的,程序应该说:更高!如果用户猜测正确的数字,它应该说祝贺你在X次尝试中猜测正确的数字,这是我到目前为止,当我在cmd中执行时,它只是垃圾邮件要么更高或更低,我需要帮助解决它。
在这个程序中,用户必须想出一个数字,然后让计算机来猜。 2.我试过这个程序,但电脑的猜测很奇怪。计算机不会根据我的指南猜出一个数字。