## 条件控制语句
### 1.1 if条件语句的概述
```
当满足某个条件的时候 我们要做的事情
生活中的场景
做地铁/火车 需要先安检 如果有票就能进站 或者不允许进站
开发中的场景
用户登陆注册 判断登陆时候填写信息是否和注册提交给后台的保持一致
例子:判断重要的日期 五一劳动节,情人节,发工资
思考:单分支条件语句,如果条件为真执行要做的事情 条件为假不会有任何输出,我如果想条件为假的结果
```
### 1.2 if判断语句的格式
#### 1.2.1 if语句的基本格式
```
作用:if语句用来进行判断:
if 要判断的条件:
条件成立,要做的事
if的基本格式
if 条件:
要做的事情
```
#### 1.2.2 if...else
```
if...else
格式:
if 条件:
满足条件,做事情1
满足条件,做事情2
满足条件,做事情3
....
else:
不满足条件,做事情1
不满足条件,做事情2
不满足条件,做事情3
练习:
要求,从键盘获取自己的年龄,判断是否大于等于18,如果条件成立“XXXX”
age = int(input('请输入你的年龄'))
if age >= 18: #执行条件为真的结果
print('成年了')
else: #执行条件为假的结果
print('未成年')
#案例,进火车站检票 如果有票可以进站 或者不允许进站
ticket = 0 #1表示有票 0表示无票
if ticket == 1:
print('有车票可以进站')
else: #执行条件为假的结果
print('没有车票,请先购票')
练习:
要求:从键盘输入刀子的长度,如果刀子长度没有超过10cm,允许上火车,反之不允许
knife1 = input('请输入刀子的长度:')
knife = int(knife1) #int()函数把input()函数返还的字符串先转换成数字类型
if knife <= 10: #满足进站的条件 执行条件为真的结果
print('可以进站')
else: #执行条件为假的结果
print('不允许进站')
拓展
#if比较运算符
age = 17
if age >= 18:
print('可以进网吧了')
else:
print('未成年人不准进网吧')
#if逻辑运算符 or
my = input('你去吗?')
mywife = input('你去吗?')
if my == '去' or mywife == '去':
print('去买菜')
else:
print('下馆子')
#if逻辑运算符 and
my = input('你去吗?')
mywife = input('你去吗?')
if my == '去' and mywife == '去':
print('可以领证了')
else:
print('再等等,过段时间再去')
#案例:if逻辑运算符not
age = 16
if not(age >= 18):
print('成年了')
else:
print('未成年')
#案例3:if逻辑运算符 ---白富美
color = input('你白吗?')
money = float(input('你富吗?'))
beautful = input('你美吗')
#带有小数点的浮点型 属于数字类型
if color == '白' and money >= 10000000 and beautful == '美':
print('白富美')
else:
print('--------')
```
#### 1.2.3 elif
```
1.if单分支条件语句 当条件为真执行要做的事情 条件为假不会有任何输出 如果我想输出条件为假的结果
2.if else 多分支条件语句 当条件为真执行要做的事情 条件为假执行else后面的语句 如果我们有多个条件都为真 只要满足就可以做对应的事情
格式:
elif 的使用格式:
if 条件1:
事情1
elif 条件2:
事情2
elif 条件3:
事情3
else: #执行条件为假的结果
要做的事情
说明:
当条件1满足时,执行事情1,然后整个if语句结束
当条件1不满足,那么需要判断条件2,如果条件2满足,执行事情2,然后整个if语句结束
当条件1和2都不满足,如果条件3满足,执行事情3,然后整个if语句结束
案例:
#if...elif案例
#根据考试的成绩,判断学生的等级
#案例:通过键盘录入的方式获取学生的成绩(Number类型中的int)
score = 59
if score == 60:
print('D')
elif score > 60 and score <= 75:
print('C')
elif score > 75 and score < 90:
print('B')
elif score >= 90:
print('A')
else: #以上条件都不满足 执行else条件为假的结果
print('你要补考')
注意:
elif必须和if一起使用,否则出错
练习:
根据用户的输入,判断是星期几,用户输入的数值范围为1~7(正整数)
```
### 1.3 if语句的嵌套
#### 1.3.1 概述
```
条件语句里面再嵌套条件语句
```
#### 1.3.2 if语句嵌套的格式
```
if 条件1:
满足条件1,做事情1
满足条件1,做事情2
满足条件1,做事情3
.....(省略)
if 条件2:
满足条件2,做事情1
满足条件2,做事情2
满足条件2,做事情3
说明:外层的if判断,if...else
内层 if...else
# if语句嵌套
#案例,火车安检,先验票,再检查有没有携带违禁品 如果刀子长度没有超过10cm,允许上火车
nicket = 1 #1有票 0无票
knife = 12 #单位cm
#1.先检查用户是否有票
if nicket == 1:
print('通过安检,可以进站')
if knife <= 10:
print('可以上车了')
else:
print('携带违禁物品,先抓起来暴打一顿,再送公安局')
else:
print('请先买票再进站')
```
### 1.4 if 语句的应用(猜拳游戏)
```
石头 剪刀 布
要求:
电脑随机生成一个0~2之间的正整数0,1,2,
剪刀(0),石头(1),布(2)
,要求用户通过键盘录入的方式输入0~2之间的正整数,产生结果
```
## 进制以及进制的转换
### 1.1 进制的概述
```
数据的存储
数据存储到计算机
运行速度快 存储海量数据 读取运算方便
数据存储到计算机什么地方?
存储到内存里面去了
数据是如何存储到内存里面
计算机很大一部分功能存储数据 存储器存储 类似内存条
内存?
抽象的概念
一个状态 1开启 0关闭
一个房间假设装8个开关 控制灯的打开或者关闭
一个房间我们称它为一个字节 每一个开关称为位
1字节= 8位
房间有个编号18 相当于是门牌号
计算机以二进制方式保存我们的数据到内存里面
0 1
内存存储数据的单位
1bit
8bit = 1字节
1024字节 = 1k
1024k = 1M
1024M = 1G
1024G = 1T
1024T = 1P
进制:进位的计数
```
### 1.2 进制的分类
```
生活中最常见的进制----》十进制1,2,3,4,5,6,7......
常见的进制分为:
二进制
八进制
十进制
十六进制
二进制:
任何数据在计算机中都是以二进制的形式存在,二进制早期由电信开关演变而来
```
#### 1.2.1 二进制
```
特点:
由0,1组成,0b开头,逢二进一
例如:
0 + 0 = 0
0 + 1 = 1
1 + 1 = 10
11 + 1 = 100
```
#### 1.2.2 八进制
```
八进制:
有数字0~7组成,逢八进一 ,以0o开头0,1,2,3,4,5,6,7 逢八进一
例如:
1 + 7 = 10
1 + 3 = 4
```
#### 1.2.3 十进制
```
特定:
0~9数字组成,逢十进一,整数的默认是十进制
1 + 9 = 10
10 + 3 = 13
```
#### 1.2.4 十六进制
```
特点:
十六进制的范围0~9 A~F 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f
逢16进1,以0x开头
1 + f = 10
```
### 1.3 进制之间的转换
```
1.十进制转换为二进制
做除法,余数逆序
10(10)---->1010(2)
10/2 5 0
5/2 2 1
2/2 1 0
1/2 0 1
2.十进制转八进制
10(10)----->12(8)
10/8 1 2
1/8 0 1
3.十进制转换为十六进制
直接除以16,余数在10~15之间用a~f表示
10(10)----》a
11(10)-----b
4.二进制转10进制
当前的数字,乘以2的位数的次方,最后相加
10进制转换2进制 1010
0*2^0 + 1*2^1 + 0*2^2 + 1*2^3 = 10
5.八进制转二进制
一转三位,八进制中的1位相当于二进制中的三位,转换的时候按照十进制进行转换
例如:65---->110101
6/2 3 0
3/2 1 1
1/2 0 1
5/2 2 1
2/2 1 0
1/2 0 1
6.二进制转换为八进制
三位转1位,从低位取,高位不够补0
110101(2)----》 65(8)
7.十六进制----》二进制
一位转4位
十六进制的一位相当于二进制的4位,转换时按照十进制进行转换
a4(16)----->1010 0100(2)
a ---> 1010
4 -----> 0100
8.二进制转为十六进制
四转1 从低位取,高位不够补0
补充:
十进制转换为八进制或则十六进制
(可以先将10----》2---》8/16)
0000 1010
1 1 1 1 1 1 1 1
128 64 32 16 8 4 2 1
```
### 1.4 进制之间的快速转换
```
可以使用python中函数实现
下面的符号对应进制数
b : 二进制
d : 十进制
o : 八进制
x : 十六进制
十进制转换二进制 ----》 bin(10)
十进制转换为八进制 ---》 oct(10)
十进制转换为十六进制 ----》 hex(10)
二进制转换为十进制 ----- eval("0b1010")
八进制转换为十进制 ----- int(参数1,参数2):参数1:需要转换的数,参数2,进制的类型
print(int('0o12',8))
十六进制转十进制 ---- int(参数1,参数2):参数1:需要转换的数,参数2,进制的类型
```
### 1.5 原码/反码/补码
```
概述:
数据存储:计算机的存储数据,先开辟一个内存空间,在存储数据,计算机中开辟内存的最小单位是字节,二进制表示数据的存储 0和1 用高位标识符符号表示数值符号(+/-),1表示负数 0:正数
原码/反码/补码是数值运算的基础,在计算机中,数值运算是基于二进制数,底层是二进制运算,使用高位标识符 1表示负数 0:正数
基础定义:
原码:
就是二进制定点表示法,即最高为为符号位,0:正数,1:负数,其余的位数表示数值的大小
通过一个字节
10 0000 1010
-10 1000 1010
反码:
正数的反码和原码相同,负数的反码是对其原码逐位取反(1变0,0变1),但是符号位不变
+10 反码 0000 1010
-10 反码 1111 0101
补码:
正数的补码和原码一样,负数的补码是在其反码的末尾加1
+10 补码 0000 1010
-10 补码 1111 0110
注意:
计算机中都是以补码的形式存在
问题:
在计算机中,为什么不用原码和反码而用补码?
因为原码和反码不准确,而使用补码才准确
二进制转为十进制
1.使用原码计算
10-10
+10 0000 1010
-10 1000 1010
-----------------------------------
1001 0100 4+16 =-20
2.使用反码计算
10-10
+10 0000 1010
-10 1111 0101
--------------------------------
1111 1111 10000000 ===》 -0
3.使用补码计算
10-10
+10 0000 1010
-10 1111 0110
---------------------------
0000 0000 0
练习:
分别计算以下补码表示的十进制数是多少?
二进制
1.0b0000 1111 ------> 15
2. 0b1111 1111 -----》(将补码转换反码)0b1111 1110 __---->(反码再转原码)0b1000 0001 -1
3.0b1000 0001 ---->0b1000 0000 -----> 0b1111 1111 -127
4.~6取反(1变0,0变1)
6 ----》 二进制 ---》 0000 0110
取反
~6 1111 1001 补码(计算在存储数据时按补码进行存储)
1111 1001 补码
1111 1000 反码
1000 0111 原码
---------
```
## 循环语句
### 1.循环语句的介绍
```
生活中的场景
生活中的场景
生活中的场景
电风扇 跑道
软件开发场景
总结: 在程序开发过程中 如果相同的代码执行多次 我们就可以使用循环,循环不是必须的
提高代码的重复使用率,一般应用在开发中
```
## 2.while循环
### 2.1 while循环的格式
```
格式
while(循环的条件): 如果循环条件满足
做事情1,
做事情2,
做事情3
案例:循环输出1-5的数字
```
### 2.2 while循环的应用
```
案例1:
计算1~100之间的累计和(包含1和100)
案例2:
计算1~100之间偶数的累计和(包含1和100)
思考:while循环当条件为真执行对应结果 为假就不会执行 如果想输出条件为假的结果 while else 类似
if else语句
```
### 2.3 while...else
```
格式:
while 判断表达式:
语句1
else:
语句2
逻辑:
在条件语句(判断表达式)为false,执行else中的语句2
案例:循环输出数字1-3
```
### 2.4 while循环的嵌套
```
while循环,while里面嵌套一个while
格式:
while 条件1:
条件1满足,做事情1
条件1满足,做事情2
条件1满足,做事情3
.....
while 条件2:
条件2满足,做事情1
条件2满足,做事情2
条件2满足,做事情3
```
### 2.5 while循环嵌套的应用4
```
案例1.打印一个矩形
******
******
******
******
案例2:
打印杨辉三角
*
* *
* * *
* * * *
* * * * *
案例3:
打印九九乘法表
```
##