写程序生成不重复的4个数字。人每次输入一个猜测。程序输出2个数字,第一个是数对位置也对的个数,第二个数是数对但位置不对的个数。8次之内猜出来,打印你赢了,否则打印你输了 例如计算机生成的数为5132,人猜测为1234,则计算机输出1 2
时间: 2024-10-07 10:06:52 浏览: 26
编写这样的程序,可以采用随机数生成、列表比较以及循环控制的思路。首先,我们需要创建一个包含四个随机整数的列表作为游戏的秘密数字。然后,用户通过输入一个四位数来进行猜测。对于每一次猜测,我们都会检查用户的输入与秘密数字的每个对应位上数字是否匹配,同时记录下正确位置和错误位置的计数。
以下是一个简单的Python实现:
```python
import random
def generate_secret_numbers():
return [random.randint(0, 9) for _ in range(4)] # 生成4个随机数字
secret_numbers = generate_secret_numbers()
def check_guess(guess):
correct_count = sum(1 for i in range(4) if guess[i] == secret_numbers[i])
misplaced_count = sum(1 for i in range(4) if guess[i] in secret_numbers and guess[i] != secret_numbers[i])
return correct_count, misplaced_count
guesses_left = 8
while guesses_left > 0:
guess = input("请输入一个四位数:")
try:
guess = [int(num) for num in guess]
if len(guess) != 4 or any(num < 0 or num > 9 for num in guess):
print("无效输入,请重新输入一个四位数。")
continue
except ValueError:
print("无效输入,请重新输入一个四位数。")
continue
correct_count, misplaced_count = check_guess(guess)
print(f"正确位置:{correct_count},错误位置:{misplaced_count}")
if correct_count == 4:
print("恭喜,你赢了!")
break
elif guesses_left == 1:
print("很遗憾,你输了。")
else:
print("还有{}次机会。".format(guesses_left))
guesses_left -= 1
```
阅读全文