程序的三大执行流程:顺序执行、选择执行、循环执行
一、判断
1、if比较运算符、and、or、if-else
if-else的使用格式
if 条件: 满足条件时要做的事情1 满足条件时要做的事情2 满足条件时要做的事情3 ...(省略)... else: 不满足条件时要做的事情1 不满足条件时要做的事情2 不满足条件时要做的事情3 ...(省略)...
demo1
chePiao = 1 # 用1代表有车票,0代表没有车票 if chePiao == 1: print("有车票,可以上火车") print("终于可以见到Ta了,美滋滋~~~") else: print("没有车票,不能上车") print("亲爱的,那就下次见了,一票难求啊~~~~(>_<)~~~~")
运行结果:
结果1:有车票的情况
有车票,可以上火车 终于可以见到Ta了,美滋滋~~~
结果2:没有车票的情况
没有车票,不能上车 亲爱的,那就下次见了,一票难求啊~~~~(>_<)~~~~
demo2
you = input("你去么?------") #去或者不去 your_wife = input("你老婆去么------") #去或者不去 # if you == "去" or your_wife == "去" if you == "去" and your_wife == "去": print("可以申请贷款!") else: print("不可以申请贷款!")
运行结果:
demo3
skin_color = input("你白么?------") property = int(input("请输入你的财产总和------")) beautiful = input("你美么?------") if (skin_color == "白" and property >= 10000000 and beautiful == "美"): print("白富美...") else: print("普通人...")
运行结果:
2、if语句的注意点
<1>if xxx: 或者 else xxx: 后面的语句必须缩进,缩进为四个空格(冒号后面必须跟缩进,不局限于这两种。这是python规定的语法,不缩进会报错,其他不需要缩进的地方缩进的话也会报错)
<2>冒号后面所有连续缩进的代码块可看做是一个语句
<3>如果冒号后面遇到没有缩进的语句,就不属于if 代码块
3、if逻辑运算符not(其他运算符就不举例了,可以看前面的表格)
就是取反的作用
demo
a = 90 if not(a < 60 and a > 100): print("及格!")
运行结果:
及格!
4、if-elif的使用
想一想:
if能完成当xxx时做事情
if-else能完成当xxx时做事情1,否则做事情2
如果有这样一种情况:当xxx1时做事情1,当xxx2时做事情2,当xxx3时做事情3,那该怎么实现呢?
答: elif
<1>elif的功能
elif的使用格式如下:
if xxx1: 事情1 elif xxx2: 事情2 elif xxx3: 事情3
说明:
- 当xxx1满足时,执行事情1,然后整个if结束
- 当xxx1不满足时,那么判断xxx2,如果xxx2满足,则执行事情2,然后整个if结束
- 当xxx1不满足时,xxx2也不满足,如果xxx3满足,则执行事情3,然后整个if结束
demo
score = 77 if score>=90 and score<=100: print('本次考试,等级为A') elif score>=80 and score<90: print('本次考试,等级为B') elif score>=70 and score<80: print('本次考试,等级为C') elif score>=60 and score<70: print('本次考试,等级为D') elif score>=0 and score<60: print('本次考试,等级为E')
<2> 注意点
2.1 可以和else一起使用
if 性别为男性: 输出男性的特征 ... elif 性别为女性: 输出女性的特征 ... else: 第三种性别的特征 ...
说明:
- 当 “性别为男性” 满足时,执行 “输出男性的特征”的相关代码
- 当 “性别为男性” 不满足时,如果 “性别为女性”满足,则执行 “输出女性的特征”的相关代码
- 当 “性别为男性” 不满足,“性别为女性”也不满足,那么久默认执行else后面的代码,即 “第三种性别的特征”相关代码
2.2 elif必须和if一起使用,否则出错
<3>练一练
需求:获取用户输入(1-7),输入1、输出Monday,输入2、输出Tuesday ...
代码:
num = int(input("请输入一个数字(1 - 7):")) if num == 1: print("Monday") elif num == 2: print("Tuesday") elif num == 3: print("Wednesday") elif num == 4: print("Thursday") elif num == 5: print("Friday") elif num == 6: print("Saturday") elif num == 7: print("Sunday") else: print("输入错误!")
运行结果:
5、if嵌套
想一想:
坐火车或者地铁的实际情况是:先进行安检如果安检通过才会判断是否有车票,或者是先检查是否有车票之后才会进行安检,即实际的情况某个判断是再另外一个判断成立的基础上进行的,这样的情况该怎样解决呢?
答:if嵌套
<1>if嵌套的格式
if 条件1: 满足条件1 做的事情1 满足条件1 做的事情2 ...(省略)... if 条件2: 满足条件2 做的事情1 满足条件2 做的事情2 ...(省略)...
说明
- 外层的if判断,也可以是if-else
- 内层的if判断,也可以是if-else
- 根据实际开发的情况,进行选择
<2>if嵌套的应用
demo1:
ticket = int(input("请拿出你的车票(1表示有,0表示没有):")) if ticket == 1: dao_lenght = int(input("请输入刀子的长度:")) print("有车票,可以进站") if dao_lenght < 10: print("通过安检") print("终于可以见到Ta了,美滋滋~~~") else: print("没有通过安检") print("刀子的长度超过规定,等待警察处理...") else: print("没有车票,不能进站") print("亲爱的,那就下次见了,一票难求啊~~~~(>_<)~~~~)")
运行结果:
demo2
sex = input("请输入你对象的性别:") if sex == "女": skin_color = input("她白么?------") property = int(input("请输入她的财产总和------")) beautiful = input("她美么?------") if (skin_color == "白" and property >= 10000000 and beautiful == "美"): print("白富美...") else: print("普通人...") elif sex == "男": height = input("他高么?------") property = int(input("请输入他的财产总和------")) cool = input("他帅么?------") if (height == "高" and property >= 10000000 and cool == "帅"): print("高富帅...") else: print("普通人...") else: print("中国不合法公民!")
运行结果:
demo3
猜拳游戏,要求效果:
参考代码:
import random #1. 提示并获取用户的输入 player = int(input("请输入 0--- 剪刀 1---石头 2---布 ")) #2.让电脑出一个 computer = random.randint(0,2) #随机产生0到2的整数 #3. 判断用户的输入,然后显示对应的结果 #玩家获胜的条件 if ((player==0 and computer==2) or (player==1 and computer==0) or (player==2 and computer==1)): print("赢了,请收下游戏币!") #玩家平局的条件 elif (player == computer): print("平局了,决战到天亮!") else: print("输了,回家拿钱!")
运行结果:
二、循环
1.while循环
<1>while循环的格式
while 条件: 条件满足时,做的事情1 条件满足时,做的事情2 条件满足时,做的事情3 ...(省略)...
demo1
i = 1 while i <= 10: print(i) i = i + 1
运行结果:
<2>while循环应用
① 计算1~100的累积和(包含1和100)
参考代码如下:
i = 1 sum = 0 while i<=100: sum = sum + i i += 1 print("1~100的累积和为:%d"%sum)
② 计算1~100之间偶数的累积和(包含1和100)
参考代码如下:
i = 1 sum = 0 while i<=100: if i%2 == 0: sum = sum + i i+=1 print("1~100的累积和为:%d"%sum)
2.while嵌套
<1>while嵌套的格式
while 条件1: 条件1满足时,做的事情1 条件1满足时,做的事情2 条件1满足时,做的事情3 ...(省略)... while 条件2: 条件2满足时,做的事情1 条件2满足时,做的事情2 条件2满足时,做的事情3 ...(省略)...
<2>while嵌套应用一
要求:打印如下图形:
* * * * * * * * * * * * * * *
参考代码:
i = 1 while i<=5: j = 1 while j<=i: print("*",end='') #让print默认不换行 j+=1 print("\n") i+=1
<3>while嵌套应用二:九九乘法表
参考代码:
i = 1 while i<=9: j=1 while j<=i: print("%d*%d=%-2d "%(j,i,i*j),end='') j+=1 print('\n') i+=1
3.复合赋值运算符
注:博客前面有详细表格
例:
j = j + 1 <=> j += 1 c = c -a <=> c -= a 其他同理 特殊: a = 4 a*=10-30+20 <=> a=a*(10-30+20) 而不是 a=a*10-30+20 所以如果使用复合赋值运算,右边是一个表达式,记住加一个小括号
4.for循环
像while循环一样,for可以完成循环的功能。
在Python中 for循环可以遍历任何序列的项目,如一个列表或者一个字符串等。
<1>for循环的格式
for 临时变量 in 列表或者字符串等: 循环满足条件时执行的代码 else: 循环不满足条件时执行的代码
demo1
name = 'dongGe' for x in name: print(x)
运行结果如下:
demo2
name = ' ' for x in name: print(x) else: print("没有数据")
运行结果如下:
5.break和continue
demo
i = 1 num = 1 while i <= 100: if i%2 == 0: print(i) num += 1 if num == 20: break i += 1
运行结果:
5.1 break
<1>for循环
普通的循环示例如下:
name = 'dongGe' for x in name: print('----') print(x)
运行结果:
带有break的循环示例如下:
name = 'dongGe' for x in name: print('----') if x == 'g': break print(x)
运行结果:
<2>while循环
普通的循环示例如下:
i = 0 while i<10: i = i+1 print('----') print(i)
运行结果:
带有break的循环示例如下:
i = 0 while i<10: i = i+1 print('----') if i==5: break print(i)
运行结果:
break的作用:用来结束整个循环
5.2 continue
<1> for循环
带有continue的循环示例如下:
name = 'dongGe' for x in name: print('----') if x == 'g': continue print(x)
运行结果:
<2> while循环
带有continue的循环示例如下:
i = 0 while i<10: i = i+1 print('----') if i==5: continue print(i)
运行结果:
continue的作用:用来结束本次循环,紧接着执行下一次的循环
3. 注意点
-
break/continue只能用在循环中,除此以外不能单独使用
-
break/continue在嵌套循环中,只对最近的一层循环起作用
demo
i = 1 while i<=5: j = 1 while j<=i: print(" * ",end='') j += 1 break #break在哪层的循环里,就结束哪层的循环,就近原则 #continue同理 print("") #换行 i += 1
运行结果:
三、作业
①必做题:
1. 使用if,编写程序,实现以下功能:
- 从键盘获取用户名、密码
- 如果用户名和密码都正确(预先设定一个用户名和密码),那么就显示“欢迎进入xxx的世界”,否则提示密码或者用户名错误
2. 使用while,完成以下图形的输出
* * * * * * * * * * * * * * * * * * * * * * * * *
②选做题:
1. 根据以下信息提示,请帮小明计算,他每月乘坐地铁支出的总费用
提示信息:
北京公交地铁新票价确定
据北京市发改委网站消息称,北京市将从2015年12月28起实施公共交通新票价:地铁6公里(含)内3元,公交车10公里(含)内2元,使用市政交通一卡通刷卡乘公交车普通卡5折,学生卡2.5折。
具体实施方案如下:
一、城市公共电汽车价格调整为:10公里(含)内2元,10公里以上部分,每增加1元可乘坐5公里。使用市政交通一卡通刷卡乘坐城市公共电汽车,市域内路段给予普通卡5折,学生卡2.5折优惠;市域外路段维持现行折扣优惠不变。享受公交政策的郊区客运价格,由各区、县政府按照城市公共电汽车价格制定。
二、轨道交通价格调整为:6公里(含)内3元;6公里至12公里(含)4元;12公里至22公里(含)5元;22公里至32公里(含)6元;32公里以上部分,每增加1元可乘坐20公里。使用市政交通一卡通刷卡乘坐轨道交通,每自然月内每张卡支出累计满100元以后的乘次,价格给予8折优惠;满150元以后的乘次,价格给予5折优惠;支出累计达到400元以后的乘次,不再享受打折优惠。
要求:
假设每个月,小明都需要上20天班,每次上班需要来回1次,即每天需要乘坐2次同样路线的地铁;每月月初小明第一次刷公交卡时,扣款5元;编写程序,帮小明完成每月乘坐地铁需要的总费用
作业解答:
必做题1
代码:
work_user = "受害者" work_passwd = "123456" user = input("请输入用户名:") passwd = input("请输入密码:") if (user == work_user) and (passwd == work_passwd): print("-"*10) print("欢迎来到侏罗纪世界!") print("-"*10) else: print("无法登录!")
运行结果:
必做题2
代码:
i = 1 while i<=5: j = 1 while j<=i: print('*',end='') j+=1 print("\n") i+=1 while i>=1: j = 1 while j<=i-1: print('*',end='') j+=1 print("\n") i-=1
运行结果:
选做题
代码:
#小明每月月初第一次刷公交卡,扣款5元,说明从他家到他们公司坐电汽需要花费5元 #从电汽的价格表反推,可以得出 家--> 公司 的距离为50公里 #以上结论是在把距离当做位移的情况下成立(毕竟坐电汽和坐地铁的路线不一样,距离#肯定不一样) #接下来编写一个坐地铁根据距离求费用的程序 #1. 获取用户输入的距离,单位为公里 import math distance = float(input("请输入从你家到你们公司的距离(公里):")) #2. 编写小明每月坐地铁的消费 if (distance > 0) and (distance <= 6): month_money = (3*2)*20 #乘以2是因为来回两趟,再乘以20是每月坐20天 elif (distance > 6) and (distance <= 12): month_money = (4*2)*20 elif (distance > 12) and (distance <= 22): month_money = (5*2)*20 elif (distance > 22) and (distance <= 32): month_money = (6*2)*20 elif distance > 32: up_32 = math.ceil((distance - 32)/20) #向上取整ceil(),向下取整floor(),四舍五入round() #print(up_32) month_money = ((6 + up_32)*2)*20#3. 计算是否有折扣 if month_money >= 100: month_money *= 0.8 print("您本月的地铁消费为:%d元" % month_money) elif month_money >= 150: month_money *= 0.5 print("您本月的地铁消费为:%d元" % month_money) else: print("您本月的地铁消费为:%d元" % month_money)
运行结果:
来源:https://www.cnblogs.com/dawangk-3366/p/9216994.html