You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

技术咨询:变量数字转数组及猜码游戏双循环实现问题

Hey there! Let's break down your two questions one by one, focusing on the guess code game you're building.

1. Storing Each Digit of a Variable into an Array Using a For Loop

First, let's cover how to extract each digit from a number or string and store it in an array. The approach varies slightly depending on whether your input is an integer or a string (like user input):

If your input is a string (e.g., user's 4-digit guess):

Most of the time, user input comes as a string, so you can loop through each character, convert it to an integer, and add it to your array:

# Example: User enters "1234"
guess_input = input("Enter your 4-digit guess: ")
guess_array = []
for char in guess_input:
    guess_array.append(int(char))
# Result: guess_array = [1, 2, 3, 4]

If your input is an integer (e.g., the secret code stored as a number):

Convert the integer to a string first, then follow the same loop approach:

# Example: Secret code is 4567
secret_code = 4567
code_array = []
for char in str(secret_code):
    code_array.append(int(char))
# Result: code_array = [4, 5, 6, 7]

2. Implementing the Match Counting Logic for Your Guess Game

You mentioned needing two loops: one for exact matches (correct digit in correct position) and another for partial matches (correct digit in wrong position). Here's a step-by-step implementation using Python, with clear explanations of each loop:

Step 1: Initialize Variables

First, set up your secret code, user's guess, and tracking variables:

# Secret code (as an array of integers)
code = [1, 2, 3, 4]
# User's guess (converted to an array as shown earlier)
guess = [1, 3, 2, 4]

# Track exact matches and partial matches
exact_matches = 0
partial_matches = 0

# Boolean array to track which code digits are still available for partial matching
# Start with all True (meaning all digits are unused initially)
varr = [True] * len(code)

Step 2: First Loop – Count Exact Matches

Loop through each position to check if the guess digit matches the code digit exactly. When a match is found, increment the exact count and mark that code digit as used (set varr[i] to False so it's not reused in the partial match loop):

for i in range(len(code)):
    if guess[i] == code[i]:
        exact_matches += 1
        varr[i] = False  # Mark this code digit as matched exactly, can't be used for partial

Step 3: Second Loop – Count Partial Matches

Now, loop through each guess digit that wasn't an exact match. For each, check if it exists in the code digits that are still available (where varr[j] is True). If found, increment the partial count and mark that code digit as used:

for i in range(len(guess)):
    # Skip if this guess digit was already an exact match
    if guess[i] == code[i]:
        continue
    
    # Look for this guess digit in unused code digits
    for j in range(len(code)):
        if varr[j] and guess[i] == code[j]:
            partial_matches += 1
            varr[j] = False  # Mark this code digit as used for partial match
            break  # Move to next guess digit to avoid counting duplicates

Step 4: Output the Results

Finally, print the counts:

print(f"Exact matches (correct digit, correct position): {exact_matches}")
print(f"Partial matches (correct digit, wrong position): {partial_matches}")

How This Works

  • The first loop ensures we don't double-count digits that are already in the correct position.
  • The second loop checks each remaining guess digit against unused code digits, making sure each code digit is only counted once for partial matches.

For example, with the code [1,2,3,4] and guess [1,3,2,4], the output would be:

Exact matches (correct digit, correct position): 2
Partial matches (correct digit, wrong position): 2

内容的提问来源于stack exchange,提问作者user9581642

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:35:12