python学习记录4--给自己:布尔运算&循环(break,continue,pass,else,exit())

M酱正在快马加鞭地赶来(咚咚咚)~~~
一、布尔运算
1.定义:布尔运算是数字符号化的逻辑推演法,包括联合、相交、相减。在图形处理操作中引用了这种逻辑运算方法以使简单的基本图形组合产生新的形体,并由二维布尔运算发展到三维图形的布尔运算。由于布尔在符号逻辑运算中的特殊贡献,很多计算机语言中将逻辑运算称为布尔运算,将其结果称为布尔值。

  • 逻辑运算 (logical operators) 通常用来测试真假值。最常见到的逻辑运算就是循环的处理,用来判断是否该离开循环或继续执行循环内的指令。

python学习记录4--给自己:布尔运算&循环(break,continue,pass,else,exit())

  • 2.判断真假
    ①两数值作比较,比较方式有:==、!=、>、<、>=、<= 例如:
print(3.3==3)   #判断为假

②直接用数值做运算:
python学习记录4--给自己:布尔运算&循环(break,continue,pass,else,exit())
③布尔值之间的运算:and 、or 、not 、in 、not in

a=False
b=[1,5,2,4,8]
print(3>0 and 4<5)           #左右两边全为真才为真
print(1>8 or 7<9)               #左右两边有一个为真则为真,全假为假
print(not a)                        #非真即为假,非假即为真
print(4 in b)                        #在列表内为真
print(9 not in b)                  #不在列表为真

二、循环(break,continue,pass,else,exit())

1.几个语句的解释(ง •_•)ง

  • break语句:从循环内跳出(必须和if语句连用),之后循环外部代码
  • continue语句:跳跃到循环开头(必须和if语句连用)
  • pass语句:什么都不做,直接跳过(常用在if语句下)
  • else语句:用在循环语句后,如果正常结束循环就执行else语句
  • exit() : 结束程序,不管后面的代码在循环里还是循环外

2.给个小游戏实践一下:

给三次机会,猜一猜我脑子里现在正在想的数字是多少?

for i in range(3):
    a = int(input('请输入你猜想的数字(注意你只有三次机会):'))
    if a == 24:
        print('你可真是我肚子里的蛔虫,答对啦~')
        break
    elif a > 24:
        print('太大了')
    else :
        print('太小了')
    if i == 2:
        print('对不起你的三次机会已用完,游戏失败!')
        break

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次机会都猜不到,你失败了。')

1.在for…in…循环中也可以使用break,正常情况下,三次机会用完之后就结束循环,但如果第一次就猜对了,也需要结束循环。前者我们能用range(3)解决,后者则依靠break语句。

2.for…in…可以和else语句搭配使用。意思是在for…in…循环结束之后,执行else语句里的命令。不过如果for…in…是因为break结束的就不会执行else语句里的命令。

课后练习:

-1. 游戏一:

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

本菜鸟敲的代码如下人类的本质不应该是复读机*<超大声>*

movies = {
'妖猫传':['黄轩','染谷将太'],
'无问西东':['章子怡','王力宏','祖峰'],
'超时空同居':['雷佳音','佟丽娅'],
}
actor = input('你想查询哪个演员?')

if actor in movies['妖猫传']:
    print(actor+'出演了电影妖猫传')
elif actor in movies['无问西东']:
    print(actor+'出演了电影无问西东')
elif actor in movies['超时空同居']:
    print(actor+'出演了超时空同居')
else :
    print('不好意思,该演员的电影还未整理,静等更新!')
   

更加简洁的代码如下:

movies = {
'妖猫传':['黄轩','染谷将太'],
'无问西东':['章子怡','王力宏','祖峰'],
'超时空同居':['雷佳音','佟丽娅'],
}

actor = input('你想查询哪个演员?')
for  movie in movies:  # 用 for 遍历字典
    actors = movies[movie]  # 读取各个字典的主演表
    if actor in actors:
        print(actor + '出演了电影' + movie)

  • 2.游戏二:根据罪犯AB的口供查看他们的罪行会判几年
n = 0
list_answer = []

while True:
    n += 1
    a = input('A,你认罪吗?请回答认罪或者不认:')
    b = input('B,你认罪吗?请回答认罪或者不认:')
    list_answer.append([a,b])  # 用列表嵌套的方式来存放实验者的选择,也可用元组或字典。
    if a == '认罪' and b == '认罪':
        print('两人都得判10年,唉')
    elif a == '不认' and b == '认罪':
        print('A判20年,B判1年,唉')
    elif a == '认罪' and b == '不认':
        print('A判1年,B判20年')
    else:
        print('都判3年,太棒了')
        break

print('第' + str(n) + '对实验者选了最优解。')

for i in range(n):
    # 注意数据类型的转换,以及计数起点的不同(0和1)
    print('第' + str(i+1) + '对实验者的选择是:' + str(list_answer[i]))

A,你认罪吗?请回答认罪或者不认:不认
B,你认罪吗?请回答认罪或者不认:认罪
A判20年,B判1年,唉
A,你认罪吗?请回答认罪或者不认:认罪
B,你认罪吗?请回答认罪或者不认:不认
A判1年,B判20年
A,你认罪吗?请回答认罪或者不认:认罪
B,你认罪吗?请回答认罪或者不认:认罪
两人都得判10年,唉
A,你认罪吗?请回答认罪或者不认:不认
B,你认罪吗?请回答认罪或者不认:不认
都判3年,太棒了
第4对实验者选了最优解。
第1对实验者的选择是:[‘不认’, ‘认罪’]
第2对实验者的选择是:[‘认罪’, ‘不认’]
第3对实验者的选择是:[‘认罪’, ‘认罪’]
第4对实验者的选择是:[‘不认’, ‘不认’]