我不太确定如何去解决这个问题,但我试图做一个猜谜游戏,并对用户的输入提供反馈。例如,如果要猜测的数字是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