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]))
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343