设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 86130|回复: 72
打印 上一主题 下一主题

【Python 第8课】while

[复制链接]

12

主题

0

好友

81

积分

注册会员

Rank: 2

跳转到指定楼层
#
发表于 2013-7-30 21:40:29 |只看该作者 |正序浏览
先介绍一个新东西:注释。
python里,以“#”开头的文字都不会被认为是可执行的代码。
 print “hello world”

 print "hello world" #输出一行字
是同样的效果。但后者可以帮助开发者更好地理解代码。

在接下来的课程中,我会经常用注释来解释代码。


用if改进完我们的小游戏后,功能已经基本实现了。很多同学做完后纷纷表示,每次只能猜一次,完了之后又得重新run,感觉好麻烦。能不能有办法让玩家一直猜,直到猜中为止?答案很显然,如果这种小问题都解决不了,那python可就弱爆了。


最简单的解决方法就是while。


同if一样,while也是一种控制流语句,另外它也被称作循环语句。继续来看渣画质手绘流程图:

814a5809c93d70cfcf3611b1f9dcd100bba12b37.jpg




程序执行到while处,“当”条件为True时,就去执行while内部的代码,“当”条件为False时,就跳过。

语法为:

while 条件:
 循环执行的语句


同if一样,注意冒号,注意缩进。


今天的栗子:
  1. a = 1 #先a设为1
  2. while a != 0: #a不等于0就一直做
  3.  print "please input"
  4.  a = input()
  5. print "over"
复制代码
想想怎么用while改进小游戏?有多种写法,大家自己思考下,我不多做说明了。下图给出一种方法。


8df996773912b31b8e8576958718367adbb4e112.jpg


注意,这里出现了两层缩进,要保持每层缩进的空格数相同。


到此为止,小游戏已经基本成型了。不过好像还差一点:每次自己都知道答案,这玩起来有神马意思。
明天来讲,怎么让你不知道电脑的答案。


#==== Crossin的编程教室 ====#
微信ID:crossincode
qq群:312723402


面向零基础初学者的编程课
每天5分钟,轻松学编程

f68e6e3d269759eee7be4973b3fb43166c22df15.jpg
边复习边水贴  ---- 搬运工....
回复

使用道具 举报

9

主题

2

好友

164

积分

注册会员

Rank: 2

72#
发表于 2021-5-3 19:22:01 |只看该作者
这样也可以:
  1. ......
  2. while True:
  3. ......
  4.     if answer == num:
  5.         print ‘BINGO’
  6.         break
复制代码
回复

使用道具 举报

9

主题

2

好友

164

积分

注册会员

Rank: 2

71#
发表于 2021-4-27 17:54:09 |只看该作者
取个名字真难 发表于 2013-9-29 21:37
关于最后的小游戏,我用的是第七课的办法,结果是刷屏输出判断结果:
num = 10
   print 'Guess what I th ...

因为answer = input()只出现了一次,
所以输入数字后,while循环条件始终成立,
就会一直输出。
回复

使用道具 举报

0

主题

0

好友

12

积分

新手上路

Rank: 1

70#
发表于 2018-10-17 16:03:52 |只看该作者
a=18
print "猜猜我想的多少"
shuru=int(input())
while shuru<a:
    print "small"
    shuru=int(input())
while shuru>a:
    print "big"
    shuru = int(input())
if shuru==a:
    print "ok"
老师 我这个写法 和你的例子比起来有什么不足的
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

69#
发表于 2018-10-12 10:15:20 |只看该作者
ghaof 发表于 2018-10-12 09:13
请问“crossin先生”:
第二个问题:为何TypeError: '

input拿到的是字符串,要改成 int(input()) 转换下
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

12

积分

新手上路

Rank: 1

68#
发表于 2018-10-12 09:13:37 |只看该作者
本帖最后由 ghaof 于 2018-10-12 09:14 编辑

请问“crossin先生”:
第二个问题:为何TypeError: '<' not supported between instances of 'str' and 'int'

捕获.JPG (60.1 KB, 下载次数: 332)

捕获.JPG

回复

使用道具 举报

0

主题

0

好友

12

积分

新手上路

Rank: 1

67#
发表于 2018-10-12 08:41:38 |只看该作者
本帖最后由 ghaof 于 2018-10-12 09:10 编辑

D:\捕获.JPG

请问“crossin先生”:
第一个问题:为何输入“0”,不能结束(显示“over”)

捕获.JPG (40.48 KB, 下载次数: 303)

捕获.JPG

回复

使用道具 举报

0

主题

0

好友

56

积分

注册会员

Rank: 2

66#
发表于 2017-8-12 00:20:30 |只看该作者
num = 10
print "Guess what I think?"
bingo = False
a = 0


while a != num:
    a = input()


    if a < num:
        print " too small!"


    if a > num:
        print " too big!"


    if a == num:
        print "good!"
        bingo = True
        
        成功了,谢谢先生。不过还是觉得很类似先生给的例子。
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

65#
发表于 2017-8-11 23:52:24 |只看该作者
枫叶落时 发表于 2017-8-11 23:47
先生,可能是我能力有限,我想不到别的办法写出另一种办法。如果不用后面学的知识,只靠前面学的这些知识, ...

while answer != num
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

64#
发表于 2017-8-11 23:50:48 |只看该作者
渭城朝雨 发表于 2017-8-11 19:12
a = 1 #先a设为1
while a != 0: #a不等于0就一直做
 print "please input"

看你的while条件,必须得给个不等于0的值才能执行
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

56

积分

注册会员

Rank: 2

63#
发表于 2017-8-11 23:47:45 |只看该作者
先生,可能是我能力有限,我想不到别的办法写出另一种办法。如果不用后面学的知识,只靠前面学的这些知识,感觉很难做不到不同。自己也试着写了,但是最后改了之后得到的,都和先生写的差不多。请问先生有别的吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-5-2 16:28 , Processed in 0.021255 second(s), 25 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部