判断语句和循环语句

2021-01-04 10:08:04 浏览数 (2)

参考链接: Python | 实施剪刀石头布游戏的程序

程序的三大执行流程:顺序执行、选择执行、循环执行 

 一、判断 

 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

0 人点赞