x = 5
while True:
print('x小于10噢!')
print('我还困在框框里')
break # 逃出回圈
print('我逃出回圈了')
while True:
mode = input('请输入游戏模式:')
if mode == 'q': # quit
break
elif mode == '1':
print('启动模式一')
elif mode == '2':
print('启动模式二')
else:
print('只能输入 1/2/q')
我们再看一次
while就是当 那当他跟if一样
后面都要接一个是非题
是非题就是可以变成True或False的
x = 5
while x < 10:
print('x小于10噢!')
print('我还困在框框里')
x = x + 1
print('我逃出回圈了')
这部分(x < 10)可以变成True或是False
那现在来介绍另外一种while的写法
其实就是把这个条件的这边(x < 10)它可以变成True或False
如果我直接把它写成True呢
反正它也会化简成True或是False
那如果我直接写成True怎么办 那我是不是永远都出不来了
因为你每一次去问教官说 可以出来了吗 可以不要再迴圈了吗
教官说 没有尽头的
因为这个永远都是True 我们会永远都出不来 困在裡面
我们执行看看
好 你看 它永远都出不来了
这就是while True的写法
它一定会进去 因为这个条件已经变True了
所以就等于根本不用问问题了 答案都已经写成是了
是非题都已经把答案写成是了 就写成True了 我们就一定会进来
而且每一次执行完了回去 又True 又执行 又回去 又True 又执行
出不来了耶 怎么办
所以 如果你是用while True这种
强迫一定会进去的这种写法
我们就一定要写break
break就是逃出迴圈的意思,要空一格tab
你看我这边写一个注解 逃出迴圈
它的这个用法 语法叫做break 破坏 break 断掉 停掉的意思
所以我们while True
强迫进去之后
我们印出x小于10喔 我还困在框框裡
然后遇到break我们就出去了
所以我们就会到第六行这边 逃出去
那如果这样的话就只会执行一次了
记得Ctrl C是停掉程式
KeyboardInterrupt
键盘阻断程式 Ctrl C
好 那我按上再执行一次
它只执行了一次 因为遇到break跑出去了
那我们来实际上来练习一个 用这种while True的写法的程式
我开一个新的档案
然后我们今天直接写上while True
然后我们重複的让使用者输入模式
请输入 游戏模式
然后模式我就把它存成mode
先存档
如果mode是q的话 q就代表quit 离开 我就break 我就离开
所以这个q我就把它讲成是一个那个quit的缩写
另外如果模式是 假设使用者输入1 那我们就印出启动游戏模式1
那我们另外如果 模式是2 我们就印出启动游戏模式2
如果都不是 我们就可以印出说 只能输入1或2或q
好 我们执行看看
请输入模式
q就是离开对不对 q就break
q
你看 我们的游戏就结束了
再一次 模式1
你看启动模式1
那我可以重新输入
模式1 有没有 启动模式1
模式2 启动模式2
然后我q 我就离开
所以这种while True还满典型的 会使用在这种情况
就是让使用者重複的输入
然后你告诉它你什么时候想要离开
你告诉它你什么时候想要break 想要离开那个迴圈
如果使用者输入的模式 mode是q的时候我就离开
那我可以稍微提醒你一下
你看像我这边这个1跟2
我是用字串
字串的1你有没有看到 它前后有这个字串的符号
我不是用数字1
如果数字1是这样
如果数字1是这样
为什么我是用字串
因为记得吗
input一定会把东西存成字串
所以这个mode一定是字串
那我懒得把mode转换成数字
它有可能是英文字
我不能转换成数字
所以我做这种比较的时候
通常我们都一定是用跟字串做比较
字串的1 字串的2
那如果都不是的话呢
我们就印出只能输入1 2 或是q