Python练习题详解之while循环(小白友好)

Python练习题详解之while循环(小白友好)

你好!欢迎来到Python练习题详解系列。为了让小白(也就是我本人)更好的理解代码,打好编程基础,我决定仔细地解说一些练习题。欢迎观看!奥利给!

在开始练习题详解前,我们来复习一下,while究竟是什么东东呢~

知识点:

while循环,在给定的判断条件为 true 时,执行循环体,如果不符合条件,则退出循环体。

看完了概念,让我们马上开始做题吧!

题目1:猜数字

要求:系统随机生成一个1-10之间的数字,玩家来猜,猜错了系统会提示大了还是小了,每局有三次机会,机会用完则游戏结束。
在这里插入图片描述
思路:

  • 要求随机生成,所以应该 import random,并生成一个变量secret来代表这个随机生成的数字。python里面随机生成一个整数的方法是 random.randint(最小值,最大值)。

  • 要求玩家来猜,这说明我们应该设计一个让玩家输入的地方,也就是要用到input函数!input函数是从标准输入流中读取一个字符串。他有几种用法,这里有两种方法介绍给大家。

    方法1: 也就是我的答案写的那样~ 用一个print函数开头,然后让input函数来读取这个玩家输入的字符串
    在这里插入图片描述
    方法2: 直接在input的括号里面写,把输入的字符串直接赋值给temp,int()的意思就是把temp的值转换成整数,然后再赋值给guess~
    在这里插入图片描述

  • 要求大和小有提示,对啦,你猜对了~这个简单的事情就交给我们的if函数吧~ 这里就不赘述啦

  • 要求有三次机会,所以应该做一个while循环。循环里应该有一个可以控制次数的。所以在一开始把times变量设置为3,接下来进入循环的时候写一行代码:times = times - 1, 代表每次while运行,times都会减去1。这是因为在编程世界里面,等号的右边会被赋值给左边。也就是说,第一次运行,times = 2, 第二次运行,times = 1,第三次运行,times = 0.

  • 机会用完则游戏结束,那么我们应该设置一个东东,让系统能做到,当times = 0,出现“机会用完”的提醒。怎么做呢?恭喜你,猜对啦,就是用一个if函数来实现这个简单的条件。就像第20行写的那样,我们告诉系统,当times = 0,就跟玩家说,机会用完啦,并告诉玩家,真正的答案是什么。注意!!这里引出secret变量的时候要用逗号,而不是加号,加号就会失败啦!这是因为print函数里面字符串和变量不能用加号连在一起~

答案(仅供参考):在这里插入图片描述
在这个while循环里面,有一个小巧思,一开始就设定一个guess等于0,然后while的条件是(guess 不等于 secret,和, times 大于 0),所以一开始就让程序进入循环,进入循环之后来到第11行,我们去提取第七行输入的guess数字,然后运行下面的if函数。

这个if 函数的逻辑是这样的:(画图有点麻烦,试图文字说明555,虽然画图真的很清晰)

如果猜对了- “哇你赢了” - “游戏结束”

如果猜错了 - 判断大小并给出结论 - 判断次数并给出“再试一次”或“机会用完” ,接下来有几种情况

  • 如果重新输入猜对了- “哇你赢了” - “游戏结束”
  • 如果重新输入猜错了 - 判断大小并给出结论 - 判断次数并给出“再试一次”或“机会用完”
  • 如果机会用完-“游戏结束”

这里附上一个没有限制次数的答案,也不需要随机数的答案,是我男朋友羊哥一开始写给我的,写的很好很简洁,(不愧是我的老师),可以加深我们对while循环对理解,我们一起来看看。
在这里插入图片描述
这个就是另外一个思路,一开始就判断玩家输入的等不等于我们设置的数字8,如果等于8,就直接win了,如果不等于,再引入while循环(把循环放在else里面)

这里重点来看倒数两行代码。由于while循环的意思是,当条件符合,他会一行一行的循环运行。

那么就会先运行一个if,然后给出大小的提示,然后出现一句,enter again:,让玩家再输入,也就是重新给guess赋值。

赋值好了之后自动来到while的那一行。此时,当这个guess的新值等于8,那就跳出了这个循环,来到最后一行:win。当这个guess的新值不等于8,那就继续运行这个循环。

看懂了吗~我的小伙伴!说了这么多,相信你也看累了吧~休息一下啦,回来之后让我们继续看看还有什么题目吧~

题目2:数字倒数

要求玩家输入一个数字,回车之后,系统自动生成一串连续的倒数。(eg. 输入7,回车按下之后,系统返回 7,6,5,4,3,2,1)
在这里插入图片描述

思路:

  • 要求玩家输入一个数字,那就是要用到我们的input函数来读取玩家输入的数字啦,然后再用int来整型,再赋值给number。

  • 要求连续的倒数,我们怎么才能控制这个数越来越小呢, 聪明的你可能已经想到,我们可以让number = number - 1,那每次出来的number就会比上一个少1。

    于此同时我们还要控制循环什么时候结束,所以我在while后面的条件上写,number大于0,目的就是为了让循环来到1的时候停止。

答案:
在这里插入图片描述
题目3:数字正数shǔ

刚刚那道题是不是很简单呢,那么,如果我按下7,我想要1,2,3,4,5,6,7的正数而不是倒数该怎么办呢?
在这里插入图片描述
思路1:

  • 正数的实现 在这里,我们出现一个问题,如果延续上一道题的思维,做一个number = number + 1,那是无法实现的,只会让数字越来越大。

    那我们不妨试想一下,转变一下思维。是不是可以找一个数,让他一开始等于1,在慢慢循环到最后的那个数呢。是的!

    所以我们在这里做一个变量 i ,一开始先让 i = 1 。在循环的条件中,我们设 i 小于或等于 number的时候,循环开始。然后我们print 一个 i,再写一个 i = i + 1 的式子来实现 i 的递增。那么,他就会 1, 2 ,3,4 ……直到 input 的那个 number。

答案1:
在这里插入图片描述
思路2:

在这里还有另一种做法。如下图答案2所示,第四行中while number的意思就是让while的条件变成 number 不等于 0。(while number 就是 while number != 0 )

接着在while里面写上跟答案1一样的两行代码,最后一行加上 number = number - 1. 这样,当number就会在每一次中减少1,而 i 会在每一次循环中增加,直到number递减变成0,while循环就会结束。

答案2:
在这里插入图片描述
看到这里的小伙伴,恭喜你!已经做了三道题啦,让我们继续冲浪吧!冲冲冲~~~

题目4:星光闪闪(倒数)

(哈哈哈,好像取了一个很好笑的名字,总之,这道题也是很经典的循环题目,让我们一起来看看吧。)

要求:输入一个数,打印这个数的星星数并递减,如图所示:
在这里插入图片描述
思路:
其实这道题跟上面数数字的题目很像!我们想一个办法把数字转化成星星就可以了,对吗~?(激动)

那么,我们就在while循环里做一个print (number 来乘 ’ * ’ )的代码,再让number依次递减,这样每一次循环出来都会让星星数量递减~直到0,就跳出循环啦!

答案:
在这里插入图片描述

如果想要正数,就像这样:
在这里插入图片描述
答案也跟数字那里很像啦!融汇贯通一下,就可以啦!在这里插入图片描述
题目5:星光闪闪(加强版)

上面那道题似乎很简单就被我们攻破了,现在我们花里胡哨一点,要求变成输出如图所示的结果:
在这里插入图片描述
思路:仔细观察这张图片,我们会发现,星星前面是有空格的,那么,有多少空格的,细心的孩子已经发现,第一行有5个星星4个空格,第二行有4个星星3个空格……也就是说,我们在上面答案的基础上,加上对应空格就好了。空格数量就是number-1!

答案:
在这里插入图片描述
那如果想要输出这样呢~:
在这里插入图片描述
思路:除了星星之外,我们需要另一个变量,来从0个空格开始,那么我们引入变量i,让他一开始等于0,然后逐一增加。

答案:
在这里插入图片描述

如果以上的题目你都能掌握!那么,太棒啦,我们已经掌握了while的用法,不要小看这些简单的题目噢~打好基础很重要嘛!!

喜欢的话可以收藏~也可以给兔子点个赞噢~奥利给!

  • 9
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值