python入门基础day02

## 条件控制语句

### 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:
   打印九九乘法表

```

##  

你可能感兴趣的:(python)