2017-02-16 56 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) 

Результирующая гр затем:

array([ True, True, False, False], dtype=bool) 
+1

Как пользователь переходит из int в список? int-> string-> cast char для int в списке? – depperm

+0

nt-> string-> list (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

Здесь описано, что простой способ приблизиться к этому - обработать целые числа, такие как строки, но я подумал, что было бы интересно показать подход, который воздерживался от преобразования целых чисел в строки.

Вы можете написать метод, который принимает целочисленный аргумент и возвращает список цифр. Это может выглядеть примерно так:

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