游戏名字:猜数字组合

游戏规则:从0到9给出一个特定的数字组合,每个数字只能用一次,用户可以在有限的次数内猜测数字组合,系统根据用户的输入,和组合出的数字对比给出提示,玩家在提示后分析数字的可能组合,并进行下一次猜测。如果猜中则成功,如果次数用尽还没有猜对则失败。

生成随机数字组合

使用了random中的shuffles()方法,它可以将列表里面的元素随机排列,随机排列了0到9的数字组合,取出前两位也就生成了特定了2个数字的组合.

# 数字组合的长度
COM_LENG = 2

def generate_com():
    nums = list(range(10))
    random.shuffle(nums)
    com_num = ''
    for i in range(COM_LENG):
        com_num += str(nums[i])

    return com_num

判断用户的输入

首先用户必须2位,且都是数字组合

def is_num(num):
    # 判断输入的是否是数字
    if num == "":
        print("请输入内容")
        return False

    for j in num:
        if j not in '0 1 2 3 4 5 6 7 8 9'.split():
            return False
    if len(num) != 2:
        print("请输入两位数字的组合")
        return False
    return True

判断数字

根据输入的数字给出不同的提示,如果没有一个数字相同则返回一个提示,比如西瓜,如果数字相同位数不同,则返回香蕉,如果数字值和位置都对则返回苹果,将返回的值随机排列返回

def judge(num):
    # 判断数字
    print(num + "---" + current_num)
    fruits = []
    if num == current_num:
        return fruits
    for i in range(COM_LENG):
        if num[i] == current_num[i]:
            fruits.append("苹果")
        elif num[i] in current_num:
            fruits.append("香蕉")
    if len(fruits) == 0:
        fruits.append("西瓜")
    random.shuffle(fruits)

    return fruits

主程序

首先给出游戏的提示,判断用户输入的字段,次数用完了之后给出游戏结果

print(f"你好,我想到了一个2个数字的组合,而且两个数字不一样,来猜一猜把!,你只有{GUESS_FRE}机会")
print("你每次猜测都会得到对应的提示")
print("西瓜  没有数字相同")
print("苹果  有一个数字对的,而且位置也是对的")
print("香蕉  有一个数字对的,但是位置错的")

current_num = generate_com();
for i in range(GUESS_FRE):
    guess = ''
    while not is_num(guess):
        guess = input()
    fruits = judge(guess)
    if len(fruits) == 0:
        print("恭喜你猜对了")
        gameFlg = False
    else:
        print(fruits)
if guess != current_num:
    print(f"对不起你的机会用完了,正确的答案是{current_num}")

完整程序

import random
# 猜测数字组合

# 数字组合的长度
COM_LENG = 2
# 可猜测的次数
GUESS_FRE = 8

def generate_com():
    nums = list(range(10))
    random.shuffle(nums)
    com_num = ''
    for i in range(COM_LENG):
        com_num += str(nums[i])

    return com_num

def is_num(num):
    # 判断输入的是否是数字
    if num == "":
        print("请输入内容")
        return False

    for j in num:
        if j not in '0 1 2 3 4 5 6 7 8 9'.split():
            return False
    if len(num) != 2:
        print("请输入两位数字的组合")
        return False
    return True


def judge(num):
    # 判断数字
    print(num + "---" + current_num)
    fruits = []
    if num == current_num:
        return fruits
    for i in range(COM_LENG):
        if num[i] == current_num[i]:
            fruits.append("苹果")
        elif num[i] in current_num:
            fruits.append("香蕉")
    if len(fruits) == 0:
        fruits.append("西瓜")
    random.shuffle(fruits)

    return fruits

print(f"你好,我想到了一个2个数字的组合,而且两个数字不一样,来猜一猜把!,你只有{GUESS_FRE}机会")
print("你每次猜测都会得到对应的提示")
print("西瓜  没有数字相同")
print("苹果  有一个数字对的,而且位置也是对的")
print("香蕉  有一个数字对的,但是位置错的")

current_num = generate_com();
for i in range(GUESS_FRE):
    guess = ''
    while not is_num(guess):
        guess = input()
    fruits = judge(guess)
    if len(fruits) == 0:
        print("恭喜你猜对了")
        gameFlg = False
    else:
        print(fruits)
if guess != current_num:
    print(f"对不起你的机会用完了,正确的答案是{current_num}")