python中的数值判断

Python基础语法7

用数据做判断:布尔值

  • 计算机的逻辑判断,只有两种结果,就是True(英文意思是“真”)和False(英文意思是“假”),没有灰色地带。这个计算真假的过程,叫做【布尔运算】。

  • True和False,也就叫做【布尔值】

  • 例:

print(3 < 5)
print(3 > 5)
print('长安' == '长安')  
print('长安' != '金陵') 
'''
True
False
True
True
'''
  • 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来做条件,程序将会不限次数地运行,陷入【死循环】
  • 【布尔值】对条件判断语句有一样的效果:
if False:
    print('if False')

if True:
    print('if True')
#if True    
数据做判断

两个数值作比较

比较运算符
  • 特别提醒:在代码中,A == B表示A和B相等,==表示相等关系;而=表示给变量赋值。=和==虽然长得相似,但没有任何关系。

直接用数值做运算

if 1:
    print('熊猫')
  • 整数1在这里就是作为一个条件,被判断为真(True)。这就是数值本身作为一个条件,被判断真假的情况。
真假判断
  • None,它代表的是【空值】,自成一派,数据类型是NoneType。要注意它和0的区别,0是整数0,可并非什么都没有
  • 可以使用bool()函数来查看一个数据会被判断为真还是假。这个函数的用法与type()函数相似,在bool()函数括号中放入我们想要判断真假的数据,然后print出来即可。
print('以下数据判断结果都是【假】:')
print(bool(False))
print(bool(0))
print(bool(''))
print(bool(None))

print('以下数据判断结果都是【真】:')
print(bool(True))
print(bool(1))
print(bool('abc'))

布尔值之间的运算

and、or、not、in、not in五种运算

a = 1
b = -1

print('以下是and运算')
if a==1 and b==1:    # 【b实际上是-1】
    print('True')
else:
    print('False')

print('以下是or运算')
if a==1 or b==1:  # 【b实际上是-1】
    print('True')
else:
    print('False')
'''
以下是and运算
False
以下是or运算
True
'''    
  • a==1 and b==1的意思是【a=1并且b=1】,要两个条件都满足,才能判断为True,而a==1 or b==1的意思是【a=1或者b=1】,只要两个条件满足一个,就能判断为True。
and
or
  • 【not】运算很简单,表示翻转的意思。not True就等于False,not False就等于True
  • 【in】和【not in】两种运算,【in】的意思是“判断一个元素是否在一堆数据之中”,【not in】反之。
not,in,not in

四种新的语句

break语句

break的意思是“打破”,是用来结束循环的,一般写作if...break

# break语句搭配for循环
for...in...:
    ...
    if ...:
        break

# break语句搭配while循环
while...(条件):
    ...
    if ...:
        break

+if...break的意思是如果满足了某一个条件,就提前结束循环。这个只能在循环内部使用。

for i in range(5):
    print('明日复明日')
    if i==3:  # 当i等于3的时候触发
        break # 结束循环
i = 0
while i<5:
    print('明日复明日')
    i = i+1
    if i==3:  # 当i等于3的时候触发
        break # 结束循环

PS:if之下的语句要缩进4个空格(按一次Tab键),这里的if...break又嵌套在while或for循环中,而循环语句本身又要缩进4个空格。这样一来,break就缩进了【4+4=8】个空格(按两次Tab键)。【注】:Tab键和空格键不能同时混用。

练习:用python描述故事:

  • 《西游记》里面有一个车迟国,车迟国里面有个陈家庄,陈家庄的河里有一个鲤鱼精,每一年都要陈家庄上供一对童男童女给自己吃,庄里的人家真是苦不堪言。这种年复一年的循环状态,在唐僧师徒来到这里后,结束了。因为孙悟空制服了这个鲤鱼精,百姓再也不用受苦了!真好。
while True:
    print('要给妖怪进贡童男童女')
    hero = input('大圣来了吗?回复:来了or没来')
    if hero == '来了':
        break
print('鲤鱼精被制服')

continue语句

continue的意思是“继续”。这个子句也是在循环内部使用的。当某个条件被满足的时候,触发continue语句,将跳过之后的代码,直接回到循环的开始。

# continue语句搭配for循环
for...in...:
    ...
    if ...:
        continue
    ...

# continue语句搭配while循环
while...(条件):
    ...
    if ...:
        continue
    ...
  • 示例
# continue语句搭配for循环
for i in range(5):
    print('明日复明日')
    if i==3:  # 当i等于3的时候触发
        continue # 回到循环开头
    print('这句话在i等于3的时候打印不出来')

# continue语句搭配while循环
i = 0
while i<5:
    print('明日复明日')
    i = i+1
    if i==3:  # 当i等于3的时候触发
        continue # 回到循环开头
    print('这句话在i等于3的时候打印不出来')

练习:西夏公主选驸马

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的数字')
  • 当a>=100的时候,跳过,什么都不做。其他情况,也就是a<100的时候,执行一个print语句
  • 如果没有pass来占据一个位置表示“什么都不做”,以上的代码执行起来会报错

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语句生效了。')
'''
请输入0结束循环,你有5次机会:9
请输入0结束循环,你有5次机会:6
请输入0结束循环,你有5次机会:0
你触发了break语句,导致else语句不会生效。
'''
  • 当循环中没有碰到break语句,就会执行循环后面的else语句,否则就不会执行。
  • 在while循环中,else的用法也是如此,格式一模一样:
i = 5
while i:
    a = int(input('请输入0来结束循环,你有5次机会:'))
    i -= 1
    if a == 0:
        print('你触发了break语句,循环结束,导致else语句不会生效。')
        break
else:
    print('5次循环你都错过了,else语句生效了。')
4种循环语句

循环小练习:

  • 猜24,然后让另一个人猜。如果他猜的数比24小,告诉他“太小了”,如果他猜的数比24大,告诉他“太大了”。
num = 24
print('我已经想好了一个数,请你猜一猜:\n')
while True:
    yourguess = int(input('请输入你猜的数字:'))
    if yourguess < num:
        print('你猜的数字小了')
    elif yourguess > num:
        print('你猜的数字大了')
    else:
        print('恭喜你猜对了')
        break
  • 问题进阶


    问题进阶
num = 24
print('我已经想好了一个数,请你猜一猜:\n')
chance = 3
while chance:
    print('现在你有' + str(i) + '次机会')
    chance -= 1
    yourguess = int(input('请输入你猜的数字:'))
    if yourguess < num:
        print('你猜的数字小了')
    elif yourguess > num:
        print('你猜的数字大了')
    else:
        print('恭喜你猜对了')
        break
else:
    print('3次机会已经用完,失败了')

练习:

  • 让程序收集两名囚犯的认罪情况,进而决定他们的判决:
    两人都认罪,则各判10年;一个认罪一个抵赖,则前者判1年,后者判20年;两人都抵赖,各判3年。只有两人都不认罪,程序才会停止。
    现在有一个社会学家,在不同的人群中做这个实验,一旦遇到都不认罪的情况,就停止该人群中的实验。
    同时,他希望程序能记录每一对实验者的选择,以及记录第几对实验者都选择不认罪。请你帮帮他吧。
listchoice = []
n = 0
while True:
    n += 1
    print('现已押解第' + str(n) + '对犯人' + ':请审问')
    choice_A = input('A的选择:认罪or不认  ')
    choice_B = input('B的选择:认罪or不认  ')
    listchoice.append([choice_A,choice_B])
    if choice_A == '认罪' and choice_B == '认罪':
        print('皆为10年之刑')
    elif choice_A == '不认' and choice_B == '认罪':
        print('B判1年,A判20年')
    elif choice_A == '认罪' and choice_B == '不认':
        print('A判1年,B判20年')
    elif choice_A == '不认' and choice_B == '不认':
        print('停止实验')
        break
    else:
        n -= 1
        continue
print('此为最优解')
for i in range(n):
    print('第' + str(i + 1) + '对实验者的选择是:' + str(listchoice[i]))

你可能感兴趣的:(python中的数值判断)