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多分支结构
根据不同的条件做不一样的事情
-
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被重新赋值,这个序列也不会改变
-
range(N) - 产生[0, N)步长为1的数字序列 [m,n)左闭右开,表示大于等于m,小于n的区间
range(3) -> 0, 1, 2
range(5) -> 0, 1, 2, 3, 4 -
range(M, N) - 产生[M, N)步长为1的数字序列
range(1, 5)-> 1, 2, 3, 4
range(10, 21) -> 10, 11, 12,…, 20 -
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结构
-
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,'是素数!')