python项目之猜数字游戏

猜数字游戏

祝大家儿童节快乐!

今天完成一个简单的猜数字游戏

规则部分:

1、利用0~9之间的数字考虑一个4位数字。同一数字可以多次使用。

2、孩子猜想出一个4位数字告诉家长。

3、家长根据孩子给出的数字计算出Hit分数和Blow分数,并计算结果告诉孩子。

  • 数字和位置都正确为Hit
  • 位置不正确,但是包含了那个数字为Blow

4、重复2、3操作,孩子根据每次的Hit和Blow分数,再猜想下一个4位数字,如果猜中,游戏结束。如果孩子猜想出的数字能计算出‘Hit=4’的结果,就是猜中了;2、3操作的重复次数越少越优秀。


一、生成随机数模块

生成随机数需要用到random模块,用‘import random’语句进行导入,利用‘random.函数名’使用各种各样的相关功能。

首先准备四个变量,然后将多次生成的随机数分别赋值给它们,并把数字连起来现实。

import random
a1 = random.randint(0, 9)
a2 = random.randint(0, 9)
a3 = random.randint(0, 9)
a4 = random.randint(0, 9)
print(str(a1) + str(a2) + str(a3) + str(a4))

注意:这里不能直接生成一个四位数,因为这个游戏是猜测的四位数中的每一位数字。

用变量的方式存储这四个数字,后续处理会有些麻烦,更好的办法是用列表进行集中保存,优化上述的代码段:

import random
a = [random.randint(0, 9),
random.randint(0, 9),
random.randint(0, 9),
random.randint(0, 9)]
print(str(a[0]) + str(a[1]) + str(a[2]) + str(a[3]))
二、正确输入4位数字

排除输入不正确的情况

1、检查是否为4位:

使用一个标识isok,赋初值位False进入while循环,如果不是4位数则执行print语句,继续while循环,如果是四位数,则标识符变成True不再循环。

isok = False
while isok == False:
    b = input('请输入数字:')
    if len(b) != 4:
        print('请输入4位数字')
    else:
        ok = True

2、检查每位是否为数字

num是个标识。

num = True
     for i in range(4):
         if(b[i] < '0') or (b[i] > '9') :
             print('不是数字')
             num = False
             break
      if num :
          isok = True

两段结合为:

isok = False
while isok == False:
    b = input('请输入数字:')
    if len(b) != 4:
        print('请输入4位数字')
    else:
        num = True
        for i in range(4):
            if(b[i] < '0') or (b[i] > '9') :
                print('不是数字')
                num = False
                break
        if num :
            isok = True
print(b[0])
print(b[1])
print(b[2])
print(b[3])
三、判断Hit和Blow

判断Hit,hit表示位置和数字都是一样的状态。

hit = 0
for i in range(4):
    if a[i] == int(b[i]):
        hit = hit + 1
    

判断Blow,blow表示数字一致,但存放位置不同的状态。

blow = 0
for j in range(4):
    if(int(b[j]) == a[i]) and (a[i] != int(b[i])) and (a[j] != int(b[j])):
        blow = blow + 1
        break
print('Hit' + str(hit))
print('Blow' + str(blow))

Hit分数为4时,猜中则结束程序

 if hit == 4:
        print('猜中了!')
        break

完整代码段:

import random
a = [random.randint(0, 9),
random.randint(0, 9),
random.randint(0, 9),
random.randint(0, 9)]
#print(str(a[0]) + str(a[1]) + str(a[2]) + str(a[3]))

isok = False
while isok == False:
    b = input('请输入数字:')
    if len(b) != 4:
        print('请输入4位数字')
    else:
        num = True
        for i in range(4):
            if(b[i] < '0') or (b[i] > '9') :
                print('不是数字')
                num = False
                break
        if num :
            isok = True

hit = 0
for i in range(4):
    if a[i] == int(b[i]):
        hit = hit + 1
    if hit == 4:
        print('猜中了!')
        break

blow = 0
for j in range(4):
    if(int(b[j]) == a[i]) and (a[i] != int(b[i])) and (a[j] != int(b[j])):
        blow = blow + 1
        break
print('Hit' + str(hit))
print('Blow' + str(blow))

下一期出界面版猜数字游戏,敬请期待~

你可能感兴趣的:(python,python,游戏,数学建模)