0
点赞
收藏
分享

微信扫一扫

day4-分支和循环

GG_lyf 2022-02-18 阅读 80
python

day4-分支和循环

学习小结

1.流程控制

​ 1)顺序结构:代码从上向下依次执行,每条语句只执行一次(默认)

​ 2)分支结构:根据条件选择执行或者不执行部分代码(使用if函数)

​ 3)循环结构:让代码重复执行(for、while)

2、分支结构

单分支:满足某个条件执行某个操作,条件不满足就不执行 (如果…就…)
比如:你爸对你说:“如果你考试考100分就奖励你一辆车”
双分支:满足某个条件执行某个操作,条件不满足就执行另外的操作(如果…就…否则就…)
比如:你爸对你说:“如果你考试考100分就奖励你一辆车,否则就打死你”

多分支:根据不同的条件执行不一样的操作

1) if单分支结构:如果…就…

语法:

if 条件语句:
    代码段

说明:
if - 关键字;固定写法
条件语句 - 可以是任何有结果的表达式,包括:具体的数据、云实验表达式(赋值运算例外)、已经赋值的变量、函数调用表达式等
: - 固定写法(英文状态下的冒号)
代码段 - 从结构上就是和if保持一个缩进的一条或者多条语句(至少一条);逻辑上,就是条件成立的时候才会执行的代码

2)if双分支结构 - 如果… 就…否则…

语法:

if 条件语句:
    代码段1(条件满足时需要执行的代码)
else:
    代码段2(条件不满足时需要执行的条件)
# 判断一个整数的奇偶性
num = int(input('请输入一个整数:'))
if num % 2 == 0:
    print('偶数')
else:
    print('奇数')

3)if多分支结构 - 如果…就…如果…就…如果…就…否则…

语法:

if 条件1:
    代码段1
elif 条件2:
    代码段2
elif 条件3:
    代码3
...
else:
    代码段N

其他代码
根据对应分数打印相应的奖学金金额
# 90分以上 - 2000元
# (85,90]-1000元
# (75,85]-500元
# (60,75]- 200元

score = int(input('请输入分数:'))
if score > 90:
    print('2000元')
elif 85 < score <= 90:
    print('1000元')
elif 75 < score <= 85:
    print('500元')
elif 60 < score <= 75:
    print('200元')
else:
    print('你该努力了')

3、循环结构

1)for循环

语法:

for 变量 in 序列:
    循环体

说明:
for - 关键字;固定写法
变量 - 有效变量名(可以是已经定义的,也可以是没有定义过的)
in - 关键字;固定写法
序列 - 容器型数据类型的数据,包括:字符串、列表、字典、集合、元组、迭代器、生成器、range等
: - 固定写法
循环体 - 和for保持一个缩进的一条或者多条语句;循环体就是要重复执行的代码

执行过程:
让变量去序列中取值,一个一个的取,取完为止,取一个就执行一次循环
for循环的循环次数和序列中元素的个数有关

for h in 'hello':
    print('循环')

4、range函数 - 创建等差数列(整数)

1)range(N) - 产生[0,N)的等差数列,差是1
2)range(M, N) - 产生[M, N)的等差数列,差是1
3)range(M,N,step) - 产生[M, N)的等差数列,差是step

for h in range(5):
    print('23')

for h in range(5, 7):
    print('23')

for h in range(3, 9, 2):
    print('3')

# ;练习:打印1000以内的偶数
for h in range(0, 1000, 2):
    print(h)

5、for循环的两个基本应用场景

1、积累

练习1:求1+2+3+…+100的和

第一步:定义保存的结果,变量的初始值一般是0(求和)或者1(求乘积)

result = 0

第二步:用循环一步一步的获取累积数据

for x in range(1, 101):

第三步:在循环体中将获取到的每一个数据合并到结果对应的变量中

result += x

print(result)

练习2:求10的阶乘:123*…*10

night = 1
for n in range(1, 11):
night *= n
print(night)

练习3:求100到200中所有能被3整除的偶数的和

result = 0
for h in range(100, 201):
if h % 3 == 0 and h % 2 == 0:
result += h
print(result)

可以进行优化

优化1

result = 0
for h in range(100, 201, 2):
if h % 3 == 0:
result += h
print(result)

优化2

result = 0
for h in range(102, 201, 6):
result += h
print(result)

2、统计个数

练习1:统计1000以内奇数的个数

第一步:定义变量保存最后的个数,

result = 0

第二步:使用循环语句统计对象

for x in range(1000):

第三步:遇到和条件相符合的数据就加1

​ if x % 2 == 1:
​ result += 1
print(result)

练习2:统计1000以内能3整除但是不能被7整除的数的个数

result = 0
for x in range(1000):
if (x % 3 == 0) and (x % 7 != 0):
result += 1
print(result)

练习作业

题目

基础题
  1. 根据输入的成绩的范围打印及格 或者不及格
  2. 根据输入的年纪范围打印成年或者未成年,如果年龄不在正常范围内(0~150)打印这不是人!
  3. 输入两个整数a和b,若a-b的结果为奇数,则输出该结果,否则输出提示信息a-b的结果不是奇数
  4. 使用for循环输出 0~100内所有3的倍数。
  5. 使用for循环输出100~200内个位数或者十位数能被3整除的数。
  6. 使用for循环统计100~200中十位数是5的数的个数
  7. 使用for循环打印50~150中所有能被3整除但是不能被5整除的数
  8. 使用for循环计算50~150中所有能被3整除但是不能被5整除的数的和
  9. 统计100以内个位数是2并且能够被3整除的数的个数。
进阶题
  1. 输入任意一个正整数,求他是几位数?

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

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

  3. 判断指定的数是否是素数(素数就是质数,即除了1和它本身以外不能被其他的数整除的数)

  4. 输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。

  5. 这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?(可以直接使用穷举法)

基础题

1、根据输入的成绩的范围打印`及格` 或者`不及格`
grade = float(input('请输入成绩:'))
if grade < 60:
    print('不及格')
else:
    print('及格')
2、根据输入的年纪范围打印`成年`或者`未成年`,如果年龄不在正常范围内(0~150)打印`这不是人!`
age = int(input('请输入年龄:'))
if 0 < age < 18:
    print('未成年')
elif 18 <= age < 150:
    print('成年')
else:
    print('这不是人')
3、输入两个整数a和b,若a-b的结果为奇数,则输出该结果,否则输出提示信息`a-b的结果不是奇数`
a = int(input('请输入a:'))
b = int(input('请输入b:'))
x = a - b
if x % 2 != 0:
    print(x)
else:
    print('a-b的结果不是奇数')
4.使用for循环输出 0~100内所有3的倍数。
#for x in range(3, 100):
    if x % 3 == 0:
        print(x)
5、使用for循环输出100~200内个位数或者数能被3整除的数。
for x in range(100, 201):
    if (x % 10) % 3 == 0 or (x // 10 % 10) % 3 == 0:
        print(x)

优化:
for x in range(100, 201):
    num_10 = x // 10 % 10
    num_1 = x % 10
    if (num_10 % 3 == 0 and num_10 != 0) or (num_1 % 3 == 0 and num_1 != 0):
        print(x)
6、使用for循环统计100~200中十位数是5的数的个数
for x in range(100, 200):
    if x // 10 % 10 == 5:
        print(x)
        
优化:
for x in range(150, 160):
    print(x)
 7、使用for循环打印50~150中所有能被3整除但是不能被5整除的数
for x in range(51,151, 3):
    if x % 5 != 0:
        print(x)
8、使用for循环计算50~150中所有能被3整除但是不能被5整除的数的和
num = 0
for x in range(51, 148, 3):
    if x % 5 != 0:
        num += x
print(num)
9、统计100以内个位数是2并且能够被3整除的数的个数。
num = 0
for x in range(100):
    if x % 10 == 2 and x % 3 == 0:
        num += 1
print(num)

进阶

# 1、输入任意一个正整数,求他是几位数?
# 注意: 这儿不能使用字符串,只能用循环
number =2345
r = 0
for x in range(100000):
    if number > 1:
        r += 1
        number /= 10
    else:
        break
print(r)
# 2、打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字⽴方和等于该数本身。
# 例如:153是⼀个⽔仙花数,因为  `1³ + 5³ + 3³ ` 等于 153。
for abc in range(100, 1000):
    a = abc // 100
    b = abc // 10 % 10
    c = abc % 10
    if a ** 3 + b ** 3 + c ** 3 == abc:
        print(abc)
# 3、判断指定的数是否是素数(素数就是质数,即除了1和它本身以外不能被其他的数整除的数)
number = int(input(""))
abc = '是质数'
for x in range(2, number):
    if number % x == 0:
        abc = '不是一个质素'
print(abc)
# 4、输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
for i in range(1, 10):
    for j in range(1, i+1):
        print(i, '*', j, '=', i * j, end='  ')
    print('')
5、这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?
# (可以直接使用穷举法)
for x in range(1, 34):
    for y in range(1, 51):
        for z in range(100):
            if x + y + z == 100 and x * 3 + y * 2 + z / 2 == 100:
                print(x, y, z)
举报

相关推荐

day4-循环关键字和位运算

day4 分支和循环

day3-分支和循环

DAY03 分支和循环

day4分支与循环总结和作业

分支和循环----循环

day3分支和循环

day3分支和循环作业

0 条评论