python项目之猜数字游戏

news/2025/3/19 23:59:41/

猜数字游戏

祝大家儿童节快乐!

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

规则部分:

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 = Truefor i in range(4):if(b[i] < '0') or (b[i] > '9') :print('不是数字')num = Falsebreakif num :isok = True

两段结合为:

isok = False
while isok == False:b = input('请输入数字:')if len(b) != 4:print('请输入4位数字')else:num = Truefor i in range(4):if(b[i] < '0') or (b[i] > '9') :print('不是数字')num = Falsebreakif 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 + 1break
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 = Truefor i in range(4):if(b[i] < '0') or (b[i] > '9') :print('不是数字')num = Falsebreakif num :isok = Truehit = 0
for i in range(4):if a[i] == int(b[i]):hit = hit + 1if hit == 4:print('猜中了!')breakblow = 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 + 1break
print('Hit' + str(hit))
print('Blow' + str(blow))

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


http://www.ppmy.cn/news/139720.html

相关文章

Linux教程——Linux和UNIX的关系及区别(详解版)

UNIX 与 Linux 之间的关系是一个很有意思的话题。在目前主流的服务器端操作系统中&#xff0c;UNIX 诞生于 20 世纪 60 年代末&#xff0c;Windows 诞生于 20 世纪 80 年代中期&#xff0c;Linux 诞生于 20 世纪 90 年代初&#xff0c;可以说 UNIX 是操作系统中的"老大哥&…

ipad做扩展屏方法

配置&#xff1a; win10系统电脑联想yoga AMD款&#xff08;注意注意注意&#xff01;&#xff01;&#xff01;&#xff01;&#xff09; 问题描述&#xff1a; 一开始是使用XDisplay去进行扩展&#xff0c;奈何不是闪退就是只能复制主屏幕&#xff0c;不能扩展&#xff01…

i5 13600kf配什么主板 显卡

i5-13600KF采用10工艺 14 核 20 线程&#xff0c;睿频 5.1GHz&#xff0c;三级缓存 24.00 MB基础功耗 125W&#xff0c;最大睿频功耗 181W i5 13600KF组装电脑怎么搭配更合适这些点很重要 http://www.adiannao.cn/du i5-13600KF支持目前支持Z690、Z790系列主板&#xff0c;本…

达人评测 iPad mini6怎么样 mini6参数配置

iPad mini 6依然是非全面屏&#xff0c;但会在外形尺寸不变的情况下&#xff0c;提高屏幕显示面积 。 iPad mini新品活动 888红包等你抢 机会不容错过http://iPad.adiannao.cn/7 这意味着mini6的屏幕边框相较之前缩窄&#xff0c;而屏幕分辨率可能是目前iPad 8或者Air 3所采用的…

ipad air 5参数配置

外观方面&#xff0c;iPad Air 5的外观会继续传承上一代4的设计&#xff0c;变化不会太大&#xff0c;直角边框和窄边框屏幕会保留。但并没有配备之前传闻的Face ID面部识别&#xff0c;依旧会采用电源键集合Touch ID的设计。 ipad air 5更多使用感受和评价&#xff1a;http://…

【电脑配置知识】显卡 GPU

1&#xff0c;显卡也是电脑的重要组成部分&#xff0c;承担着输出显示图形的任务&#xff0c;作用是协助CPU&#xff0c;提高整体的运行速度。比如我们玩游戏时&#xff0c;CPU负责计算怪物的血量&#xff0c;显卡负责渲染你和怪物打斗时的场景&#xff0c;这样既减轻了CPU的负…

所有 iPad Pro / Mini / Air 参数详情 汇总

所有 iPad Pro / iPad Mini / iPad Air / iPad 详细参数汇总 近期想买个 iPad 就汇总了一下 wikipedia 上的 iPad 信息做了个表 链接&#xff1a; https://kylebing.cn/tools/ipad iPad Pro iPad Air iPad Mini iPad

ipad air4/ipad8多少钱 ipad air4/ipad8参数配置尺寸

两款 iPad新品——iPad Air 4 和 iPad 8&#xff0c;目前两款产品国行版的售价已经公布&#xff0c;iPad Air 4 售价 4799 元起&#xff0c;iPad 8 售价 2499 元起&#xff0c;前者将于 10 月发售&#xff0c;后者 9 月 17 日接受订购&#xff0c;9 月 20 日发售。 ipad爆降600…