Python基础到实战一飞冲天(二)-python基础(十一)--if嵌套
# 11_ Python基础到实战一飞冲天(二)-python基础(十一)--if嵌套石头剪刀布随机数案例
## 一、if嵌套-05-火车站安检-检查刀的长度
### 1、if 嵌套应用:火车站安检案例代码
```python
# 02_分支-- dzs_07_火车站安检.py
# pycharm中,按 Ctrl + /可以快速添加或者取消注释
# pycharm中,选中代码块,按 Tab 键,增加缩进,按 Shift + Tab 减少缩进。
# 定义布尔型变量 has_ticket 表示是否有车票
has_ticket = True
# 定义整数型变量 knife_length 表示刀的长度,单位:厘米
knife_length = 18
# 首先检查是否有车票,如果有,才允许进行 安检
if has_ticket:
print("有车票,可以开始安检...")
# 安检时,需要检查刀的长度,判断是否超过 20 厘米
# 如果超过 20 厘米,提示刀的长度,不允许上车
if knife_length >= 20:
print("不允许携带 %d 厘米长的刀上车" % knife_length)
# 如果不超过 20 厘米,安检通过
else:
print("安检通过,祝您旅途愉快……")
# 如果没有车票,不允许进门
else:
print("大哥,您要先买票啊")
print("")
```
### 2、示例:在 pycharm 中测试 if 嵌套应用:火车站安检案例
## 二、石头剪刀布-01-明确目标和需求
### 1、综合应用 —— 石头剪刀布案例:**目标**
1)强化 **多个条件** 的 **逻辑运算**。
2)体会 `import` 导入模块(“工具包”)的使用。
### 2、案例**需求**
1)从控制台输入要出的拳 —— 石头(1)/剪刀(2)/布(3)
2)电脑 **随机** 出拳 —— 先假定电脑只会出石头,完成整体代码功能
3)比较胜负:规则:石头 胜 剪刀 | 剪刀 胜 布 | 布 胜 石头。
## 三、石头剪刀布-02-玩家和电脑出拳
### 1、 石头剪刀布案例:基础代码实现
* 先 **假定电脑就只会出石头**,完成整体代码功能(创建 dzs_08_石头剪刀布案例.py)
```python
# 02_分支-- dzs_08_石头剪刀布案例.py
# pycharm中,按 Ctrl + /可以快速添加或者取消注释
# pycharm中,选中代码块,按 Tab 键,增加缩进,按 Shift + Tab 减少缩进。
# 从控制台输入要出的拳 —— 石头(1)/剪刀(2)/布(3)
player = int(input("请出拳 石头(1)/剪刀(2)/布(3):"))
# 电脑 随机 出拳 - 假定电脑永远出石头
computer = 1
# 先打印输出出拳结果
print("玩家选择的拳头是 %d -- 电脑出的拳是 %d " %(player, computer))
# 比较胜负
```
### 2、 石头剪刀布案例:基础代码 示例
## 四、石头剪刀布-03-判断胜负
### 1、 石头剪刀布案例:基础代码补全
* 先 **假定电脑就只会出石头**,完成整体代码功能(创建 dzs_08_石头剪刀布案例.py)
```python
# 02_分支-- dzs_08_石头剪刀布案例.py
# pycharm中,按 Ctrl + /可以快速添加或者取消注释
# pycharm中,选中代码块,按 Tab 键,增加缩进,按 Shift + Tab 减少缩进。
# 从控制台输入要出的拳 —— 石头(1)/剪刀(2)/布(3)
player = int(input("请出拳 石头(1)/剪刀(2)/布(3):"))
# 电脑 随机 出拳 - 假定电脑永远出石头
computer = 1
# 先打印输出出拳结果
print("玩家选择的拳头是 %d -- 电脑出的拳是 %d " %(player, computer))
# 比较胜负
if (player == 1 and computer == 2) or (player == 2 and computer == 3) or (player == 3 and computer == 1):
print("噢耶!玩家赢了,电脑弱爆了!!!")
elif player == computer:
print("心有灵犀,平局,再来一盘!")
else:
print("玩家输了,不行,我要和电脑决战到天亮!")
```
### 2、 石头剪刀布案例:基础代码补全 示例
## 五、石头剪刀布-04-[扩展]增加换行调整条件判断代码格式
### 1、 石头剪刀布案例:基础代码 规范与完善
* 先 **假定电脑就只会出石头**,完成整体代码功能(创建 dzs_08_石头剪刀布案例.py)
```python
# 02_分支-- dzs_08_石头剪刀布案例.py
# pycharm中,按 Ctrl + /可以快速添加或者取消注释
# pycharm中,选中代码块,按 Tab 键,增加缩进,按 Shift + Tab 减少缩进。
# 从控制台输入要出的拳 —— 石头(1)/剪刀(2)/布(3)
player = int(input("请出拳 石头(1)/剪刀(2)/布(3):"))
# 电脑 随机 出拳 - 假定电脑永远出石头
computer = 1
# 先打印输出出拳结果
print("玩家选择的拳头是 %d -- 电脑出的拳是 %d " %(player, computer))
# 比较胜负
# 如果条件判断的内容太长,可以在最外侧的条件增加一对大括号
# 再在每一个条件之间,使用回车,PyCharm 可以自动增加 8 个空格
if ((player == 1 and computer == 2) or
(player == 2 and computer == 3) or
(player == 3 and computer == 1)):
print("噢耶!玩家赢了,电脑弱爆了!!!")
elif player == computer:
print("心有灵犀,平局,再来一盘!")
else:
print("玩家输了,不行,我要和电脑决战到天亮!")
```
### 2、 石头剪刀布案例:基础代码规范与完善 示例
## 六、石头剪刀布-05-随机数的使用
### 1、python 随机数的处理
1)在 `Python` 中,要使用随机数,首先需要导入 **随机数** 的 **模块** —— “工具包”。
```python
import random
```
2)导入模块后,可以直接在 **模块名称** 后面敲一个 `.` 然后按 `Tab` 键,会提示该模块中包含的所有函数。
3) `random.randint(a, b)` ,返回 `[a, b]` 之间的整数,包含 `a` 和 `b`
4) 例如:
```python
random.randint(12, 20) # 生成的随机数n: 12 <= n <= 20
random.randint(20, 20) # 结果永远是 20
random.randint(20, 10) # 该语句是错误的,下限必须小于上限
```
### 2、ipython3 中演示随机数 示例:
```python
python@ubuntu:~$ ipython3
Python 3.5.2 (default, Jan 26 2021, 13:30:48)
Type "copyright", "credits" or "license" for more information.
IPython 2.4.1 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
In [1]: import random
In [2]: random.
random.BPF random.expovariate random.randrange
random.LOG4 random.gammavariate random.sample
random.NV_MAGICCONST random.gauss random.seed
random.RECIP_BPF random.getrandbits random.setstate
random.Random random.getstate random.shuffle
random.SG_MAGICCONST random.lognormvariate random.triangular
random.SystemRandom random.normalvariate random.uniform
random.TWOPI random.paretovariate random.vonmisesvariate
random.betavariate random.randint random.weibullvariate
random.choice random.random
In [2]: random.randint(1, 10)
Out[2]: 3
In [3]: random.randint(1, 10)
Out[3]: 10
In [4]: random.randint(1, 10)
Out[4]: 7
In [5]: random.randint(1, 10)
Out[5]: 8
In [6]: type(random.randint(1, 10))
Out[6]: int
```
## 七、石头剪刀布-06-电脑随机出拳
### 1、 石头剪刀布案例:导入随机数工具包,完善代码
(创建 dzs_08_石头剪刀布案例.py)
```python
# 02_分支-- dzs_08_石头剪刀布案例.py
# pycharm中,按 Ctrl + /可以快速添加或者取消注释
# pycharm中,选中代码块,按 Tab 键,增加缩进,按 Shift + Tab 减少缩进。
# 导入随机工具包
# 注意:导入工具包代码应该放在最顶部,这样可以方便下方代码随时使用工具包的工具。
import random
# 从控制台输入要出的拳 —— 石头(1)/剪刀(2)/布(3)
player = int(input("请出拳 石头(1)/剪刀(2)/布(3):"))
# 电脑 随机 出拳 - 假定电脑永远出石头
# computer = 1
computer = random.randint(1, 3)
# 先打印输出出拳结果
print("玩家选择的拳头是 %d -- 电脑出的拳是 %d " %(player, computer))
# 比较胜负
# 如果条件判断的内容太长,可以在最外侧的条件增加一对大括号
# 再在每一个条件之间,使用回车,PyCharm 可以自动增加 8 个空格
if ((player == 1 and computer == 2) or
(player == 2 and computer == 3) or
(player == 3 and computer == 1)):
print("噢耶!玩家赢了,电脑弱爆了!!!")
elif player == computer:
print("心有灵犀,平局,再来一盘!")
else:
print("玩家输了,不行,我要和电脑决战到天亮!")
```
### 2、 石头剪刀布案例:导入随机数工具包,完善代码 示例
## 八、循环-01-目标确定
### 1、循环:学习目标
* 程序的三大流程。
* while 循环基本使用。
* break 和 continue。
* while 循环嵌套。
### 2、循环:就是让 **特定代码 重复** 执行,避免了程序员重复写代码。
## 九、循环-02-三大流程介绍
### 1、程序的三大流程
* 在程序开发中,一共有三种流程方式:
1)**顺序** —— **从上向下**,顺序执行代码。
2)**分支** —— 根据条件判断,决定执行代码的 **分支**。
3)**循环** —— 让 **特定代码 重复** 执行。
### 2、程序三大流程示意图:
## 十、循环基础-01-基础语法介绍和常用的应用场景
### 1、 `while` 循环基本使用
* 循环的作用就是让 **指定的代码** 重复的执行。
* `while` 循环最常用的应用场景就是 **让执行的代码** 按照 **指定的次数** **重复** 执行。
* 需求 —— 打印 5 遍 `Hello Python`
* 思考 —— 如果要求打印 100 遍怎么办?
### 2、 `while` 语句基本语法
```python
初始条件设置 —— 通常是重复执行的 计数器
while 条件(判断 计数器 是否达到 目标次数):
条件满足时,做的事情1
条件满足时,做的事情2
条件满足时,做的事情3
...(省略)...
处理条件(计数器 + 1)
```
### 3、**注意**:
* `while` 语句以及缩进部分是一个 **完整的代码块**。
```python
# 03_循环-- dzs_01_while重复执行.py
# pycharm中,按 Ctrl + /可以快速添加或者取消注释
# pycharm中,选中代码块,按 Tab 键,增加缩进,按 Shift + Tab 减少缩进。
i = 1
while i <= 10 :
Print(“hello python”)
I = i + 1
```
`上一节关联链接请点击:`