今日書いた最初のアルゴリズムの質問については、もっと簡単な質問を試してください。この質問の要件は次のとおりです。
AとBの2人が数字を推測しています。1人目は1、2、3からランダムに3つの数字を描き、結果は推測です。次に、Bもランダムに3回描画し、結果が答えになります。次に、AとBの結果を比較します。例は次のとおりです。
guess:[1,2,3], answer: [1, 2, 3]
それからそれは3回正しいことがわかります
guess: [1,2,3] answer:[3,2,1]
その結果は正しい推測です
guess: [1,2,3], answer:[3, 3,1]
その結果、推測は0回正しいということになります。
つまり、推測と回答がパラメータとして入力され、正しい推測の数が返されます。
私が思いついた答えは次のとおりです。
**回答1 **:
classSolution:
def game(self, guess: List[int], answer: List[int])- int:
count =0for i inzip(guess, answer):if i[0]== i[1]:
count +=1return count
アイデアは次のとおりです。zipを使用して2つのリストを結合し、各リストの1つの要素で構成されるタプルを返し、比較を繰り返します。それらが等しい場合、一時変数値は+1であり、統計結果が最終的に返されます。
回答2:
classSolution:
def game(self, guess: List[int], answer: List[int])- int:
count =0for i inrange(3):if guess[i]== answer[i]:
count+=1return count
アイデア:もう一度考えてみると、スプライシングの必要がないため、これら2つのリストに対応する値を直接取得して比較できるため、私の考えは複雑であることがわかりました。さらに簡単です。比較を直接ループし、一時変数が等しい場合は+1を追加して、最後に一時変数を返します。
回答3:
classSolution:
def game(self, guess: List[int], answer: List[int])- int:returnsum(map(lambda x,y: x==y, guess, answer))
アイデア:直接比較できるので、もっと簡単にできますか?マップ関数を考えました。マップ関数の最初のパラメーターは、匿名関数を直接使用して要素を比較し、関数の実行結果を収集します。コントラストが等しい場合、結果はTrueであり、コントラストが等しくない場合、結果はFalseです。
最後に、map関数の直接の結果の合計を返します。
回答4:
classSolution:
def game(self, guess: List[int], answer: List[int])- int:if guess == answer:return3
elif guess[0]== answer[0]:if guess[1]== answer[1]:return2else:return1
elif guess[1]== answer[1]:if guess[2]== answer[2]:return2else:return1
elif guess[2]== answer[2]:return1else:return0
アイデア:推測と回答の比較。この状況はこの種の短いリストの比較にのみ適しているため、これは私の最悪の回答です。それより長い場合、コード全体を見ることができません。
コンテンツの拡張:
初心者のためのPythonゲーム:数を推測する
ゲームロジック:コンピューターがランダムに数字を生成し、プレイヤーがその数字を推測します。推測された数字が大きいか小さいかを確認するメッセージが表示されるので、プレイヤーは数字の範囲を狭めることができます。推測が回数内に正しければ、プレーヤーが勝ちます。
関連する知識ポイント:random.randint()、print()、input()(raw_input())
参照実装コード:
#! /usr/bin/env python
# encoding: utf-8
# 印刷を使用する("",end=...)標準
from __future__ import print_function
import os
import sys
import time
import random
# 入力検出
while1:
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 +=1print(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...")continueelse:print("Congraduation! You Win...")breakif count_num == diff:print("You Lose...")
これまで、Python番号推測アルゴリズムの問題の詳細な説明に関するこの記事を紹介しました。推測番号のより関連性の高いPython実装については、ZaLou.Cnの以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後、ZaLou.Cnをさらにサポートしていただければ幸いです。 !
Recommended Posts