如何拆分整数?

时间:2017-02-16 16:44:27

标签: python integer decimal

我不确定如何解决这个问题,但我正在尝试制作猜谜游戏,并就用户的输入提供反馈。例如,如果要猜测的数字是6709并且用户输入6908,则输入将是错误的但仍然部分正确。如果整数的一部分是正确的,程序将告诉用户它是正确的,如果错误则执行相同的操作。

Lets说要猜的数字是6709

用户输入6908

程序会产生这样的输出(是否是否)

将整数拆分成多个部分以便我可以提供反馈的方法是什么?或者这是否有小数位技术?

3 个答案:

答案 0 :(得分:1)

实际上,有一个比这些更简单的解决方案: 将号码转换为列表

Scanner userInput = new Scanner(System.in);

//Two array's where i'll store the coordinates 
double[] coord1 = new double[3];
double[] coord2 = new double[3];

//Array for user commands
String[] commands = { "random", "exit", "help"};

System.out.println("Enter Coordinates: ");
String input = userInput.nextLine();
int arrayIndex = 0;
while (!input.equals("exit")) {

    //convert input to a double
    System.out.println("Enter Coordinates: ");
    double userDouble = Double.parseDouble(input);

    //handle case where array needs to be resized
    if (arrayIndex >= coord1.length) {
        double[] newCoord1 = new double[coord1.length * 2];
        for (int copyIndex = 0; copyIndex < coord1.length; copyIndex++) {
            newCoord1[copyIndex] = coord1[copyIndex];
        }
        coord1 = newCoord1;
    }

    //store the value
    coord1[arrayIndex] = userDouble;
    arrayIndex = arrayIndex + 1;

    //take new input
    input = userInput.nextLine();
}

结果c是:

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)

答案 1 :(得分: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)]))

答案 2 :(得分:0)

这里已经记录了一个简单的方法来处理这个问题就像对待字符串这样的整数,但我认为显示一种不会将整数转换为字符串的方法可能会很有趣。

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

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

请注意,如果您使用的是Python 3,则需要使用//=运算符进行整数除法。

因此,为了获得两个整数的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