假设有两名囚徒a和b python_Python零基础快速入门(七):for循环和while循环2

本文详细讲解了Python中的布尔值判断、数值比较、四种新语句(break、continue、pass、else)的运用,涉及循环控制、囚徒困境模拟和实验记录。通过实例演示,掌握如何利用这些工具进行逻辑判断和循环优化。
摘要由CSDN通过智能技术生成

第7节课程大纲

一、用数据做判断:布尔值

1.1 两个数值做比较

1.2 直接用数值做比较

1.3 布尔值之间的运算

二、四种新的语句

2.1 break语句

2.2 continue语句

2.3 pass语句

2.4 else语句

2.5 循环小练习

一、用数据做判断:布尔值

计算机的逻辑判断,只有两种结果,就是True和False,没有灰色地带。这个计算真假的过程,叫做【布尔运算】。而True和False,也就叫做【布尔值】。

while False:

print('while False')

#执行后无任何结果,这是因为while循环执行,必须要while后的条件为“真”,而【布尔值】False本身就是“假”,所以这个循环一次都没运行就结束了。

1.1 两个数值做比较

用两个数值做比较的【布尔运算】,主要包含以下情况:

1.2 直接用数值做比较

if 1:

print('熊猫')

#运行结果:熊猫

#整数1在这里就是作为一个条件,被判断为真(True)。这就是数值本身作为一个条件,被判断真假的情况。在Python中已经设定好什么数据为真,什么为假。假的是有限的,那么除了假的,就都是真的。

bool()函数可查看一个数据会被判断为真还是假

print('以下数据判断结果都是【假】:')

print(bool(False))

print(bool(0))

print(bool(''))

print(bool(None))

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

print(bool(True))

print(bool(1))

print(bool('abc'))

1.3 布尔值之间的运算

布尔值之间的五种运算:and、or、not、in、not in

list = [1,2,3,4,5]

a = 1

# 做一次布尔运算,判断“a是否在列表list之中”

print(bool(a in list))

#返回结果:True

print(bool(a not in list))

#返回结果:false

#如果涉及到的数据集合是字典的话,【in】和【not in】就可以用来判断字典中是否存在某个键

二、四种新的语句

这4种新语句配合for循环和while循环,可以让循环发挥更多的功能。

2.1 break语句

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

# break语句搭配for循环

for...in...:

...

if ...:

break

# break语句搭配while循环

while...(条件):

...

if ...:

break

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

i = 0

while i<5:

print('明日复明日')

i = i+1

if i==3: # 当i等于3的时候触发

break # 结束循环

情景:孙悟空来了,就停止献祭童男童女

while True:

print('上供一对童男童女')

t = input('孙悟空来了吗')

if t == '来了':

break

print('孙悟空制服了鲤鱼精,陈家庄再也不用上供童男童女了')

#while True 无限循环常和break搭配

情景:密码是‘小龙女’,输入正确停止循环

while True: #注意True的大小写

key=input('请输入密码:')

if key=='小龙女':

break

print('密码正确')

2.2 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的时候打印不出来')

情景:西夏公主挑驸马的方式是,需要青年回答对3个问题。

while True:

q1 = input('第一问:你一生之中,在什么地方最是快乐逍遥?')

if q1 != '黑暗的冰窖':

continue

print('答对了,下面是第二问:')

q2 = input('你生平最爱之人,叫什么名字?')

if q2 != '梦姑':

continue

print('答对了,下面是第三问:')

q3 = input('你最爱的这个人相貌如何?')

if q3 == '不知道':

break

print('都答对了,你是虚竹。')

2.3 pass语句

#当a>=100的时候,跳过,什么都不做。其他情况,也就是a<100的时候,执行一个print语句。

a = int(input('请输入一个整数:'))

if a >= 100:

pass

else:

print('你输入了一个小于100的数字')

#如果没有 pass将会报错

2.4 else语句

# else语句与for循环

for i in range(5):

a = int(input('请输入0结束循环,你有5次机会:'))

if a == 0:

print('你触发了break语句,导致else语句不会生效。')

break

else:

print('5次循环你都错过了,else语句生效了。')

# else语句与while循环

i=0

while i<5:

a = int(input('请输入0结束循环,你有5次机会:'))

i=i+1

if a == 0:

print('你触发了break语句,导致else语句不会生效。')

break

else:

print('5次循环你都错过了,else语句生效了。')

总结

2.5 循环小练习

情景:一个人在心里想好一个数,比如24,然后让另一个人猜。如果他猜的数比24小,告诉他“太小了”,如果他猜的数比24大,告诉他“太大了”。

#代码一:

num1=24

while True:

num2=int(input('请输入你猜的数:'))

if num1

print('你猜大了')

continue

elif num1>num2:

print('你猜小了')

else:

break

print('你猜对了!')

#代码二:

secret = 24 #设定秘密数字

while True:

guess = input('你来猜猜我的秘密数字是多少:') #输入猜测数字

if int(guess)==secret: #数字对比

print('正确!你很棒哦。')

break

elif int(guess)>secret:

print('你猜的太大了,请重新猜猜~')

else:

print('你猜的太小了,请重新猜猜~')

情景:猜数游戏只有三次机会

secret = 24

for i in range(3):

guess = input('guess which number is my secret:')

if int(guess) ==secret:

print('正确!你很棒哦。') #输出结果

break

elif int(guess)>secret:

print('你猜的太大了,请重新猜猜~')

else:

print('你猜的太小了,请重新猜猜~')

else:

print('给你3次机会都猜不到,你失败了。')

三、练习题

3.1 囚徒困境

题目:假设有两名囚徒A和B因为合伙犯罪被抓捕,因没有确凿可以指认罪行的证据,审判者准备单独审判两位囚徒。若两人都认罪,则两人各判10年;若一个认罪一个抵赖,则认罪的人判1年,抵赖的人判20年;若两人都抵赖,则各判3年。

现在,请写个代码:当两人都抵赖时,打印判决,代码结束;若为其他结果,则在打印判决后继续循环。

while True:

a=input('A囚犯是否认罪,请输入“认罪”或“不认罪”')

b=input('B囚犯是否认罪,请输入“认罪”或“不认罪”')

if a=='不认罪' and b=='不认罪':

print('两人都抵赖,各判3年')

break

elif a=='认罪' and b=='认罪':

print('两人已认罪,各判10年')

continue

elif a=='认罪' and b=='不认罪':

print('A认罪,B抵赖,A判1年,B判20年')

continue

elif a=='不认罪' and b=='认罪':

print('A抵赖,B认罪,A判20年,B判1年')

continue

else:

print('别捣乱,只能回答“认罪”或“不认罪”')

3.2 记录困境中的选择

题目:现在有一个社会学家,在不同的人群中做3.1中的囚徒困境实验,一旦遇到都不认罪的情况,就停止该人群中的实验。

同时,他希望程序能记录每一对实验者的选择,以及记录第几对实验者都选择不认罪。请你帮帮他吧。

list=[]

i=0

while True:

a=input('A囚犯是否认罪,请输入“认罪”或“不认罪”:')

b=input('B囚犯是否认罪,请输入“认罪”或“不认罪”:')

i=i+1

list.append([a,b])

if a=='不认罪' and b=='不认罪':

print('两人都抵赖,各判3年')

break

elif a=='认罪' and b=='认罪':

print('两人已认罪,各判10年')

continue

elif a=='认罪' and b=='不认罪':

print('A认罪,B抵赖,A判1年,B判20年')

continue

elif a=='不认罪' and b=='认罪':

print('A抵赖,B认罪,A判20年,B判1年')

continue

else:

print('别捣乱,只能回答“认罪”或“不认罪”,请重新输入')

list.pop()

i=i-1

print('第'+str(i)+'对实验者选择最优方案')

print(list) #实验结果记录

3.3 演员的作品

题目:我很喜欢看电影,我回忆了一下,这两年我觉得还不错的国产电影。下面,会将电影的影片名和主演放在字典里,如movie = {'妖猫传':['黄轩','染谷将太']}。需要你补充一些代码,让其他人只要输入演员名,就打印出:××出演了电影××。

movies = {

'妖猫传':['黄轩','染谷将太'],

'无问西东':['章子怡','王力宏','祖峰'],

'超时空同居':['雷佳音','佟丽娅'],

}

actor = input('你想查询哪个演员?')

for movie in movies: # 用 for 遍历字典

actors = movies[movie] # 读取各个字典的主演表

if actor in actors:

print(actor + '出演了电影' + movie)

#for i in 字典,遍历字典,得到字典的键;也就是电影名称

学习时间:2020年3月13日

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值