Python每日一练——第3天:三种猜数字小游戏
Posted 袁袁袁袁满
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python每日一练——第3天:三种猜数字小游戏相关的知识,希望对你有一定的参考价值。
前言📢📢
Python每日一练来啦,本文已收录于:《Python每日一练》专栏
此专栏目的在于,帮忙学习Python的小白提高编程能力,训练逻辑思维,每周持续更新中,欢迎免费订阅!!!
文章目录
1. 问题描述
需求描述:
- 随机生成一个100以内的整数,共有10次机会开始游戏,输入猜测的数字
- 如果猜小了,提示猜小了
- 如果猜大了,提示猜大了
- 猜对了,提示猜对了,并且结束游戏
- 10次机会用完还没猜对,提示游戏结束,没有猜到。
- 小伙伴们看了问题描述后,一定要自己先练习,再去看博主的代码和解题思路,才能提高自己的编程水平,全靠自觉哟!!!
- 欢迎小伙伴们把自己的思路或答案在评论区留言,博主会选一个最优解答进行置顶。
2. 算法思路
,
1. 使用random库的randint函数生成一个100以内的随机数。
2. 使用 for 循环进行循环10次,每次提示输入要猜测的数字,猜大或猜小都做下相应的提示,并输出还剩下几次机会。
3. 当在10次机会内猜对数字,提示猜对了,你真棒,只用了几次机会。
4. 10次机会用完还没猜对,提示游戏结束,猜不出来吧。
3. 代码实现
方式1:限制只能猜十次
实现代码📝:
"""
Python每日一练
猜数字小游戏
random库 randint的使用方式
random.randint(a,b) 生成一个[a,b]之间的整数 (包含a、b)
"""
import random
# 随机生成一个1-100之间的整数
number = random.randint(0, 100)
# 循环十次结束
for i in range(10):
# input函数从键盘输入要猜的数字,并转换为int类型
choice = int(input("请输入你要猜测的数字:"))
# 大于目标数字
if choice > number:
print("你猜大了")
# 小于目标数字
elif choice < number:
print("你猜小了")
# 等于目标数字
else:
print("你猜对了,真棒!")
print(f"你一共用了i + 1次机会")
break
print(f"还剩9 - i次机会")
else:
print("游戏结束你还没有猜到。")
运行结果👇:
我猜了十次才中运气没谁了
方式2:不限次数猜
实现代码📝:
"""
Python每日一练
猜数字小游戏
random库 randint的使用方式
random.randint(a,b) 生成一个[a,b]之间的整数 (包含a、b)
"""
import random
# 随机生成一个1-100之间的整数
number = random.randint(0, 100)
# 统计所猜次数
count = 0
while True:
# 每循环一次,count加1
count += 1
# input函数从键盘输入要猜的数字,并转换为int类型
choice = int(input("请输入你要猜测的数字:"))
# 大于目标数字
if choice > number:
print("你猜大了")
# 小于目标数字
elif choice < number:
print("你猜小了")
# 等于目标数字
else:
print("你猜对了,真棒!")
print(f"你一共用了count次机会")
break
运行结果👇:
方式3:我们输入答案电脑来猜
接下来我们对这个游戏进行一个小改动,由用户输入一个数字,让电脑猜:
实现代码📝:
"""
Python每日一练
猜数字小游戏
random库 randint的使用方式
random.randint(a,b) 生成一个[a,b]之间的整数 (包含a、b)
"""
import random
# 输入一个正确答案
answer = int(input('请输入答案:'))
# start表示范围开始值
start = 1
# end表示范围结束值
end = 100
# count依然用于统计次数
count = 0
# 电脑程序所猜第一个值,我们先在循环外得到
guess = random.randrange(start, end)
# 每循环一次,改变范围
while True:
count += 1
if guess > answer:
print(f'电脑猜guess,猜大了')
end = guess
guess = random.randrange(start, guess)
elif guess < answer:
print(f'电脑猜guess,猜小了')
start = guess + 1
guess = random.randrange(start, end)
else:
print(f'正确答案:answer,电脑猜:guess:电脑猜了:count次猜中了')
break
运行结果👇:
《100天精通Python从入门到就业》专栏推荐白嫖80G学习大礼包
《100天精通Python从入门到就业》:本专栏专门针对零基础和需要进阶提升的同学所准备的一套完整教学,从0到100的不断进阶深入,后续还有实战项目,轻松应对面试,专栏订阅地址:https://blog.csdn.net/yuan2019035055/category_11466020.html
- 优点:订阅限时9.9付费专栏进入千人全栈VIP答疑群,作者优先解答机会(代码指导、远程服务),群里大佬众多可以抱团取暖(大厂内推机会)!
- 专栏福利:简历指导、招聘内推、每周送实体书、80G全栈学习视频、300本IT电子书:Python、Java、前端、大数据、数据库、算法、爬虫、数据分析、机器学习、面试题库等等
算法题每日一练---第12天:算式900
一、问题描述
小明的作业本上有道思考题:
看下面的算式:
(□□□□-□□□□)*□□=900
其中的小方块代表 0 ~ 9 的数字,这 10 个方块刚好包含了 0 ~ 9 中的所有数字。 注意:0 不能作为某个数字的首位。
小明经过几天的努力,终于做出了答案!如下:
(5012-4987)*36=900
用计算机搜索后,发现还有另外一个解,本题的任务就是:请你算出这另外的一个解。
注意:输出格式需要与示例严格一致; 括号及运算符号不要用中文输入法; 整个算式中不能包含空格。
二、题目要求
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
三、问题分析
题目要求使用0~9十个数字,不能重复使用每一个数字都需要用到,0不能作为首元素完成一个等式。首先,问题规模不是很大,只有10个数字,排成不同的序列,判断是否满足上述条件。
所以,我们使用全排列来解决这个问题。定义一个数组a[10]存储10个数字。
全排列公式:
do
while(next_permutation(a,a+10));
全排列公式头文件algorithm,或者使用万能头文件bits/stdc++.h
拓展
- 不足两位时补0,可以使用%02d,不足两位前面补0,可以判断首位为0的情况
- %d是int普通的存储,%2d按宽度为2,采用右对齐方式输出,若数据位数不到2位,则左边补空格
四、编码实现
```c++
#include<iostream>
#include<algorithm>//全排列头文件
using namespace std;
int main()
int i,n=10,a[10];//初始化定义数组
for(i=0;i<10;i++)//循环给数组a赋值
a[i]=i;//赋值
do
int x=1000a[0]+100a[1]+10a[2]+a[3];//第一个数
int y=1000a[4]+100a[5]+10a[6]+a[7];//第二个数
int z=10a[8]+a[9];//第三个数
if((x-y)z==900)//if条件判断
printf("%04d %04d %02d \\n",x,y,z);//输出符合条件的结果
while(next_permutation(a,a+n));//全排列列出所有结果
return 0;
## 五、输出结果
5012 4987 36
6048 5973 12
7153 6928 04 不满足条件,舍去
![1.png](https://s4.51cto.com/images/blog/202203/24081946_623bb922c373b18346.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
以上是关于Python每日一练——第3天:三种猜数字小游戏的主要内容,如果未能解决你的问题,请参考以下文章