Python 如何拆分整数?

Python 如何拆分整数?,python,integer,decimal,Python,Integer,Decimal,我真的不知道该怎么做,但我正在尝试做一个猜测游戏,并对用户的输入给出反馈。例如,如果要猜测的数字是6709,而用户输入了6908,则输入可能是错误的,但仍然部分正确。如果整数的一部分是正确的,程序会告诉用户它是正确的,如果它是错误的,程序也会这样做 让我们来猜一下这个数字是6709 用户输入6908 程序将产生如下输出(是否) 将一个整数分割成若干部分以便我提供反馈的方法是什么?或者有小数点技巧吗?事实上,有一个比这些更简单的解决方案: 将数字转换为列表 import numpy as np

我真的不知道该怎么做,但我正在尝试做一个猜测游戏,并对用户的输入给出反馈。例如,如果要猜测的数字是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)

我认为最好将数字转换为字符串,然后比较每个字符:

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)]))

这里有文档记载,一种简单的方法是将整数像字符串一样对待,但我认为展示一种避免将整数转换为字符串的方法可能会很有趣

您可以编写一个接受整数参数并返回数字列表的方法。它可能看起来像这样:

def get_digits(num):
    digits = []
    while num > 0:
        digits.insert(0, num % 10)
        num /= 10
    return digits
请注意,如果您使用的是Python 3,则需要使用
/=
运算符进行整数除法。

因此,为了获得两个整数的
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放入和数组中,其中每个数字都是一个匹配项,并比较每个元素,正如@NicholasFlees所说,这可能更容易
print(['Yes'如果c==guess[i]否则'No'对于enumerate(key)]中的i,c)
如果key是6709,guess是6908
[[['No','Yes'][i1==i2]对于i1,i2在zip中(输入('Type a number'),'6709')]
原始输入
如果Python 2)用户如何从int转换为list?int->string->cast char to int in list?nt->string->list(str)或[int(x)for x in str(num)]@SiddheshMhatre,您可能应该在您的答案中包含这一点,因为这正是OP的问题所在。@SiddheshMhatre
a=[num1]
并没有将
num1
拆分为其组成数字。