先看一段代码:

  1. print('hello1')
  2. print('hello2')
  3. print('hello3')
  4. print('hello4')
  5. print('hello5')

这段程序无论怎么执行,结果都是一样的。我们希望程序根据不同的场景能够有不同的执行结果,就需要用到条件控制语句if
程序满足特定的条件才能执行特定的代码,条件控制语句使用if关键字,if语句的结构如下:
if条件控制语句 - 图1

if 语句

if语句格式:

  1. if 条件:
  2. 条件成立时,要做的事情
  3. ……

判断年龄 :::info 需求:

  1. 定义一个整数变量记录年龄
  2. 判断是否满 18 岁 (>=)
  3. 如果满 18 岁,允许进网吧嗨皮 ::: 代码如下:

    1. age = int(input('请输入你的年纪:'))
    2. # if判断
    3. if age >= 18:
    4. print('允许进网吧嗨皮')

    :::warning 注意:Python中没有大括号{},通过缩进代表作用域 :::

    if…else…语句

    有些情况我们希望满足条件执行相应的代码,不满足条件执行其他的代码,这就需要用到if else语句
    if ... else...语句格式

    1. if 要判断的条件:
    2. 条件成立时,要做的事情
    3. ……
    4. else:
    5. 条件不成立时,要做的事情
    6. ……

    判断年龄 :::info 需求:

  4. 输入用户年龄

  5. 判断是否满 18 岁 (>=)
  6. 如果满 18 岁,允许进网吧嗨皮
  7. 否则(未满 18 岁),提示回家写作业 ::: 代码如下:

    1. age = int(input('请输入你的年纪:'))
    2. # if判断
    3. if age > =18:
    4. print('允许进网吧嗨皮')
    5. else:
    6. print('回家写作业')

    if …elif… else语句

    一对 if 和 else 可以让代码执行出 两种不同的结果
    但开发中,可能希望 并列的执行出多种结果,这时就可以使用 elif
    if ...elif... else格式

    1. if 条件1:
    2. 条件1满足执行的代码
    3. ……
    4. elif 条件2:
    5. 条件2满足时,执行的代码
    6. ……
    7. elif 条件3:
    8. 条件3满足时,执行的代码
    9. ……
    10. else:
    11. 以上条件都不满足时,执行的代码
    12. ……

    节日活动判定 :::info 需求:

  8. 定义 holiday_name 字符串变量记录节日名称

  9. 如果是 情人节,应该 买玫瑰/看电影
  10. 如果是 平安夜,应该 买苹果/吃大餐
  11. 如果是 生日,应该 买蛋糕
  12. 其他的日子,每天都是节日…… ::: 代码:

    1. holiday_name = input('请输入节日名称')
    2. if holiday_name == '情人节':
    3. print('买玫瑰/看电影')
    4. elif holiday_name == '平安夜':
    5. print('买苹果/吃大餐')
    6. elif holiday_name == '生日':
    7. print('买蛋糕')
    8. else:
    9. print('每天都是节日,每天一个红包')

    火车站安检-if嵌套

    在开发中,使用 if 进行条件判断,如果希望 在条件成立的执行语句中 再 增加条件判断,就可以使用 if 的嵌套
    if 的嵌套 的应用场景是:在之前条件满足的前提下,再增加额外的判断
    if 的嵌套 的语法格式,除了缩进之外 和之前的没有区别 :::info 需求:

  13. 定义布尔型变量 has_ticket 表示是否有车票

  14. 定义整型变量 knife_length 表示刀的长度,单位:厘米
  15. 首先检查是否有车票,如果有,才允许进行 安检
  16. 安检时,需要检查刀的长度,
  17. 判断是否超过 20 厘米
    1. 如果超过 20 厘米,提示刀的长度,不允许上车
    2. 如果不超过 20 厘米,安检通过
  18. 如果没有车票,不允许进门 ::: 代码如下: ```python

    1. 定义布尔型变量 has_ticket 表示是否有车票

    has_ticket = eval(input(“请输入是否有车票:”))

    2. 定义整型变量 knife_length 表示刀的长度,单位:厘米

    knife_length = int(input(“请输入刀的长度:”))

if has_ticket: if knife_length > 20: print(“不能进站,刀太长了”) else: print(“可以进站”) else: print(“不能进站,没有车票”)

  1. **扩展知识:**
  2. :::success
  3. `eval()`函数的作用是将一个字符串当作Python代码进行解析和执行。它接受一个字符串作为参数,并将该字符串解析为一个表达式,并返回表达式的计算结果。
  4. :::
  5. ```python
  6. result = eval('2 + 3 * 4') # 14
  7. x = 5
  8. eval('x = x + 1')
  9. print(x) # 6

:::success 需要注意的是,由于eval()函数的功能是执行字符串中的代码,它可能会带来一些安全风险。如果接受用户输入作为eval()函数的参数,请确保对输入进行验证和过滤,以防止恶意代码执行或潜在的安全漏洞。在使用eval()函数时要谨慎,并确保只执行可信任的代码。 :::

练习-石头剪刀布

需求

:::info 需求:

  1. 从控制台输入要出的拳 —— 石头(1)/剪刀(2)/布(3)
  2. 电脑 随机 出拳 —— 先假定电脑只会出石头,完成整体代码功能
  3. 比较胜负并输出结果 ::: | 序号 | 规则 | | —- | —- | | 1 | 石头1胜剪刀2 | | 2 | 剪刀2胜布3 | | 3 | 布胜3石头1 |

分析

可以先将问题简化,假设电脑出一个固定的比如石头
完善程序后再添加电脑随机出拳功能

  1. 1. 基础代码实现(电脑固定出石头)
  2. 2. 随机数实现(电脑出的石头随机实现即可)

实现

电脑固定出石头1:

  1. # 1.我们出拳 定义变量保存用户输入
  2. my = int(input('请输入出拳:'))
  3. # 2.电脑随机出拳 (假定电脑出石头)
  4. com = 1
  5. # 3.判断胜负
  6. if (my==3 and com==1):
  7. # 用户胜利
  8. print('用户胜利,my=%d,com=%d'%(my,com))
  9. elif my==com:
  10. print('平局,决战到天亮')
  11. else:
  12. print('电脑胜利,my=%d,com=%d'%(my,com))

电脑随机出1、2、3:

  1. # python生成随机数 random
  2. import random
  3. # 1.我们出拳 定义变量保存用户输入
  4. my = int(input('请输入出拳:'))
  5. # 2.电脑随机出拳 (假定电脑出石头)
  6. # 指定开始 结束 包含开始包含结束
  7. com = random.randint(1,3)
  8. # 3.判断胜负
  9. if (my==1 and com==2) or (my==2 and com ==3) or (my==3 and com==1):
  10. # 用户胜利
  11. print('用户胜利,my=%d,com=%d'%(my,com))
  12. elif my==com:
  13. print('平局,决战到天亮,my=%d,com=%d'%(my,com))
  14. else:
  15. print('电脑胜利,my=%d,com=%d'%(my,com))

:::info 获取一个范围在[1,3]的随机数:
import random
computer = random.randint(1, 3) :::