先看一段代码:
print('hello1')
print('hello2')
print('hello3')
print('hello4')
print('hello5')
这段程序无论怎么执行,结果都是一样的。我们希望程序根据不同的场景能够有不同的执行结果,就需要用到条件控制语句if
程序满足特定的条件才能执行特定的代码,条件控制语句使用if
关键字,if
语句的结构如下:
if 语句
if语句格式:
if 条件:
条件成立时,要做的事情
……
判断年龄 :::info 需求:
- 定义一个整数变量记录年龄
- 判断是否满 18 岁 (>=)
如果满 18 岁,允许进网吧嗨皮 ::: 代码如下:
age = int(input('请输入你的年纪:'))
# if判断
if age >= 18:
print('允许进网吧嗨皮')
:::warning 注意:Python中没有大括号
{}
,通过缩进代表作用域 :::if…else…语句
有些情况我们希望满足条件执行相应的代码,不满足条件执行其他的代码,这就需要用到
if else
语句if ... else...
语句格式if 要判断的条件:
条件成立时,要做的事情
……
else:
条件不成立时,要做的事情
……
判断年龄 :::info 需求:
输入用户年龄
- 判断是否满 18 岁 (>=)
- 如果满 18 岁,允许进网吧嗨皮
否则(未满 18 岁),提示回家写作业 ::: 代码如下:
age = int(input('请输入你的年纪:'))
# if判断
if age > =18:
print('允许进网吧嗨皮')
else:
print('回家写作业')
if …elif… else语句
一对 if 和 else 可以让代码执行出 两种不同的结果
但开发中,可能希望 并列的执行出多种结果,这时就可以使用elif
if ...elif... else
格式if 条件1:
条件1满足执行的代码
……
elif 条件2:
条件2满足时,执行的代码
……
elif 条件3:
条件3满足时,执行的代码
……
else:
以上条件都不满足时,执行的代码
……
节日活动判定 :::info 需求:
定义
holiday_name
字符串变量记录节日名称- 如果是 情人节,应该 买玫瑰/看电影
- 如果是 平安夜,应该 买苹果/吃大餐
- 如果是 生日,应该 买蛋糕
其他的日子,每天都是节日…… ::: 代码:
holiday_name = input('请输入节日名称')
if holiday_name == '情人节':
print('买玫瑰/看电影')
elif holiday_name == '平安夜':
print('买苹果/吃大餐')
elif holiday_name == '生日':
print('买蛋糕')
else:
print('每天都是节日,每天一个红包')
火车站安检-if嵌套
在开发中,使用 if 进行条件判断,如果希望 在条件成立的执行语句中 再 增加条件判断,就可以使用 if 的嵌套
if 的嵌套 的应用场景是:在之前条件满足的前提下,再增加额外的判断
if 的嵌套 的语法格式,除了缩进之外 和之前的没有区别 :::info 需求:定义布尔型变量
has_ticket
表示是否有车票- 定义整型变量
knife_length
表示刀的长度,单位:厘米 - 首先检查是否有车票,如果有,才允许进行 安检
- 安检时,需要检查刀的长度,
- 判断是否超过 20 厘米
- 如果超过 20 厘米,提示刀的长度,不允许上车
- 如果不超过 20 厘米,安检通过
- 如果没有车票,不允许进门
:::
代码如下:
```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(“不能进站,没有车票”)
**扩展知识:**
:::success
`eval()`函数的作用是将一个字符串当作Python代码进行解析和执行。它接受一个字符串作为参数,并将该字符串解析为一个表达式,并返回表达式的计算结果。
:::
```python
result = eval('2 + 3 * 4') # 14
x = 5
eval('x = x + 1')
print(x) # 6
:::success
需要注意的是,由于eval()
函数的功能是执行字符串中的代码,它可能会带来一些安全风险。如果接受用户输入作为eval()
函数的参数,请确保对输入进行验证和过滤,以防止恶意代码执行或潜在的安全漏洞。在使用eval()
函数时要谨慎,并确保只执行可信任的代码。
:::
练习-石头剪刀布
需求
:::info 需求:
- 从控制台输入要出的拳 —— 石头(1)/剪刀(2)/布(3)
- 电脑 随机 出拳 —— 先假定电脑只会出石头,完成整体代码功能
- 比较胜负并输出结果 ::: | 序号 | 规则 | | —- | —- | | 1 | 石头1胜剪刀2 | | 2 | 剪刀2胜布3 | | 3 | 布胜3石头1 |
分析
可以先将问题简化,假设电脑出一个固定的比如石头
完善程序后再添加电脑随机出拳功能
1. 基础代码实现(电脑固定出石头)
2. 随机数实现(电脑出的石头随机实现即可)
实现
电脑固定出石头1:
# 1.我们出拳 定义变量保存用户输入
my = int(input('请输入出拳:'))
# 2.电脑随机出拳 (假定电脑出石头)
com = 1
# 3.判断胜负
if (my==3 and com==1):
# 用户胜利
print('用户胜利,my=%d,com=%d'%(my,com))
elif my==com:
print('平局,决战到天亮')
else:
print('电脑胜利,my=%d,com=%d'%(my,com))
电脑随机出1、2、3:
# python生成随机数 random
import random
# 1.我们出拳 定义变量保存用户输入
my = int(input('请输入出拳:'))
# 2.电脑随机出拳 (假定电脑出石头)
# 指定开始 结束 包含开始包含结束
com = random.randint(1,3)
# 3.判断胜负
if (my==1 and com==2) or (my==2 and com ==3) or (my==3 and com==1):
# 用户胜利
print('用户胜利,my=%d,com=%d'%(my,com))
elif my==com:
print('平局,决战到天亮,my=%d,com=%d'%(my,com))
else:
print('电脑胜利,my=%d,com=%d'%(my,com))
:::info
获取一个范围在[1,3]的随机数:import random
computer = random.randint(1, 3)
:::