Day4 - 分支和循环

一、if多分支结构 ————根据不同的条件做不一样的事情
1. if - elif - else —— 不同条件之间存在:其中一个条件成立的时候,别的条件一定不会成立
if 条件1:
    代码段1
elif 条件2:
    代码段2
elif 条件3:
    代码段3
...
else:
    代码段N   
    
执行特点:如果前面的条件成立,那么后面的条件不会再判断(后面的条件的判断是在前面的条件不成立的情况下进行的)
'''
# 根据分数打印:优秀(>=90)、良好([75, 90))、中等([60, 75))、不及格(<60)
score = 75
if score >= 90:
    print('优秀')
elif score >= 75:
    print('良好')
elif score >= 60:
    print('中等')
else:
    print('不及格')
2. 单独使用多个if —— 其中一个条件成立,其他的条件也可能成立
'''
if 条件1:
    代码段1
if 条件2:
    代码段2
if 条件3:
    代码段3
...
'''
# 练习1:定义两个变量保存⼀个⼈的身⾼和体重,编程实现判断这个⼈的身材是否正常!
# 公式: 体重(kg) / (身⾼(m)的平⽅值 ) 在18.5 ~ 24.9之间属于正常。打印:正常、偏瘦、偏胖
weight = 58
height = 1.72
if weight / height ** 2 < 18.5:
    print('偏瘦')
elif weight / height ** 2 > 24.9:
    print('偏胖')
else:
    print('正常')

# 练习2:根据输入的年纪范围打印成年或者未成年,如果年龄不在正常范围内(0~150)打印这不是人!
age = 27
if 0 < age < 18:
    print('未成年')
elif 18 <= age < 150:
    print('成年')
else:
    print('这不是人')

# 练习3: 根据数字的值打印奇数、偶数和4的倍数
a = 4
if a % 2 == 0:
    if a % 4 == 0:
        print('a即使偶数也是4的倍数')
    else:
        print('a是偶数')
else:
    print('a是奇数')
二、三目运算符
# not 数据 ———— 单目运算符
# +、—、*、== ———— 双目运算符
'''
1)C、Java、js中的三目运算符:?:
表达式1?值1:值2 —— 先判断表达式1的结果是否为真,如果是,整个运算表达式的值为1

2)Python中的三目运算符
值1 if 表达式1 else 值2 —— 先判断表达式1的结果是否为True,如果是,整个运算表达式的结果是值1,否则是值2
'''
a = 100
x = 10 if a > 100 else 20
print(x)
三、for循环
1. 循环结构 —— 让代码重复执行
for _ in range(3):
    print('hello world!')
2. for循环
'''
1)语法:
for 变量 in 序列:
    循环体
    
2)说明:
for、in -- 关键字:固定写法
变量 -- 变量名(可以是已经定义的变量的变量名,也可以是没有定义过的变量的变量名)
序列 -- 容器型数据类型的数据就是序列,例如:字符串、列表、字典、元组、集合、迭代器、生成器、range等
: -- 固定写法
循环体 -- 结构上是和for保持一个缩进的一条或者多条语句(至少1条);逻辑上就是需要重复执行的代码。

3)执行过程
让变量去序列中取值,一个一个的取,取完为止,每取一个值就执行一次循环体
for循环次数由序列中的元素的个数决定
'''
for x in 'lql':
    print(x)

# 'abc'
# [10, 20, 100]
# (10, 20)
# {'name':'小明', 'age':'18'}

for lql in 'successful':
    print('年薪百万!')
    print('做大做强,再创辉煌!')

for yt in 'one':
    print('加油!')
3. range函数 —— 产生一个等差数列的数字序列的函数
"""
1)range(N) -- 产生[0,N)步长为1的数字序列 
               range(5) -> 0, 1, 2, 3, 4;
2)range(M, N) -- 产生[M, N)步长为1的数字序列
                  range(10, 15) -> 10, 11, 12, 13, 14;
3)range(M, N, step) -- 产生[M, N)步长为step指定值的数字序列
                        range(1, 5, 2) -> 1, 3;
                        range(10, 20, 4) -> 10, 14, 18;
                        range(30, 10, -5) -> 30, 25, 20, 15;

"""
for x in range(5):
    print('x:', x)
for x in range(10, 15):
    print('x:', x)
for x in range(5, 10, 2):
    print('x:', x)
for x in range(20, 16, -1):
    print('x:', x)
for x in range(-100, 1, 30):
    print('x:', x)
# 练习1:利用循环计算1+2+3+...+100的和 ———— 求和套路
sum1 = 0     # 保存最后的和
for x in range(1, 101):
    sum1 += x       # sum1 = sum1 + x
print(sum1)
"""
sum1 = 0
x = 1:  sum1 += x  -> sum1 += 1  -> sum1 = 1
x = 2:  sum1 += x  -> sum1 += 2  -> sum1 = 3
x = 3:  sum1 += x  -> sum1 += 3  -> sum1 = 6
...
"""

# 练习:求3+6+9+...+99的和 (求100以内所有能被3整除的数的和)
sum2 = 0
for x in range(3, 100, 3):
    sum2 += x
print(sum2)

# 练习:1*2*3*..*10
sum3 = 1
for x in range(1, 11):
    sum3 *= x
print(sum3)

# 练习2:统计1000以内能被3整除的数的个数
count = 0       # 保存最后的个数
for x in range(0, 1000):
    if x % 3 == 0:
        count += 1
print(count)

count = 0
for x in range(0, 1000, 3):
    count += 1
print(count)

# 练习2:统计1000以内能被3整除但是不能被7整除的数的个数
# 方法一
count = 0
for x in range(0, 1000, 3):
    if x % 7 != 0:
        count += 1
print(count)
# 方法二
count = 0
for x in range(1, 1000):
    if x % 3 == 0 and x % 7 != 0:
        count += 1
print(count)
四、while循环
1. while循环
"""
语法:
while 条件语句:
    循环体
    
说明:
while -- 关键字,固定写法
条件语句 -- 任何有结果的表达式(不能是赋值语句)
: -- 固定写法
循环体 -- 结构上和while保持一个缩进的一条或者多条语句;逻辑上就是需要重复执行的代码
执行过程:
先判断条件语句是否为True,如果为True就执行循环体,执行完循环体再判断条件语句是否为True,为True又执行循环体,
以此类推,如果条件语句为False,循环结束!
"""
# 练习:打印10次 'hello!'
x = 0
while x < 10:
    print('hello!')
    x += 1
"""
x = 0
x < 10 -> 0 < 10 -> True: print('hello!'); x += 1 -> x = 1
x < 10 -> 1 < 10 -> True: print('hello!'); x += 1 -> x = 2
...
x < 10 -> 9 < 10 -> True: print('hello!'); x += 1 -> x = 10
x < 10 -> 10 < 10 -> False: 循环结束
"""
# 练习1:用while循环打印:2, 5, 8, 11, 14, 17
x = 2
while x < 18:
    print(x)
    x += 3
2. for循环和while循环的选择
"""
循环次数确定的时候就使用for循环,循环次数不确定就使用while循环
"""
# 练习(循环次数不确定):提示用户输入密码,直到密码输入正确为止
password = '123456'      # 原密码
get_password = None      # 输入密码赋初值(保存输入得到的密码)
while get_password != password:              # 判断输入密码是否正确
    get_password = input('请输入密码:')      # 输入密码不正确,提示再次输入密码
"""
请输入密码: 123
请输入密码: 321
...
请输入密码: 123456
"""
五、continue和break
1. continue —— 结束一次循环
"""
当执行循环体的时候遇到了continue,那么这一次循环结束,直接进入下一次循环
"""
for x in range(10):
    if x % 2:
        continue
    print(x)
2. break —— 结束整个循环
"""
执行循环体的时候如果遇到了break,那么整个循环直接结束
"""
print('===================')
for x in range(1, 10):
    if x % 3 == 0:
        break
    print(x)
3. while循环和break的配合
"""
初学者的while循环
while True:
    需要重复执行的代码
    if 循环结束的条件:
        break
"""
password = '123456'
while True:
    get_password = input('请输入密码:')
    if get_password == password:
        break
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值