Python 轻松学会写程式笔记-第4节47-猜数字游戏(程序练习)

最终程序

import random
start = input('请决定随机数字范围开始值:')
end = input('请决定随机数字范围结束值:')
start = int(start)
end = int(end)

r = random.randint(start, end)
count = 0
while True:
	count += 1 # count = count + 1
	num = input('请猜数字:')
	num = int(num)
	if num == r:
		print('你猜中了!')
		print('这是你猜的第', count, '次')
		break
	elif num > r:
		print('比答案大')
	elif num < r:
		print('比答案小')
	print('这是你猜的第', count, '次')

在这里插入图片描述

出题

我们现在知道怎么产生随机整数之后呢
我们来做一个猜数字的游戏

产生随机整数1到100
然后不要印出来
不要告诉使用者
让使用者重複的去猜
如果猜对的话你就跟他说
终于猜对了
猜错的话你就跟他说
比他猜的比答案大还是小

建立GitHub专案

开始这个程式之前呢
我们先到GitHub来建立专案
我们一律都是从这个步骤开始
那我先打开Google
然后去GitHub

那我建立专案的时候
我专案名称叫做guess-num
猜数字的意思
好 建立专案

然后呢
我现在到桌面来建立一个资料夹叫做guess-num
资料夹通常都取一样

好 那么进来这个资料夹我複製路径
打开cmd
cd到这个路径
然后我们就开始一行一行执行这个指令
一行一行複製贴上

上传上来之后我重新整理
确定一下它有上传上来
有 README在这边

写程序

那我可以开始写了 我的程式
产生一个随机整数
我们要做什么
先import对不对
import random
先把random这个模组
载入进来我的程式
我才可以使用这个模组
来产生随机整数

那它的这个function
它的这个函式叫做randint
这个功能叫做randint
以后我们会讲什么是函式

好 范围是1到100嘛
那我开始值是1 结束值是100
然后我把它存成r
就是这个随机数
我现在把它存下来
右边存到左边嘛
存到r裡面
那产生完随机数字之后呢
我可以开始让使用者猜了
在这里插入图片描述
让使用者重複去猜数字
重複这两个字有没有人让你想到什么
迴圈
迴圈就是重複做事情
所以呢 我们就来写一个while迴圈

那while后面我要接什么
我就先写while True好了
无限巡迴
反正我也不知道它要巡迴几次嘛
我就先写一个无限巡迴
只要使用者猜对的时候
我再离开就好

我要怎么离开
break对不对
break就逃出迴圈嘛
所以我先让它无限走
直到他猜对我就离开的意思

input就让使用者输入
请猜数字
那用input问别人问题
记不记得我要把它存起来
我要存成number好了
num就number的缩写

那你记得
input裡面一定要是字串 这边
我觉得满多人刚开始对字串还有点陌生的时候
都很容易忘了写字串的那个符号
变成这样白色的
那这样就不是字串
这样不行 这根本不是程式码
文字的部分一定要是字串 不然程式根本读不懂
在这里插入图片描述
因为我们让他猜的是数字
所以我要把它转换成整数
num=int(num)
这个就型别转换
把number从原本的字串转换成整数 再存回number
为什么它原本它是字串
因为input都会把东西存成字串
这是input很讨厌的地方
它所有东西都会存成字串

好 那我们现在转换完 变成整数之后呢
我们就可以做比较了
如果他猜的数字 也就number 跟我们的答案一样
我们就印出 你猜对了

然后我们break
break就逃出迴圈嘛
因为就不用再猜
在这里插入图片描述

架构解释

好 那这边我稍微提醒你一下
如果你不知道为什么
这个print的前面有两个空格的话
你一定要搞清楚为什么 前面会有这两个空格
现在这个13行跟14行 是属于这个if裡面的 所以我们才有这个空格

那这整个if 跟上面这两行 这整个大框框(10-14行) 是属于哪裡裡面的
这个while True裡面的嘛
所以我们前面才有这个空格
我们前面才有这些空格
它全部都在while True裡面

如果你猜的数字跟答案一样的话
我就印出你猜中了
然后break

如果不是 记得要用elif 另外如果
另外如果number 是大于我们真正的答案 我们就印出比答案大
另外如果number小于答案 我们就印出比答案小

执行

那我先存档 我们执行看看
我存进guess-num
然后我们档名叫做guess 就是猜的意思

存档之后呢 我来执行看看
python guess.py
请猜数字 1到100
50 50比答案大 25比答案小 35比答案大 代表是25到35
那就28 比答案小 30 那就29了 29 猜中了
停了 我们有break出去了
所以就没有继续问我们了

你一猜中我们程式就停了
那这运作是正常的

上传

我们就把这个版本
上传到GitHub上面去
三部曲
git add 档名guess.py
git commit然后-m 给一个版本讯息 这个叫做basic version好了 基本版
然后呢 git push origin master
上传 重新整理
上来了guess.py

import random

r = random.randint(1, 100)
while True:
	num = imput('请猜数字:')
	num = int(num)
	if num == r:
		print('你猜中了!')
		break
	elif num > r:
		print('比答案大')
	elif num < r:
		print('比答案小')

延伸功能

那么再来我们做一点点延伸功能
我们希望我们的程式可以一边猜 一边显示我们猜第几次
那我要怎么办

我要加一个计数的变数
譬如说我取名叫做count=0
它刚开始是0 因为一次都还没猜
我的变数命名成count
而且我写在while True的外面

如果我写在while True的裡面 会怎么办
那我不是等于每猜一次
我都把我的计数归零
不行
我不能把仪錶板一直归零
所以我要写到外面 才不会归零
在这里插入图片描述
那每猜一次我就把count加1

count = count + 1

c += 1

顺便提醒你一下
count=count+1这个这句话
可以写成

count += 1

它完全等于count=count+1
这是一个快写法
count += 1
是count=count+1的快写法

很纯粹的快写法
简洁而已
那我就写成count +=1
就是把count+1的意思

那每猜一次 我就印出这是猜第几次嘛
那我可以在这个if的最下面 写说这是你猜的第几次 第count次
‘这是你猜的第’, count, ‘次’
这些逗点你要正确
记得 字串 整数 字串
我们是印三个不同的东西
要有逗点分开 记得
你逗点记得后面要记得配空格 这是比较好的写法
在这里插入图片描述
你一定很纳闷为什么会写在21行这边
我这样解释给你听
14行到20行有一个if架构
因为elif是延伸而已
它只是延伸于14行的这个if
所以这整块其实看起来是一整个if架构的

那我故意写在if架构的结束之后
为什么
这样我就不用写三次进去了
我不想要写三次 重複性太高了
重複性在程式码裡面是不好的

本处我有一个错误,我把input写成了imput

我们存档执行看看
一样猜50
这是你猜的第1次 很好 有显示出来
比答案大
50比答案大要猜多少
25 比答案大 10 比答案小 15 比答案小 20
18 猜中了
所以我猜了几次
我猜了6次嘛

我最后一次显示这第5次
可是猜中的时候它怎么没有跟我说 我猜了几次

为什么
你们应该知道为什么吧 看这程式码
因为猜中的时候 我们是不是就break了 逃出迴圈了
所以我们等于就跑到22行了 跑出去了迴圈
所以21行这个显示你猜第几次
就没有执行了 对不对
break我们就逃出去了嘛
那糟糕 那等于我们跳过了这一行
没有遇到21行了
因为被跳过了

那如果是这样
我就把这一行複製进来
最简单的解决办法
以现在这个情况也算是不得已
我们有一点重複性
这边有同样的这一行
可是我为了要猜中的时候也印出这是你猜的第几次
我就把它放进break之前 可以

存档
那我再执行一次
15比答案大 我猜13
猜中了
猜中的时候这次也有印了
这次也有印你猜第5次

那我现在把这个更新版的程式
上传到GitHub
一样三部曲
git add
档名guess.py
commit -m
讯息版本
add count好了
就增加一个计数
然后git push origin master

这个版本讯息我再三强调
它其实不需要跟我一样
但当然你如果不知道写什么
你可以写得跟我一样

上传好了
我一样我回来我的专案这边看
真的有三个版本了
这个版本叫add count

import random
start = input('请决定随机数字范围开始值:')
end = input('请决定随机数字范围结束值:')
start = int(start)
end = int(end)

r = random.randint(start, end)

决定数字范围的功能

我们来加一个最后的功能
就是我们让使用者来决定范围
我不要固定它是1到100
我就input来问使用者请决定随机数字范围开始值
那这个我就存成start好了
那我再存一个end结束值
所以我问使用者开始值跟结束值
那因为这是数字嘛
这个1跟100要是数字 不能是字串
所以我就把这个start跟end 都转换成整数
好 那我产生随机数字的这一行
我就把它换成start跟end
我就没有固定写著1跟100了
我替换成一个变数
这个变数是由使用者决定的
存档

import random
start = input('请决定随机数字范围开始值:')
end = input('请决定随机数字范围结束值:')
start = int(start)
end = int(end)

那我再执行一次
请决定随机数字范围开始值
1到10000好了
5000 比答案大 2500 2500比答案小 4550到4650 4575 4555
我猜了12次 猜到4555
猜中了

那一样我把这最终版本上传到GitHub
git add
档案名称叫guess.py
git commit -m 版本讯息叫做final version好了 最终版
git push origin master
上传上传

上传完了 重新整理
有没有 变四个版本了
final version过来了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值