编程时经常需要检查一系列条件,并根据此决定采取什么措施。
在python中,if语句让你能够检查程序的当前状态,并根据此采取相应的措施。
------------------------------
一个快速简单的示例
# 目标结果:打印出歌手GAI,猫和老鼠的Tom和外国美女rose。
persons=["jack","tom","jerry","gai","ROSE"]
for person in persons:
if person == "gai":
print(person.upper())
elif person == "tom":
print(person.title())
elif person == "ROSE":
print(person.lower())
else:
continue
输出结果:
Tom
GAI
rose
GAI
rose
-----------------------------
零基础的可以仔细研究一下这段代码,并结合下图的代码流程图进一步更深的理解:
代码流程图调试的网址:https://pythontutor.com/visualize.html
现在进入条件测试的学习
①检查是否相等
>>>person1="ROSE"
>>>person2="Rose"
person1 == person2--->False
>>>person1="ROSE"
>>>person3="rose"
person1 == person3.upper()--->True
②比较数字
>>>age=20
age>20--->False
>>>age=18
age<=18--->True
③使用or和and检查多个条件
>>>age_1=20
>>>age_2=22
age_1>10 and age_2<23--->True
>>>age_3=18
>>>age_4=24
age_3>20 or age<23---->False
④使用特定值检查是否包含在列表中
>>>list_1=["a","b","c"]
"a" in list_1--->True
"w" in lisr_1--->False
实际上,这些都是布尔表达式,它是条件测试的别名。
布尔表达式的结果要么为True,要么为False。
------------------------------
认识辣个男人:if/elif/.../elif/else代码块
if:只判断一件事情或一个条件
↓
if/else:当条件测试通过了执行一个操作,条件测试未通过时执行另外一个操作。
↓
if/elif/else:可以测试三个条件。
↓
if/elif/.../elif/else:极为强大的测试代码块,几乎能涵盖所有的测试条件,直到遇到了通过了的测试,Python就跳过余下的测试。
下面我将结合一个题目来讲一下辣个男人:
设置变量age的值,再编写一个if-elif-else结构,根据age的值判断处于人生的哪个阶段。
•如果此人小于2岁,请打印一条信息,说明此人是婴儿。
•如果此人至少2岁但小于4岁,请打印一条信息,说明此人是一名幼儿。
•如果此人至少4岁但小于13岁,请打印一条信息,说明此人是一名儿童。
•如果此人至少13岁但不小于20岁,请打印一条信息,说明此人是一个青少年。
•如果此人至少20岁但小于65岁,请打印一条信息,说明此人是一名成年人。
•如果该人年满65岁,请打印一条信息,说明该人是老年人。
age=20
if age<2:
who="婴儿"
elif age<4:
who="幼儿"
elif age<13:
who="儿童"
elif age<20:
who="青少年"
elif age<65:
who="成年人"
else:
who="老年人"
print("此人是:",who)
输出结果:
此人是: 成年人
我相信大家的代码写的肯定不跟我一样,要知道的是:
这不代表你写错了,我只是把最简洁的写法放出来,让你们感受到Python语法的优美简洁。
事实上,可以不需要else,把else:那一行改成elif age>=65:是不影响结果的。
else是一条包罗万象的语句,只要不满足任何if或elif中的条件测试,其中的代码就会执行,
这可能会引入无效甚至恶意的数据,比如人为加入一些黑客的命令。
如果确定知道最终要测试的条件,应考虑使用一个elif代码块来代替else代码块。
------------------------------
用if语句对列表做一些羞羞的事
假如你是《他是歌王》歌唱节目的总导演红桃,你在查看第二期的演唱歌手列表:
["韩黄","GAI","孙北","张绍","周杰没有伦"]
这时候朋友圈刷爆了“做头发”,此次事件的男主角是嘻哈圈的著名歌手,却遭到了广电局的封杀,从而影响了嘻哈歌手。
于是本期这场的GAI歌手受到连累,不能上场,这个时候你需要在邀请函上打印相关的信息。
singer_list=["韩黄","GAI","孙北","张绍","周杰没有伦"]
for singer in singer_list:
if singer == "GAI":
print("向各位抱歉,GAI歌手本次因突发事件不能上场竞演。")
else:
print(singer+"歌手期待你前来收听")
输出结果:
韩黄歌手期待你前来收听
向各位抱歉,GAI歌手本次因突发事件不能上场竞演。
孙北歌手期待你前来收听
张绍歌手期待你前来收听
周杰没有伦歌手期待你前来收听
向各位抱歉,GAI歌手本次因突发事件不能上场竞演。
孙北歌手期待你前来收听
张绍歌手期待你前来收听
周杰没有伦歌手期待你前来收听
希望大家可以好好理解这段代码的实现方法,我将布置一个作业,答案在下篇博客公布:
执行以下操作以创建一个程序,该程序模拟网站如何确保每个人都有唯一的用户名。
•列出包含五个或更多用户名的列表current_users;再列出包含五个新用户名的列表new_users,
•列出包含五个或更多用户名的列表current_users;再列出包含五个新用户名的列表new_users,
确保一个或两个新用户名也在当前用户列表中。
•循环浏览新用户列表,查看每个新用户名是否已被使用。如果有,请打印一条消息,说明此人需要输入新的用户名。
•循环浏览新用户列表,查看每个新用户名是否已被使用。如果有,请打印一条消息,说明此人需要输入新的用户名。
如果没有使用用户名,请打印一条消息,说明用户名可用。
•确保你的比较不区分大小写。如果使用了“john”,则不应接受“JOHN”。
•确保你的比较不区分大小写。如果使用了“john”,则不应接受“JOHN”。
-----------------------------