day4分支和循环

day4分支和循环

01补充

1. id(变量) - 获取数据的地址
num = 100

print(id(num))
2. 逻辑运算符的补充:

and 和 or 的短路操作 (类似于物理电路不通,程序里面的短路是代码不会执行它)
条件1 and 条件2 - 当条件1是False,条件2对应的代码不会执行
条件1 or 条件2 - 当条件1是True,条件2对应的代码不会执行

3. python版本是否兼容:python3.9.6
A.B.C    比如3.9.63.9.5

A:重大修改,上下不兼容

B:新增功能修改

C:修复bug
4. python不支持的数据类型char,但c 和Java支持
5. False -> 0, True -> 1
  • 布尔可以和数字进行运算,False在参与计算中就是0,True参与计算就是1

02 流程控制

流程控制 - 控制代码执行方式
根据代码执行方式不同,将执行方式分为三种:

    1. 顺序结构(默认): 代码从上往下一条一条的执行,每条语句只执行一次
    1. 分支结构: 根据条件执行或者不执行相关操作(选择执行代码) - if (python分支结构只有if,其他编程语言除了if还有一个),比如:有网、没网
    1. 循环结构: 让代码重复执行(代码只写一遍,可以重复执行多次) - for、while (转圈)
    从上往下执行:
    print(1)
    print(2)
    print(3)
    

03 if分支结构

1. if单分支结构 - 满足某个条件才执行某个操作,这个不满足的时候这个操作就不执行;相当于:如果…就…(只管这个条件成立)
语法:
if 条件语句:
   代码段
  • 2)说明:
    if - 关键字;固定写
    条件语句 - 可以是任何有结果的表达式(不能是赋值语法),例如:运算表达式、具体的数据、 已经赋值过得变量等。
    : - 固定写法(冒号必须是英文输入法下面的冒号) 不然中文会报错
    代码段 - 从结构上就是和if保持一个缩进的一条或者多条语句(至少一条);
    逻辑上代码段就是满足条件才会执行的代码

  • 3)执行过程:
    先判断条件语句是否为True(如果条件语句的结果不是布尔,将结果转换成布尔再判断),如果为True就执行代码段然后再执行后续的其他语句;否则就不执行代码段直接执行后续的其他语句

if a = 10:
    pass         # 报错
if age += 20
     pass        #  报错 , if后面不能写赋值语句
不知道写什么,写passpass除了占位,没有其他意义
如果age的值大于等于18就打印'成年'
age = 20
if age >= 18:
    print('成年!')
print('=====')
print必须和if有一个缩进,不然print打印的结果跟if没关系

判断num是否是偶数;如果是就打印'偶数'
num = 21
if num % 2 == 0:
    print('偶数')
2. if双分支结构 - 满足某个条件执行某个操作,这个条件不满足的时候就执行另外一个操作;相当于:如果…就…否则就…(管这个条件成立或不成立)
语法:
if 条件语句:
    代码段1(条件成立的时候需要执行的代码)
else:
    代码段2(条件不成立的时候需要执行的代码)
如果age的值不小于18就打印'成年'否则打印'未成年'
age = 13
if age >= 18:
    print('成年')
else:
    print('未成年')
根据num的奇偶性打印'奇数'或者'偶数'
方法1:
num = 23
if num % 2 == 0:
    print('偶数')
else:
    print('奇数')
方法2(慢慢来理解和接受):
if num % 2:
    print('奇数')
else:
    print('偶数')
# num % 2有2种情况,要么是0,要么是1,当num为偶数时,偶数取余这个结果就是0,当num为奇数时,num % 2这个结果是1,不是布尔值,当我们判断这个条件不是布尔值时,判断看num % 2这个值转换的是True还是False
#当num是偶数时,是0,0转换成布尔值是False,是不成立,就会执行else里面来
#当num是奇数时,是1,1转换成布尔值是True,是成立的,就会执行if语句
判断num是否是水仙花数,如果是就打印'是水仙花数',否则打印'不是水仙花数'
水仙花数:一个三位数,它各个位数的立方和等于这个数本身,比如:153 ==  1**3 + 5**3 + 3 ** 3
num = 231
获取百位数、十位数和个位数
h = num // 100
t = num // 10 % 10
u = num % 10
判断各个个位数的立方和数本身是否相等
if num == h**3 + t**3 + u**3:
    print('是水仙花数')
else:
    print('不是水仙花数')
3. if多分支结构- 根据不同的条件执行不同的操作(根据不同的条件做不同的事情)
相当于:如果…就… 如果…就… 如果…就… 如果…就
方案1 -  多个条件之间不存在'其中一个满足另外的条件一定不满足'的关系的时候使用(不用新的东西,直接用单分支结构来实现多分支结构的功能)()
if 条件语句1:
    代码段1
if 条件语句2:
     代码段2
if 条件语句3:
     代码段3
方案二 - 多个条件之间存在'其中一个满足另外的条件一定不满足'的关系的时候使用
if 条件语句1:
    代码段1
elif 条件语句2:
    代码段2
elif 条件语句3:
     代码段3

...
else:
    代码段N
# 先判断第一个条件是否成立,如果第一个条件成立了,执行代码段1,代码段1执行了,整个直接结束,后面的条件不判断了,代码都不再执行了,如果第一个条件不成立,他才会判断第二个条件是否成立,依此类推,如果前面的条件都不成立,才会执行else的代码   

练习:给百分制分数打A(90-100)、B(80-89)、C(60-79)、D(60分以下)的等级

方案1:
score = 99
if 90 <= score:
    print('A')
if 80 <= score < 90:
    print('B')
if 60 <= score < 80:
    print('C')
if score < 60:
    print('D')
方案2:
score = 8
if score >= 90:
    print('A')
elif score >= 80:
    print('B')
elif score >= 60:
    print('c')
else:
    print('D')
4. if嵌套

练习: 如果num是偶数就打印’偶数’,是奇数就打印’奇数’,如果能被4整除打印’4的倍数’

num = 21

# 21  -  奇数   (21只打印奇数)

# 6   -  偶数

# 20  -  偶数、4的倍数

# print('奇数')

# print('偶数')

# print('4的倍数')   
到底打印哪个东西,看数据是什么数据
综上:
if num % 2 ==0:
    print('偶数')
    if num % 4 == 0:
        print('4的倍数')
        print('===========')     # 看跟哪个if保持缩进,就打印哪个结果
else:
    print('奇数')

04 for循环

打印10次’hello world’

  • 方法一:不使用循环
    print(‘hello world’) 复制粘贴10遍

  • 方法二:使用循环 (代码写一遍,重复循环10次)
    for _ in range(10):
    print(‘hello world!’)

1. 循环的作用:让代码重复执行
(1) for循环
  ```python
  1)语法:
  for 变量 in 序列:
      循环体
      
  2)说明:
  for、in   -   关键字;固定写法
  变量      -    变量名;可以是已经定义过的变量的变量名,也可以是临时创建的变量名
  序列      -    容器型数据类型的数据,例如:字符串、列表、元组、字典、集合、迭代器、生成器、 range等(一个盒子有多个格子,保存多个数据,一个一个取)
  :         -    固定写法
  循环体     -    结构上就是和for保持一个缩进的一条或者多条语句(至少1条);
                  逻辑上就是需要重复执行的代码
  3)执行原理
  让变量去序列中取值,一个一个的取,取完为止,每取一个值就执行一次循环体。
  for循环的循环次数由序列中数据的个数决定。
  ```
  
  ```python
  # 目标:打印多次print('hello world')
  for x in 'ab89c':
      print('hello world!')
  # 引号里面有多少个符号对应这个字符串有多少个数据,对应这个盒子有多少个格子
  # 变量的值看你当次取到的什么(打印出来显示以下)
  # a hello world
  # b hello world
  # 8 hello world
  # 9 hello world
  # c hello world
  ```
(2) rang函数 - 创建一个等差数列 (for循环的最佳拍档:range函数)

容器性类型数据其他操作100、1000次控制次数不是那么好控制,不方便,要保证字符串有1000个数据 所以用range函数

  • 1)range(N) - 创建一个0到N-1[0,N)的等差数列,[0 ,N),差是1;例如,range(5) -> 0,1,2,3,4

(还可以保证N的值是多少,这个等差数列里面的项就是多少项,也对应这个容器里面有多少个元素)

  • 2)range(M,N) - 创建M到N-1的等差数列,[M,N),差是1;例如,range(10,20)->10,11,12,13,…18,19
  • 3)range(M,N,step) - 创建一个[M,N)的等差数列,差是step;
    例如:range(2, 20, 2) -> 2,4,6,8,10,12,14,16,18
    range(2,20,-2) -> 空 报错
    range(20,2,-2) -> 20,18,16,14,12,10,8,6,4

控制它的差值,M控制首项,N控制尾项,step控制差,如果没有step,差默认都是1,

print('------------1---------------')
for x in range(5):
    print(x)

打印结果是0 1 2 3 4,那么x取到的值就是0 1 2 3 4

print('------------2---------------')
for x in range(10,20):
    print(x)

print('-------------3--------------')
for x in range(20, 2 -2):
    print(x)
练习1:写程序创建一个等差数列:13 16 19 22
for x in range(13, 23, 3):
    print(x)

练习2:写程序创建一个等差数列:5 3 1 -1 -3
for x in range(5, -4, -2):
    print(x)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值