3.4循环与分支

循环与分支结构

1. if分支结构

if分支结构的语法:要求;
1.不同的条件下执行不同的操作程序,根据不同的条件做不一样的事情。
但是要求条件之间存在:其中一个条件成立其他条件就不成立。

if 条件语句1:
    代码段1
elif 条件语句2:
    代码段2
elif 条件语句3:
    代码段3
...
else:
    代码段n
score = 56
if 90 <= score <= 100:
    print('A')
elif 80 <= score <= 89:
    print('B')
elif 60 <= score <= 79:
    print('c')
else:
    print('D')    # D
print('------------')
if score >= 90:
    print('A')
elif score >= 80:
    print('B')
elif score >= 60:
    print('C')
else:
    print('D')    # D

不同场景做不同的事,条件之间无关联。

# 进校标准:分数高于500分进普通班级,等级是A级进特长班
grade = 'A'
score = 478
if score > 500:
    print('进火箭班')
else:
    print('进普通班级')    # 进普通班级
if grade == 'A':
    print('进特长班')
else:
    print('不能进特长班')   # 进特长班
# 练习:定义两个变量保存一个人的身高和体重,编程实现判断这个人的身材是否正常
# 公式:体重(kg)/(身高m的平方值)是否在18.5~24.9之间,正常、偏瘦、偏胖
kg = 75
m = 185
if kg / (m**2) < 18.5:
    print('偏瘦')
elif kg / (m**2) > 24.9:
    print('偏胖')
else:
    print('正常')            # 偏瘦

if 嵌套

在if的条件语句中在嵌入新的if条件语句。

# 练习:判断一个数是否是偶数,如果是打印偶数,否则打印奇数,如果是4的倍数打印4的倍数
num = 80
if num % 2 == 0:
    print('偶数', end=' ')
    if num % 4 == 0:
        print('4的倍数')
else:
    print('奇数')         # 偶数 4的倍数

2.循环结构

循环结构:让代码只写一次但可以执行很多次,重复执行。

2.1 for循环

语法:
for 变量 in 序列:
    循环体
  1. 说明:for、in、都是关键字-------固定写法

  2. 变量 - 变量名
    (字母、数字、下划线、数字不开头)

  3. 序列 - 容器型数据类型的数据,
    例如:字符串、列表、字典、元组、集合、迭代器、生成器、range等

  4. 循环体 - 和for保持一个缩进的一条或者多条语句,需要重复执行的代码
    执行过程:
    让变量去序列中取值,一个一个的取,取完为止,每取一个值就执行一次循环
    序列中元素的个数决定了循环的次数。

range函数
作用:产生指定范围的数值序列
range(N) - 产生[0,N)的数字序列,N必须大于零(每次数值增加一)
range(m,n) – 产生[m,n)的数字序列,n必须大于m(每次数字增加1)
range(m,n,step) — 每一次数值增加的值,每次数字增加step

for _ in range(2):
    print('靓仔!')
for x in 'asdio':
    print('+++',x)
for x in range(10):
    print('x:',x)
for x in range(2):
    print('靓仔!')
    print('靓女!')
print('================================')
for x in range(-10,10):
    print('x2:',x)
print('========================')
for x in range(1,10,2):
    print('x3:',x)
    print('==================')
for x in range(100,80,-2):
    print('x4:',x)
# 统计100以内能被3整除的数的个数
print('===========================')
count = 0
for x in range(0,100,3):
    print('x5:',x)
    count += 1   # count = count + 1
print(count)
print('------------------------')
# 方法二
count = 0
for x in range(100):
    if x % 3 == 0:
        count +=1
print(count)
# 练习二1~100中所有能被3整除的数但是不能被5整除的数的和
s = 0    #保存最后的和
for num in range(100):
    if num % 3 == 0 and num % 5 != 0:
        print(num)
        s += num
print(s)

print('=======')
s = 0
for x in range(3,101,3):
    if x % 5 != 0:
        print(x)
        s += x
print(s)

2.2 while循环

语法:
while 条件语句:
循环体
说明:
)1. while - 关键字;固定写法
)2.条件语句 - 任何有结果的表达式
)3.循环体 - 和while保持一个缩进的一条或者多条语句:循环体就是就是需要循环的代码串
执行过程:
先判断条件语句是否为true,执行循环体
执行完在判断条件语句是否为True。。。。。
当判断条件语句的值为False时,整个循环结束。

# 打印1到100
num = 1
while num < 101:
    print(num)
    num += 1
print(num)

num = 0
while num < 10:
    print('hello')
    num += 1

2.3 for循环和while循环的选择

凡是当循环次数不确定的情况下使用while循环,否则使用for循环。

password = '123456'
a = input('请输入密码:')
while a != password:
    print('密码错误,请再输入一次')
    a = input('请输入密码:',)       # 循环后要将新输入的值要覆盖掉以前的值
else:
    print('密码正确,登录成功')
# # 练习:写一个猜数字游戏
# # 程序开始的时候随机产生一个100 以内的数,用户通过输入的方式来猜数字,如果猜对了游戏结束,猜错了给出提示信息
from random import randint
num = randint(0,99)   # 产生0到99的随机整数
print(num)
a = int(input('请在1到100中随机输入一个数:'))
while a != num:
    if a >= num:
        print('输入的大了')
    else:
        print('输入的小了')
    a = int(input('请再输入一次:'))      # 循环后要将新输入的值要覆盖掉以前的值
else:
    print('输入正确')
# 方法二
i_num = int(input('请输入数字0~99:'))
while i_num != num:
    if i_num > num:
        print('大了,在小点:')
    else:
        print('小了,再大一点:')
    i_num = int(input('请输入数字0~99'))
else:
    print('输入正确')

2.4循环关键字

)1. continue和break

continue:结束一次循环(当执行循环体的时候遇到continue时,当次循环结束,直接进入下次循环的判断。
break:结束整个循环。

for x in range(5):
    if x % 2 != 0:   # 如果直接在2后面加冒号,默认是不等于
        continue
    print(x)    # 0 2 4
'''
第一次循环: x=0,x % 2 = 0,0 = 0,if false,不执行continue,输出0
第二次循环:x=1,x % 2 = 1,1不等于0,if true ,执行continue,不输出
第三次循环: x=2,x % 2 = 0,0等于0,if false,不执行continue,输出2
第四次循环;x=3,x % 2 = 1,1不等于0,if true,执行continue,不输出
第五次循环:x=4, x % 2 = 0,0等于0,if true,不执行continue,输出4
'''
# pw = '123456'
# while True:
#     i_pw = input('请输入密码;')
#     if i_pw == pw:
#         print('输入正确!')
#         break
# 使用while循环的套路
'''
while True:
    每次循环要做的事情
    if  循环结束的条件:
        break
'''
# 2.else
'''
python中完整的for循环和while循环后面都有else结构,
else结构的存在不影响原循环的执行。
for 变量 in 序列:
    循环体
else:
    代码段
while 条件语句:
    循环体
else:
    代码段
当循环是因为遇到break而结束的,那么循环后面的else里面的代码不会执行
如果不是因为遇到break而结束的,那么else里面的代码会执行。
'''
for x in range(5):
    if x % 2 != 0:
        print(x)

基础题

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

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

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

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

    for x in range(0,100,3):
        print(x)
    print('--------------')
    num = 0
    while num < 100:
        print(num)
        num += 3
    
  5. 使用for和while循环输出100~200内个位数或者十位数能被3整除的数。

    # for循环
    for x in range(100,200):
        if ((x % 100) % 3) == 0:
            print(x)
        if((x // 10) % 10) % 3 == 0:
            print(x)
    # while循环
    num = 99
    while num < 200:
        num += 1
        if (num % 10) % 3 == 0 or(num // 10) % 10 % 3 ==0:
            print(num)
        if num >= 199:
            break
    

进阶题

  1. 使用循环计算1*2*3*4*...*10的结果。

    i = 1
    s = 1
    while i < 11 :
        s *= i
        i += 1
    print(s)
    s = 1
    for n in range(1,11):
        s *= n
    print(s)
    
  2. 统计100以内个位数是2并且能够被3整除的数的个数。

    c = 1
    for num in range(100):
        if num % 3 == 0 and num % 10 == 2:
            c += 1
    print(c)
    
            
    
  3. 输入任意一个正整数,求他是几位数?

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

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

    print('-------------')
    for a in range(100,1000):
        if (a // 100)**3+((a % 100) // 10)**3+(a % 10)**3 == a:
            print(a)
    

挑战题

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

    e = int(input('请输入一个数:'))
    for d in range(2,e):
        if e % d == 0:
            print()
    print('该数是质数')
    
  2. 求斐波那契数列列中第n个数的值:1,1,2,3,5,8,13,21,34… (这儿的n可以是任意正整数,可以通过输入来确定)

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

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值