我不太確定如何去解決這個問題,但我試圖做一個猜謎遊戲,並對用戶的輸入提供反饋。例如,如果要猜測的數字是6709,並且用戶輸入6908,則輸入將是錯誤的,但仍然是部分正確的。如果整數的一部分是正確的,那麼程序會告訴用戶它是正確的,如果它錯了,也會這樣做。如何分割一個整數?
讓我們說要猜的數字是6709
,而且用戶輸入6908
該方案將產生這樣的輸出(是否是否)
,會是什麼方法將整數分成幾部分,以便我可以給出反饋?或者是否有一個小數位的技術呢?
我不太確定如何去解決這個問題,但我試圖做一個猜謎遊戲,並對用戶的輸入提供反饋。例如,如果要猜測的數字是6709,並且用戶輸入6908,則輸入將是錯誤的,但仍然是部分正確的。如果整數的一部分是正確的,那麼程序會告訴用戶它是正確的,如果它錯了,也會這樣做。如何分割一個整數?
讓我們說要猜的數字是6709
,而且用戶輸入6908
該方案將產生這樣的輸出(是否是否)
,會是什麼方法將整數分成幾部分,以便我可以給出反饋?或者是否有一個小數位的技術呢?
其實,還有一個更簡單的解決方案比任何這些的: 轉換號碼列出
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)
用戶如何從int到列表? int-> string->將char轉換爲列表中的int? – depperm
NT->與字符串>列表(STR)或[INT(X)爲X的STR(NUM) –
@SiddheshMhatre,你應該包括在你的答案,因爲這是OP是問。 –
我想你最好關閉轉換然後比較每個字符:
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)]))
這裏已經記錄了一個簡單的方法來處理這個問題,就像處理字符串這樣的整數,但是我認爲展示一種避免將整數轉換爲字符串的方法可能很有趣。
你可以寫取一個整數參數和返回的數字列表的方法。如果你正在使用Python 3
所以爲了得到列表
def get_digits(num):
digits = []
while num > 0:
digits.insert(0, num % 10)
num /= 10
return digits
請注意,您需要使用//=
運營商的整數除法:它可能是這個樣子對於兩個整數yes
和no
值,你可以這樣做:
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
用戶實際上只是一個字符串中的字符猜測。如果將整數視爲字符串,則可以使用索引檢查其組件字符。 –
把INT進入和數組,其中每個數字是一個發生,並比較每個元素 – SaggingRufus
或@NicholasFlees說,這可能是更容易 – SaggingRufus