2017-02-16 34 views
0

私はこれについてどうやって行くのか分かりませんが、推測ゲームを作ってユーザーの意見をフィードバックしようとしています。例えば、推測される数が6709であり、ユーザが6908を入力した場合、入力は間違っているが部分的には正しくなる。整数の一部が正しい場合、プログラムはユーザーに正しいと伝え、間違っていれば同じことを行います。整数を分割する方法は?

ことができますすることに方法だろう何

(いいえはいいいえはい)プログラムは、このような出力を生成する推測される数は6709

であると言いますと、ユーザ入力6908

私はフィードバックを与えることができるように部分に整数を分割する?それとも、小数点のテクニックがありますか?

+5

ユーザーは実際には単なる文字列内の文字を推測しています。整数を文字列として扱う場合は、インデックスを使用してコンポーネント文字を調べることができます。 –

+1

INTを配置し、各桁が1つの出現である配列を配列し、各要素を比較します。 – SaggingRufus

+0

または@NicholasFleesが言うように、それはおそらくもっと簡単です – SaggingRufus

答えて

1

実際には、これらのいずれかよりも、簡単な解決策があります: 変換番号は

import numpy as np 

num1 = 1234 
num2 = 1245 
a = list(str(num1)) 
b = list(str(num2))  
// a = [1,2,3,4] 
// b = [1,2,4,5] 

c = np.in1d(a,b) 

をリストする結果、Cは次のようになります。

array([ True, True, False, False], dtype=bool) 
+1

ユーザはどのようにintからリストに移動しますか? int-> string-> charをリストのintにキャストしますか? – depperm

+0

nt-> string-> list(str)またはstr(num)のxのint(x)] –

+2

@SiddheshMhatre、それはあなたの答えにOPを要請しているはずです。 –

0

私はあなたが変換オフ最善だと思います数字を文字列に変換してから各文字を比較します。

userInput = 6908 
answer = 6709 

userInputStr = str(userInput) 
answerStr = str(answer) 
outputStr = " " 
print(outputStr.join(["Y" if i == j else "N" for i, j in zip(userInputStr, answerStr)])) 
0

ここでは、簡単な方法は文字列のような整数を扱うことですが、整数を文字列に変換することを控えたアプローチを示すのは楽しいかもしれないと考えました。

整数引数を取り、数字のリストを返すメソッドを書くことができます。あなたはのリストを取得するために、あなたは、Python 3だから、

を使用している場合は、整数の除算のため//=演算子を使用する必要がありますことを

def get_digits(num): 
    digits = [] 
    while num > 0: 
     digits.insert(0, num % 10) 
     num /= 10 
    return digits 

注:それはこのようになります。二つの整数のためyesno値、あなたはこれを行うことができます:

def get_element_wise_equality(a, b): 
    # a and b are integers 
    digits_a = get_digits(a) 
    digits_b = get_digits(b) 
    if len(digits_a) != len(digits_b): 
     return None 
    result = [] 
    for i in range(len(digits_a)): 
     if digits_a[i] == digits_b[i]: 
      result.append('yes') 
     else 
      result.append('no') 
    return result 
関連する問題