Python猜數(shù)字算法題詳解
今天刷的第一道算法題,先拿一道簡單點的試試手,這道題目的要求是:
兩個人甲乙在猜數(shù)字,甲先從1,2,3三個數(shù)字中隨機抽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兩個作為參數(shù)輸入,返回猜對的次數(shù)。
我想出來的幾個答案如下所示:
答案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將兩個列表進行組合,返回每個列表中單個元素組成的元組,然后循環(huán)對比。如果相等就將臨時變量值+1,最終返回統(tǒng)計結果。
答案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
思路:轉念一想,發(fā)現(xiàn)自己想復雜了,因為不需要拼接,就可以直接取這兩個列表對應的值進行對比。就更簡單了,直接循環(huán)對比,有相等的情況將臨時變量+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函數(shù),map函數(shù)第一個參數(shù)直接使用匿名函數(shù)來進行元素對比,然后收集函數(shù)執(zhí)行結果。如果對比相等,結果是True,對比不相等,結果是False。
最后返回map函數(shù)直接結果的總和即可。
答案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進行對比,這是我認為自己最差的一個答案,因為這種情況只適合這種簡短的列表對比,再長一點整個代碼就沒法看了。
內(nèi)容擴展:
Python初學者小游戲:猜數(shù)字
游戲邏輯:電腦隨機生成一個數(shù)字,然后玩家猜數(shù)字,電腦提示猜的數(shù)字大了還是小了,供玩家縮小數(shù)字范圍,達到既定次數(shù)后,玩家失敗。若在次數(shù)內(nèi)猜對,玩家獲勝。
涉及知識點:random.randint() , print() , input() ( raw_input() )
參考實現(xiàn)代碼:
#!/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 #猜數(shù)字流程 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猜數(shù)字算法題詳解的文章就介紹到這了,更多相關Python實現(xiàn)猜數(shù)字內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
PyTorch快速搭建神經(jīng)網(wǎng)絡及其保存提取方法詳解
本篇文章主要介紹了PyTorch快速搭建神經(jīng)網(wǎng)絡及其保存提取方法詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-04-04Python環(huán)境搭建過程從安裝到Hello World
這篇文章主要介紹了Python環(huán)境搭建過程從安裝到Hello World,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-02-02Python 進程操作之進程間通過隊列共享數(shù)據(jù),隊列Queue簡單示例
這篇文章主要介紹了Python 進程操作之進程間通過隊列共享數(shù)據(jù),隊列Queue,結合實例形式分析了Python進程數(shù)據(jù)共享、隊列數(shù)據(jù)處理相關操作技巧,需要的朋友可以參考下2019-10-10python 實現(xiàn)多維數(shù)組(array)排序
今天小編就為大家分享一篇python 實現(xiàn)多維數(shù)組(array)排序,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02python socket模塊創(chuàng)建和使用套接字示例詳解
這篇文章主要為大家介紹了python socket模塊來創(chuàng)建和使用套接字示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-06-06