day 03 - 分支和循环

分支和循环

01. if 分支结构

1. 程序流程控制

1)顺序执行 - 代码从上往下一条一条的按顺序执行(默认)
2)分支结构 - 根据条件选择执行或者不执行某些代码**(if语句)**
3)循环结构 - 让一段代码重复执行 (for循环、while循环)

2. 分支结构----if语句:

python中实现能够实现分支结构的只有 if

(1)if单分支结构 - if

  • 应用场景:如果满足某个条件就执行某段代码,条件不满足就不执行

    语法:**
    if 条件语句:
    代码段**

说明:

1. if - 关键字:( 固定写法 )

2. 条件语句 – 任何有结果的表达式(包括:具体的数据、已经赋值过的变量、 运算表达式-赋值语句除外…)

3.(冒号 :) – 固定写法(注意:必须使用英文输入法下的冒号)

4. 代码段 – 和if保持一个缩进的一条或者多条语句;需要在满足条件才会执行的代码

执行过程:

先判断if后面的条件语句是否为True( 如果不是布尔 就看结果的布尔值是否是True )

如果是True,就执行代码段,否则代码段不执行

练习1:如果指定的年龄已成年就打印'成年'

age = 19
if age >= 18:
    print('成年')

(2)if 双分支结构: if - else

  • 应用场景:满足条件执行某个操作,不满足的时候执行另外一个操作

语法:
if 条件语句:
代码段1(满足条件需要执行的代码)
else:
代码段2(不满足条件的时候需要执行的代码)

执行过程:
判断条件语句是否为True,如果为True就执行代码段1;否则执行代码段2。

练习1:根据num的值打印 '偶数' 或者 '奇数'

num = 13
if num % 2 == 0:
    print('偶数')
else:
    print('奇数')

练习2:根据year的值打印 '闰年' 或者 '非闰年'

year = 2020

闰年的条件:1)能被400整除  2)能被4整除,但是不能被100整除

1)year % 400 == 0   2)year % 4 == 0  and  year % 100 != 0

(year % 400 == 0) or (year % 4 == 0  and  year % 100 != 0)

写法一:

if (year % 400 == 0) or (year % 4 == 0 and year % 100 != 0):
    print('闰年')
else:
    print('平年')

写法二:

condition = (year % 400 == 0) or (year % 4 == 0 and year % 100 != 0)
if condition:
    print('闰年')
else:
    print('平年')



02. if 多分支结构

1. if-elif-else
  • 应用场景:针对不同的条件实现不同的操作。(不同的条件之间满足:如果其中一个条件已经满足,就没有再判断其他条件的必须)

语法:
if 条件语句1:
代码段1

elif 条件语句2:
代码段2

elif 条件语句3:
代码段3

else:
代码段N

注意: 后面的条件是在前面的条件不成立的前提下 进行判断的

# 练习. 根据输入的年纪范围打印成年或者未成年,如果年龄不在正常范围内(0~150)打印这不是人!

if age < 0 or age > 150: 
    print('不是人!')  

elif age >= 18:    
    print('成年人') 
else:
    print('未成年人') 
    
    age < 0 or age >150 -->if True  -> print('不是人')
    age >= 18  else -> True   -> print ('成年人')
    else -> True  --->print('未成年人')

    

03. for循环

1. for循环 (让代码重复执行)

语法:
for 变量 in 序列 :
循环体

说明:
1) for - 关键字;固定写法
2) 变量 - 和定义变量的时候变量名的要求和规范一样(如果这个变量在循环体中不使用,变量名可以用_代替)
3) in - 关键字:固定写法
4) 序列 - python中容器型数据类型,例如:字符串、列表、元组、集合、字典、迭代器、生成器、range等…
5) 冒号 : - 固定写法
6) 循环体 - 和for保持一个缩进的一条或者多条语句;需要重复执行的代码

执行过程:
让变量去 序列 中取值,一个一个的取,取完为止,每取一个值就执行一次循环体。

(for循环的执行次数,看序列中元素的个数)

for x in ' a b c ':
    print(x, 'hello world!')

2. range函数 - 产生指定范围的数字序列

(1). range(N) - 产生一个[0, N) 的数字序列(N是正整数);例如:range(4) - 产生 0、1、2、3 的数字序列

for x in range(4):
    print('x1:',  x)

(2). range(M, N) - 产生一个[M, N) 的数字序列(M<N,并且M和N是整数);例如:range(-3, 3) - 产生: -3、-2、-1、0、1、2

for x in range(-3, 3):
    print('x2:', x)

(3) range(M, N, step) - 产生一个[M, N)的数字序列,每次数值增加step;例如:range(-3, 3, 2) - 产生:-3、-1、1

for x in range(-3, 3, 2):
    print('x3:', x)


# 练习1: 计算1+2+3+4+...+100的和

sum1 = 0
for x in range(1, 101):
    sum1 += x

print('和:', sum1)

print(sum1) -> print(5050)
# 练习2:统计1000以内能够被3整除的数的个数

count = 0   
for x in range(1000): 方法二:(0,1000,3):
    if x % 3 == 0:
        count += 1
print('个数:', count)


# 练习3:打印1000以内能够被3整除并且个位数是2的所有的数

方法一:
for x in range(1000):
    if x % 3 == 0 and x % 10 == 2:
        print(x, end=' ')
print()

方法二:先生成1000以内所有3的倍数,然后再看3的倍数中谁的个位数是2

for x in range(0, 1000, 3):
    if x % 10 == 2:
        print(x, end=' ')


方法三:先生成1000以内所有个位数是2的数,然后再看个位数是2的数中谁可以被3整除

2 12  22  32  42 52 ... 92 102  112 ...

for x in range(2, 1000, 10):
    if x % 3 == 0:
        print(x, end=' ')
print()
      

作业

基础题

  1. 根据输入的成绩的范围打印及格 或者不及格

    score = int(input('请输入成绩'))
    if score >= 60:
        print('及格')
    else:
        print('不及格')
    
  2. 根据输入的年纪范围打印成年或者未成年,如果年龄不在正常范围内(0~150)打印这不是人!

    age = int(input('请输入年龄'))
    if age < 18:
        print('未成年')
    elif age < 150:
        print('成年')
    else:
        print('这不是人')
    
  3. 输入两个整数a和b,若a-b的结果为奇数,则输出该结果,否则输出提示信息a-b的结果不是奇数

    a = int(input('请输入一个数'))
    b = int(input('请输入一个数'))
    num = a - b
    if num % 2 == 0:
        print('a-b的结果不是奇数')
    else:
        print(num)
    
  4. 使用for循环输出 0~100内所有3的倍数。

    for x in range(3, 100, 3):
        print(x)
    
  5. 使用for循环输出100~200内个位数或者十位数能被3整除的数。

    for x in range(100, 200):
        if (x % 10) % 3 == 0 or (x // 10 % 10) % 3 == 0:
            print(x)
    
  6. 使用for循环统计100~200中十位数是5的数的个数

    for x in range(100, 200):
        if x // 10 % 10 == 5:
            print(x)
    
  7. 使用for循环打印50~150中所有能被3整除但是不能被5整除的数

    for x in range(50, 150):
        if x % 3 == 0 and x % 5 != 0:
            print(x)
    
  8. 使用for循环计算50~150中所有能被3整除但是不能被5整除的数的和

    sum1 = 0
    for x in range(50, 150):
        if x % 3 == 0 and x % 5 != 0:
            sum1 += x
    print(sum1)
    
  9. 统计100以内个位数是2并且能够被3整除的数的个数。

    count = 0
    for x in range(100):
        if x % 10 == 2 and x % 3 == 0:
            count += 1
    print(count)
    

进阶题

  1. 输入任意一个正整数,求他是几位数?

    num = int(input('请输入一个正整数'))
    count = 0
    while num > 0:
        num = num // 10
        count += 1
    print(count)
    
    

    注意: 这儿不能使用字符串,只能用循环 (会用到while循环)

  2. 打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字⽴方和等于该数本身。例如:153是

    ⼀个⽔仙花数,因为 1³ + 5³ + 3³ 等于 153。

    for x in range(100, 1000):
        gw = x % 10
        sw = x // 10 % 10
        bw = x // 100
        if bw**3 + sw**3 + gw**3 == x:
            print(x)
    
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值