[TOC]
### 课前准确:
* 在`Windows`系统里安装`python`,参考 [安装python](https://www.kancloud.cn/k12edu/k_12/785427#Windowspython_4)
*****
### 本节课参考书目
* `Teach Your Kids to Code.pdf` 第五章:条件判断( if 语句)
*****
### `IF` 语句
```
if <条件>:
<执行命令>
```
`if 条件:` ,“如果条件**成立 Ture**的话”,就执行`:` 后面的代码;“如果条件**不成立 False**的话”,就跳过`:` 后面的代码。
一般情况下,`if` 语句带的条件如下图所示:
![](https://box.kancloud.cn/770334df22eeefd228d17a7f0ee7c0e2_1006x345.png)
下面这个例子,`if`语句所带的条件是`1==1`(1等于1),返回`True`,所以会执行`:`后面的命令(打印" You are right!")。
```
>>> if 1==1: # “如果 1 等于 1 的话”
print( " You are right!") # 打印 " You are right!"
You are right!
```
下面这个例子,`if`语句所带的条件是`1!=1`(1不等于1),返回`False`,所以不会执行`:`后面的命令。
```
>>> if 1!=1: # “如果 1 不等于 1 的话”
print( " You are right!") # 因为“1 不等于 1”是错误的,所以print( " You are right!")不会被执行
```
#### 一个画图的例子
```
# IfSpiral_5_1.py
answer = input("你想画图吗? y/n:")
if answer == 'y':
print("Working...")
import turtle
t = turtle.Pen()
t.width(2)
for x in range(100):
t.forward(x*2)
t.left(89)
print("Ok,我们画完了!")
```
#### 我可以驾驶车辆吗?
```
# OldEnough_5_2.py
driving_age = eval(input("你们当地的法定驾驶年龄是多大?"))
your_age = eval(input("你多大了? "))
if your_age >= driving_age:
print("你可以驾车!")
if your_age < driving_age:
print("对不起,你还得等", driving_age - your_age, "年才可以驾车!")
```
### `ELSE` 语句
可以给`if`添加一个`else`语句。如果`if`判断是`False`,不要执行`if`语句`:`后面的命令1,去把`else`语句`:`后面的命令2执行了。
```
if <条件>:
<如果条件成立,执行命令1>
else:
<如果条件不成立,执行命令2>
```
#### 我可以驾驶车辆吗?(改进版)
```
# OldEnoughElse_5_3.py
driving_age = eval(input("你们当地的法定驾驶年龄是多大?"))
your_age = eval(input("你多大了? "))
if your_age >= driving_age:
print("你可以驾车!")
else:
print("对不起,你还得等", driving_age - your_age, "年才可以驾车!")
```
### `ELIF` 语句
如果有多个判断条件,可以使用多个`elif`:
```
if <条件1>:
<如果条件1成立,执行命令1>
elif <条件2>:
<如果条件2成立,执行命令2>
elif <条件3>:
<如果条件3成立,执行命令3>
else:
<如果以上条件都不成立,执行命令4>
```
#### 数学考试评级
```
# WhatsMyGrade_5_4.py
grade = eval(input("这次你数学考了多少分 (0-100): "))
if grade >= 90:
print("很不错哦,你得了一个 A! :) ")
elif grade >= 80:
print("你得了一个 B!")
elif grade >= 70:
print("你得了一个 C.")
elif grade >= 60:
print("你得了一个 D...")
else:
print("你惨了,你得了一个 F. :( ")
```
### 复杂条件判断:`AND` `OR` `NOT`
![](https://box.kancloud.cn/d28305b3883a4f72b1db305094cbd2f3_654x147.png)
#### 天气如何,要不要添衣?
```
# WhatToWear_5_5.py
rainy = input("天气如何?下雨了吗? (y/n)").lower()
cold = input("外面冷不冷? (y/n)").lower()
if (rainy == 'y' and cold == 'y'):
print("你最好穿件雨衣。")
elif (rainy == 'y' and cold != 'y'):
print("带把伞吧。")
elif (rainy != 'y' and cold == 'y'):
print("穿件外套吧,外边很冷!")
elif (rainy != 'y' and cold != 'y'):
print("天气这么好,穿什么你钟意咯!")
```
### 课程小结
1. `IF` 语句
2. `ELSE` 语句
3. `ELIF` 语句
4. 复杂条件判断
### 课程回顾
昨天上课时有个小朋友问了一个很好的问题:
数学考试评级如果输入大于100的数字,程序也可以执行,这是不对的,程序应该拒绝执行。
这个问题的解决办法是在程序的输入得分的后面,加上一个`while`语句。
```
grade = eval(input("这次你数学考了多少分 (0-100): "))
while grade > 100: #加了while控制,就不能输入大于100的数字
print("这是不可能的!")
grade = eval(input("请重新输入你的考试得分 (0-100): "))
if grade >= 90:
print("很不错哦,你得了一个 A! :) ")
elif grade >= 80:
print("你得了一个 B!")
elif grade >= 70:
print("你得了一个 C.")
elif grade >= 60:
print("你得了一个 D...")
else:
print("你惨了,你得了一个 F. :( ")
```