Day 03 浅析Python之分支循环

Day 03 浅析Python之分支循环

分支

单分支结构
  • 应用场景: 如果xxx就xxx(满足条件才执行某个操作,如果不满足这个条件,就不执行)

  • 语法:

​ if 条件语句 :

​ 代码段

  • 说明

​ if - 关键字,固定写法

​ 条件语句 - 判断语句(可以是任何有结果的表达式)

​ 冒号(😃 - 固定写法(注意:必须是英文输入法的冒号)

​ 代码段 - 结构上是和if保持一个缩进的一条或者多条语句,逻辑行代码段就是满足条件才会执行的 代码

#案例1: 如果age大于18就打印成年
age = 48 
if age >= 18:
	print("成年")
#案例2: 如果year对应的是闰年,就打印"闰年"
year = 1990
if (year % 400 == 0) or (year % 4 ==0 and year % 100 != 0):
	print("闰年")
#练习1: 根据num打印偶数
num = 209
if num % 2 == 0:
	print("偶数")
#练习2: 如果num不能被3整除就让num加1
num = 30
if num % 3 != 0:
	num += 1
	print(num)
双分支结构
  • 应用场景: 如果xxx就xxx否则就xxx(满足条件执行某个操作,条件不满足的时候执行另一个操作)

  • 语法:

​ if 条件语句 :

​ 代码段1(,满足条件需要执行的代码)

​ else:

​ 代码段2(条件不满足的时候执行的代码)

#案例: 根据age值打印"成年"或者"未成年"
age = 18
if age < 18:
	print("未成年")
else:
	print("未成年")
多分支结构
  • 应用场景: 如果xxx就xxx,如果xxx就xxx,如果xxx就xxx,…(根据不同的条件执行不同的代码)

  • 语法:

​ 语法1

​ if 条件语句1 :

​ 代码段1

​ if 条件语句 :

​ 代码段2

​ if 条件语句3 :

​ 代码段3

​ …

  • 语法2

​ if 条件语句1 :

​ 代码段1

​ elif 条件语句2 :

​ 代码段2

​ elif 条件语句3 :

​ 代码段3

​ …

​ else:

​ 代码段N

#案例: 根据年龄值打印年龄属性
age = int(input("请输入你的年龄"))
if age <=3:
	print("幼儿")
if 3 < age <= 12:
	print("儿童")
if 12 < age <= 18:
	print("青少年")
if 18 < age <= 28:
	print("青年")
if 28 < age <= 39:
	print("壮年")
if 39 < age <= 65:
	print("中年")	
if age > 65:
	print("老年")
#案例: 根据年龄值打印年龄属性
if age <= 3:
	print("幼儿")
elif age<= 12:
	print("儿童")
elif age<= 18:
	print("青少年")
elif age<= 28:
	print("青年")
elif age<= 39:
	print("壮年")
elif age<= 65:
	print("中年")
else:
	print("老年")

02 for循环

语法

for 变量 in 序列:

​ 循环体

说明
  • for - 关键字;固定写法
  • 变量 - 变量名(已经定义过的或者没有定义过的都行)
  • in - 关键字;固定写法
  • 序列 - 可以是任何容器型数据类型的数据,例如:字符串,列表,字典,元组,集合等
  • 冒号(😃 - 固定写法
  • 循环体 - 结构上循环体就是和for保持一个缩进的一条或者多条语句(至少一句)
执行过程
  • 变量在序列中取值,一个一个地取,取完为止
  • 每取一个就执行一次
  • for循环中要控制循环次数,只需要控制序列中元素地个数
#案例1
for i in "misk":
	print(i,"hello world")
range()函数-创建等差数列地函数
  • range(N):产生[0,N)的等差数列,差是;
  • range(M,N):产生[M,N)的等差数列,差是1;
  • range(M,N,step):产生[M,N)的等差数列,布长为step;
#案例
for i in range(10)
	print(i)
for i in range(5,10)
	print(i)
for i in range(1,10,2)
	print(i)
for i in range(6,1,-1)
	print(i)#打印6,5,4,3,2

for循环的应用

累计求和
  • 定义变量用来保存最后的和,变量默认值是0
  • 用循环依次获取所有求和的数据
  • 在循环体中每获取一个需要求和的数据,就累加到用来保存最后的和的变量中去
#案例1: 用循环求1+2+3+...+100的和
sum_num = 0
for i in range(1,101):
	sum_num += i
print(sum_num)
#案例2: 求scores中所有分数的和
scores = [98,34,78,89,78,12,56,45]
total_scores = 0
for i in scores:
	total_scores += i
print(total_scores)
#练习1: 求scores所有几个学生的总分
scores = [98,34,78,89,78,12,56,45]
total_scores = 0
for i in scores:
	if i > 60 :
		total_scores += i
print(total_scores)
统计个数
  • 定义变量保存最后的个数,默认值为0
  • 通过循环获取统计对象
  • 获得一个统计对象个数就加1
#案例1:根据scores统计不及格学生的人数
scores = [98,34,78,89,78,12,56,45]
count = 0
for i in scores:
	if i < 60:
		count += 1
print(count)
#案例2: 统计1000以内能被3整除的数(不包括0)
#方法一:
count = 0
for i in range(1,1000):
	if i % 3 == 0:
		count += 1
print(count)
#方法二:
count = 0
for i in range(3,1000,3):
	count += 1
print()

基础题

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

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

    age = int(input("请输入你的年龄:"))
    if age > 150:#频率不是很高的数据,执行次数最多,不好.
        print("这不是人")
    elif age >= 18:#这种范围从前往后写的思路要掌握
        print("成年")
    elif age > 0:
        print("未成年")
    else:
        print("这不是人")
    
  3. 输入两个整数a和b,若a-b的结果为奇数,则输出该结果,否则输出提示信息a-b的结果不是奇数

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

    for i in range(3,100,3):
        print(i,end=" , ")	#0不是3的倍数
    
  5. 使用for循环输出100~200内个位数或者十位数能被3整除的数。

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

    count = 0
    for i in range(100, 201):
        if i // 10 % 10 == 5: 	#取余是保留低位数,取整是舍弃低位数
            count += 1
    print(count)
    
  7. 使用for循环打印50~150中所有能被3整除但是不能被5整除的数

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

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

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

进阶题

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

    注意: 这儿不能使用字符串,只能用循环

    int_num = int(input("请输入一个正整数:"))
    count = 1
    num = int_num
    while True:
        if int_num // 10 >= 1:
            count += 1
            print(count)
            int_num //= 10
        else:
            break
    print(num,"是",count,"位数")
    
  2. 打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字⽴方和等于该数本身。例如:153是

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

    for i in range(100, 1000):
        units = i % 10
        tens = i % 100 // 10
        hundreds = i // 100
        if units ** 3 + tens ** 3 + hundreds ** 3 == i:
            print(i, end=" , ")
    
  3. 判断指定的数是否是素数(素数就是质数,即除了1和它本身以外不能被其他的数整除的数)

    num = 89
    count = 0
    for i in range(1, num + 1):
        if num % i == 0:
            count += 1
    if count == 2:
        print(num, "是素数")
    
  4. 输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。

    for i in range(1, 10):# 第二个乘数
        for j in range(1, i + 1):# 第一个乘数不能比第一个大
            print(j, " * ", i, " = ", i * j, end="    ")
        print()
    
    
  5. 这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?(可以直接使用穷举法)

    #分析:大马最多33只,中马最多50只,小马最多98只
    for big_horse in range(1, 34):
        for mid_horse in range(1, 50):
            for small_horse in range(2, 98, 2):
                if big_horse * 3 + mid_horse * 2 + small_horse / 2 == 100:
                    if big_horse + mid_horse + small_horse == 100:
                        print("百马百担问题中,可能出现组合,大马:", big_horse, "中马:", mid_horse, "小马:", small_horse)
    
    

总结几点

# 解释型语言和编译型语言
# 任何数据类型都可以转换成bool类型
# 取余是取后面位数,整除是去除后面位数
# bool数据参与数学运算时,True为1,Flase是0
# python对大小写敏感
# 空字符也有占位
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值