2017-02-16 45 views
0

我不太確定如何去解決這個問題,但我試圖做一個猜謎遊戲,並對用戶的輸入提供反饋。例如,如果要猜測的數字是6709,並且用戶輸入6908,則輸入將是錯誤的,但仍然是部分正確的。如果整數的一部分是正確的,那麼程序會告訴用戶它是正確的,如果它錯了,也會這樣做。如何分割一個整數?

讓我們說要猜的數字是6709

,而且用戶輸入6908

該方案將產生這樣的輸出(是否是否)

,會是什麼方法將整數分成幾部分,以便我可以給出反饋?或者是否有一個小數位的技術呢?

+5

用戶實際上只是一個字符串中的字符猜測。如果將整數視爲字符串,則可以使用索引檢查其組件字符。 –

+1

把INT進入和數組,其中每個數字是一個發生,並比較每個元素 – 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->與字符串>列表(STR)或[INT(X)爲X的STR(NUM) –

+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