以前咱们提到,计算机利用数据有三种方式:1.直接使用数据,2.计算和加工数据,3.用数据作判断。编程
除了while循环,我以前学过的if...elif...else
语句,也涉及到【利用数据用作逻辑判断】。当逻辑判断经过才会继续执行:markdown
固然,if和while有个显著的区别。那就是if语句只会执行一次,而while是循环语句,只要条件判断为真,就一直循环执行。函数
这个“判断”的过程,在计算机的世界里是如何发生的呢?spa
计算机的逻辑判断,只有两种结果,就是True
(英文意思是“真”)和False
(英文意思是“假”),没有灰色地带。这个计算真假的过程,叫作【布尔运算】。code
True
和
False
,也就叫作【布尔值】。
咱们举个例子,请你运行如下代码,看看结果是True仍是False:游戏
print(3<5) True 真
print(3>5) False 假字符串
print('长安'=='长安') True 真input
print('长安'!='金陵') True 真for循环
print()
括号内的计算其实就是【布尔运算】。终端上出现的True和False咱们称为【布尔值】。class
print()
括号内的计算其实就是【布尔运算】。终端上出现的True和False咱们称为【布尔值】。
第1行和第2行代码很简单啦。咱们看后面两行:两个字符串'长安'相等,结果正确,因此打印为True。而字符串'长安'和字符串'金陵'作比较,结果不相等,!=
表明不等号,结果正确,打印为True。
只有当条件判断为True时,if和while后面的子句才会执行下去。
好,如今咱们来体验一下上面出现过的这段奇怪的代码,你会发现它执行后,终端上不显示任何结果:
while False:
print('while False')
这是由于while循环执行,必需要while后的条件为“真”,而【布尔值】False自己就是“假”,因此这个循环一次都没运行就结束了。
同理,3>5
这个条件恒为“假”,若是把while False
换成while 3>5
,效果会是同样的——什么都不会出现。
while 3>5:
print('while False')
这时候可能就有人会问了:“那若是我用while True
或者while 3<5
来作条件,会怎么样?”
咱们就来体验一下。怕你生气,先剧透:请注意,这段代码将会无限运行,陷入【死循环】,你须要在键盘上按几回【ctrl+c】来强制结束运行。
while True:
print('while True')
这是由于【布尔值】True直接把条件判断的结果设置为真,也就是条件永远正确。因此代码会无限循环,必须手动强制退出。
【布尔值】对条件判断语句有同样的效果
咱们会发现,只有if True
成功运行,将结果显示在了屏幕上。固然,if语句不会陷入死循环。
咱们作一个总结:
用数据作逻辑判断的过程叫【布尔运算】
【布尔运算】会产生【布尔值】
【布尔值】分为 False判断 为假 True判断为 真
False与True就像开关同样,决定if 与while语句是否运行。
咱们可使用bool()
函数来查看一个数据会被判断为真仍是假。
print(bool('abc')) 会在终端显示abc是真是假
and 与 or 区别
a==1 and b==1
的意思是【a=1而且b=1】,要两个条件都知足,才能判断为True,而a==1 or b==1
的意思是【a=1或者b=1】,只要两个条件知足一个,就能判断为True。
布尔值运算 and 条件判断 两个条件都为真时,才会经过往下执行 只要有一个条件为假时不会执行程序。
布尔运算 or 条件判断 两个条件中有一个值为真就会经过往下执行。
a = 1
b = -1
if a==1 and b==1: # 【b其实是-1】
print('True')
else:
print('False') 由于 b == -1 不会经过 if and (and要两个条件都知足,才能判断为True)判断语句 执行 else 输出 False (假)
if a==1 or b==1: # 【b其实是-1】
print('True')
else:
print('False') 虽然 b == -1 可是 if or (or只要两个条件知足一个,就能判断为True)a==1 为真 ,因此会执行 if 语句输出 True
not True
就等于False
,not False
就等于True
最后,咱们讲一下【in】和【not in】两种运算。
【in】的意思是“判断一个元素是否在一堆数据之中”,【not in】反之。这个超简单的。
a = 1
print(bool(a in list))
print(bool(a not in list))
a = '法国'
print(bool(a in dict))
if...break
for...in...:
...
if ...:
break
# break语句搭配while循环
while...(条件):
...
if ...:
break
if...break
的意思是若是知足了某一个条件,就提早结束循环。记住,这个只能在循环内部使用。
print('明日复明日')
break # 结束循环
while True
咱们在上面见过了,这个条件恒为真,就会开启无限循环。而while True
常和break语句搭配使用,你也能够学着使用这种写法。你也能够用while 1 或其余形式开启一个无限循环
print('上供一对童男童女')
t = input('孙悟空来了吗')
if t == '来了':
break
print('孙悟空制服了鲤鱼精,陈家庄不再用上供童男童女了')
p=input('请输入密码:')
if p=='小龙女':
break
print('经过了!')
continue的意思是“继续”。这个子句也是在循环内部使用的。当某个条件被知足的时候,触发continue语句,将跳过以后的代码,直接回到循环的开始。
它的写法是这样的:
# continue语句搭配for循环
for...in...:
...
if ...:
continue
...
# continue语句搭配while循环
while...(条件):
...
if ...:
continue
...
例题 三个问题,只有连续答对,才能断定他就是西夏公主的意中人;不然,只要有任何一题错,都要换人从头开始回答问题。
事实上,西夏公主曾和她的意中人虚竹邂逅于一个黑暗的冰窖之中,但两人不知对方姓名,只互称呼“梦姑”和“梦郎”,两人也看不清彼此的脸。
所以,西夏公主为了找到虚竹,才进行招亲,并对候选者问出这三个问题
while True:
q1 = input('第一问:你一辈子之中,在什么地方最是快乐逍遥?')
if q1 != '黑暗的冰窖':
continue
print('答对了,下面是第二问:')
q2 = input('你平生最爱之人,叫什么名字?')
if q2 != '梦姑':
continue
print('答对了,下面是第三问:')
q3 = input('你最爱的这我的相貌如何?')
if q3 == '不知道':
break
print('都答对了,你是虚竹。')
pass语句
pass语句就很是简单了,它的英文意思是“跳过”。
a = int(input('请输入一个整数:'))
if a >= 100:
pass
else:
print('你输入了一个小于100的数字')
else语句
最后一种else语句,咱们在条件判断语句见过【else】,其实,else不但能够和if配合使用,它还能跟for循环和while循环配合使用
for i in range(5):
a = int(input('请输入0结束循环,你有5次机会:'))
if a == 0:
print('你触发了break语句,致使else语句不会生效。')
break
else:
print('5次循环你都错过了,else语句生效了。')
第二种 while
i=0
while i>5:
a = int(input('请输入0结束循环,你有5次机会:'))
i=i+1
if a == 0:
print('5次循环你都错过了,else语句生效了。')
咱们一块儿来完成这个“猜大小游戏”的编程,个人思路大概是这样的:
1.一我的在内心想好一个数————这个数字是提早准备好的,能够设置一个变量来保存这个数字。我就设置个人数字为24。
2.而后让另外一我的猜————因此可使用input()函数来接收另外一我的输入的数字,并用int()转化为整数。
3.直到猜对为止————天知道几回才能猜对,因此确定须要用到循环,而且因为不知道要循环几回,因此适合while循环。
4.若是他猜的数比24小就告诉他“过小了”,若是他猜的数比24大就告诉他“太大了”——这里一看“若是……就……”的描述,就知道应该用if...else...
写一个条件判断。
a=24
while 1:
b=input('你猜多少!')
if int(b)==a:
print('你猜对了!')
break
elif int(b)>a:
print('你猜大了!')
else:
print('你猜大了!')
假如咱们改变一下题目:一我的在内心想好一个数,好比24,而后让另外一我的猜。若是他猜的数比24小,告诉他“过小了”,若是他猜的数比24大,告诉他“太大了”,这个游戏只能猜3次,3次都猜不中,就告诉他“失败了”。
考一下,这时候的解决方法应该是什么?
a=24
for i in range(3):
b=input('你猜多少!')
if int(b)==a:
print('你猜对了!')
break
elif int(b)>a:
print('你猜大了!')
else:
print('你猜大了!')
else:
print('没机会i了三次了')