day4分支和循环

if

单独使用多个if

条件之间存在:其中一个条件成立,其他的条件也可能成立,

即 : 条件间互不影响

"""
if 条件1:
    代码段1
if 条件2:
    代码段2
if 条件3:
    代码段3
...
"""
if score >= 90:
    print('优秀')
if 75 <= score < 90:
    print('良好')
if 60 <= score < 75:
    print('中等')
if score < 60:
    print('不及格')

if多分支结构

根据不同的条件做不一样的事情

  1. if-elif-else

    if 和 elif 后面条件不能有重合,后面的条件是在前面条件不成立的情况下执行的

    else可写可不写

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

"""

根据分数打印:优秀(>=90)、良好([75, 90))、中等([60, 75))、不及格(<60)

score = 99
if score >= 90:
    print('优秀')
elif score >= 75:
    print('良好')
elif score >= 60:
    print('中等')
else:
    print('不及格')
height = 1.7
weight = 55
value = weight / height ** 2
if value < 18.5:
    print('偏瘦')
elif value > 24.9:
    print('偏胖')
else:
    print('正常')

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

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

练习2:定义两个变量保存⼀个⼈的身⾼和体重,编程实现判断这个⼈的身材是否正常!

公式: 体重(kg) / (身⾼(m)的平⽅值 ) 在18.5 ~ 24.9之间属于正常。打印:正常、偏瘦、偏胖

weight = 44
height = 1.55
value = weight / height ** 2
if value < 18.5:
    print('偏瘦')
elif value > 24.9:
    print('偏胖')
else:
    print('正常')

练习3: 根据数字的值打印奇数、偶数和4的倍数

2 -> 偶数
5 -> 奇数
16 -> 偶数、4的倍数

num = 21
if num % 2:
    print('奇数')
else:
    if num % 4 == 0:
        print('4的倍数', end=' ')
    print('偶数')

嵌套

num = 16
if num % 2 == 0:
    print('偶数', end='、')
    if num % 4 == 0:
        print('4的倍数')
else:
    print('奇数')

三目运算

1)C、java、js中三目的运算符: ?:
表达式1?值1:值2 - 先判断表达式1的结果是否为真,如果是,整个运算表达式的结果是值1,否则是值2
int a = 100;
int x;
x = a > 100 ? 10:20;

2)Python中的三目运算符

根据条件在两个数据中选择一个数据作为结果(2选1)

值1 if 表达式1 else 值2 - 先判断表达式1的结果是否为True,如果是,整个运算表达式的结果是值1,否则是值2

a = 100
x = 10 if a > 100 else 20
print(x)

练习:用变量result, 根据年龄值获取 ‘成年’ 或者 ‘未成年’

age = 14
result = '成年' if age >= 18 else '未成年'
print(result)

循环结构

让代码重复执行

for _ in range(3):
    print('hello world!')

for循环

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

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

3)执行过程
变量只能装1个值,序列可以存放多个值

变量每次从序列中取一个数,执行循环体中代码,取完为止

for循环次数由序列中的元素的个数决定

for x in 'abc':
    print(x, '++++')
print('hello!')
for x in 'noNe':
    print(x)

range函数

产生一个等差数列的数字序列的函数
这里注意:for x in range(x)是直接产生一个确定的序列

即使后面x被重新赋值,这个序列也不会改变

  1. range(N) - 产生[0, N)步长为1的数字序列 [m,n)左闭右开,表示大于等于m,小于n的区间
    range(3) -> 0, 1, 2
    range(5) -> 0, 1, 2, 3, 4

  2. range(M, N) - 产生[M, N)步长为1的数字序列
    range(1, 5)-> 1, 2, 3, 4
    range(10, 21) -> 10, 11, 12,…, 20

  3. range(M, N, step) - 产生[M, N)步长为step指定值的数字序列,
    range(1, 5, 2) -> 1, 3
    range(10, 20, 3) -> 10, 13, 16, 19
    range(20, 14, -1) -> 20, 19, 18, 17, 16, 15

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

for x in range(15, 20):
    print('x:', x)

print('---------------------------')
for x in range(0, 10, 2):
    print('x:', x)

print('---------------------------')
for x in range(20, 14, -1):
    print('x:', x)
for age in range(2):
    print(age, '成年' if age >= 18 else '未成年')
for age in range(16, 20):
    print(age, '成年' if age >= 18 else '未成年')
for age in range(16, 23, 8):
    print(age, '成年' if age >= 18 else '未成年')

练习:控制for循环打印100次 ‘Python!’

for x in range(100):
    print('Python!')

练习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整除的数的和)

sum1 = 0
for x in range(3, 100, 3):
    sum1 += x
print(sum1)

练习:123*…*10

sum1 = 1
for x in range(1, 11):
    sum1 *= x
print(sum1)

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

count = 0   # 保存最后的个数
for x in range(1, 1000):
    if x % 3 == 0:
        count += 1
print(count)
count = 0
for x in range(3, 1000, 3):
    count += 1
print(count)

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

方法一:

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

方法二:

count = 0	# 直接使用符合条件1的数,减少运算次数
for x in range(3, 1000, 3):
    if x % 7 != 0:
        count += 1
print(count)

while循环

1)语法:
while 条件语句:
循环体

2)说明:
while - 关键字,固定写法
条件语句 - 任何有结果的表达式(不能是赋值语法)
: - 固定写法
循环体 - 结构上和while保持一个缩进的一条或者多条语句;逻辑上就是需要重复执行的代码

3)执行过程
先判断条件语句是否为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 <= 17:
    print(x)
    x += 3

for循环和while的选择

循环次数确定的时候就使用for循环,循环次数不确定就使用while循环。

练习(循环次数不确定):提示用户输入密码,直到密码输入正确为止

pw = '123456'   # 原密码
get_pw = None    # 保存输入得到的密码,开始没密码,None
# 当输入的密码和原密码不相等的时候就提示输入
while get_pw != pw:
    get_pw = input('请输入密码:')
print('登录成功!')
"""
请输入密码: 123
请输入密码: 321
...
请输入密码: 123456
登录成功!
"""

continue和break

continue和break只能在循环体中使用

continue

当执行循环体的时候遇到了continue,跳过后面代码段,直接进入下一次循环

for x in range(3):
    print('======')
    continue
    print('++++++')
    print('------')
for x in range(10):
    if x % 2:
        continue
    print(x)
for x in range(10):
    if x % 2 == 0:
        print(x)

break

终止整个循环

执行循环体的时候如果遇到了break,那么整个循环直接结束

for x in range(3):
    print('======')
    break
    print('++++++')
    print('------')
for x in range(1, 10):
    if x % 3 == 0:
        break
    print(x)
while循环和break的配合

初学者的while循环
while True:
需要重复执行的代码
if 循环结束的条件:
break

pw = '123456'
while True:
    get_pw = input('请输入密码:')
    if get_pw == pw:
        break

循环的else结构

  1. Python完整的循环结构

    for 变量 in 序列:
    	循环体
    else:
    	代码段
    
    while 条件语句:
    	循环体
    else:
    	代码段
    

注意:

​ else的存在不影响前面循环的执行;
​ 当循环自然结束,else后面的代码会执行;

如果循环是因为遇到break而结束,else后面的代码不会执行

for x in range(3):
    print('hello world!')
    if x == 1:
        break
else:
    print('else!')

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

num = 4
for x in range(2, int(num**0.5) + 1):
    if num % x == 0:
        print(num, '不是素数!')
        break
else:
    print(num, '是素数!')
    
x = 2
num = 8
while x <int(num**0.5)+1:
    if num % x == 0:
        print(num, '不是素数!')
        break
    x += 1
else:
    print(num,'是素数!')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值