比较两个三位数

Comparing two three-digits number

我在一个名为 'strike or ball'

的游戏中卡住了

IndexError 出来了。

这有一个非常简单的规则。 如果我输入三个类型为 'str' 的数字,它将与 'random'.

生成的另外三个数字进行比较
  1. 如果他们只共享一个数字并且放在同一个 space 中。例如 274、286 它只有一个 'strike'
  2. 即使共享一个数字并且在不同的 space,例如 274、826 它只有一个 'ball'
  3. 如果最后我正确地输入了三位数字,它会变成“3 击”。

("123", "472") [0, 1]

("742", "472") [1, 2]

("472", "472") [3, 0]

这是一些例子。

这是我的尝试,当然是错误的...

def get_strikes_or_ball(user_input_number, random_number):
    a = str(user_input_number)
    b = str(random_number)
    c = [val for val in a if val in b]
    i = 0
    strike = 0
    ball = 0
    while c:
        if a[i] == b[i]:
            strikes = strikes + 1
        elif a[i] == b[i+1]:
            ball = ball + 1
        elif a[i] == b[e+2]:
            ball = ball + 1
    result = str('strike : ', strike,"  ", 'ball : ', ball)
    # ==================================
    return result

如果我没理解错的话,您想计算 a 中有多少个数字也在 b 中处于相同位置(好球)或另一个位置(球)。如果这是正确的,那么应该这样做:

for i in range(0, 3):
    if a[i] in b:
        if a[i] == b[i]:
            strikes = strikes + 1
        else:
            balls = balls + 1