选择结构
对应教学日历:讲次 2-3
一、条件的表示
关系表达式
用关系运算符连接:< <= > >= == !=
结果:真 → True,假 → False
逻辑表达式
用逻辑运算符连接:and(与)、or(或)、not(非)
age = 25
age >= 18 and age <= 60 # True
age < 18 or age > 60 # False
not age < 18 # TruePython中的”真假”概念
- 假:
0,0.0,""(空字符串),[](空列表),{}(空字典),None,False - 真:一切非零值(包括负数)
if 3: # 永远为真
if -1: # 永远为真
if 0: # 永远为假
if "hello": # 永远为真(非空字符串)
if "": # 永远为假(空字符串)二、if 语句
单分支
if 表达式:
语句组双分支
if 表达式:
语句组一
else:
语句组二多分支(elif)
if 表达式1:
语句组一
elif 表达式2:
语句组二
else:
语句组三注意:Python用
elif而不是else if!
if 语句的嵌套
if 表达式1:
if 表达式2: # 内嵌 if
语句1
else:
语句2
else:
语句3注意:Python用缩进(而非花括号)表示代码块,不存在”悬空else”问题。
成绩评级示例
score = float(input("请输入成绩:"))
if score >= 85:
print("成绩优")
elif score >= 70:
print("成绩良")
elif score >= 60:
print("已及格")
else:
print("不及格")三、random库
import random
random.randint(a, b) # 生成[a, b]之间的随机整数幸运数字7小游戏
import random
lucky = random.randint(600, 800)
print("你抽中的的是%d" % lucky)
a = lucky // 100
b = lucky % 100 // 10
c = lucky % 10
num = (a == 7) + (b == 7) + (c == 7) # True=1, 统计7的个数
if num == 3:
print("恭喜你!小锦鲤!")
elif num == 2:
print("哇,幸运小星星就是你!")
elif num == 1:
print("手气不错哟!")
else:
print("继续努力!")要点:
(a == 7) + (b == 7) + (c == 7)利用布尔值为1/0的特性统计次数//整除取百位、十位,%取余取个位
三数排序
import random
first = random.randint(1, 10)
second = random.randint(1, 10)
third = random.randint(1, 10)
print("排序前为:%d,%d,%d" % (first, second, third))
if first > second:
first, second = second, first # Python交换变量
if first > third:
first, third = third, first
if second > third:
second, third = third, second
print("排序后为:%d,%d,%d" % (first, second, third))作业示例
密码验证(循环+选择)
while True:
password = input("请输入密码:")
if len(password) != 6:
print("长度为6位,请重试!")
continue
if password == "123456":
print("恭喜您,密码正确!")
break
else:
print("密码有误,请重试!")要点:
while True创建死循环,用break退出continue跳过本次循环,进入下一次判断
完全数判断
total = 0
num = int(input("请输入一个整数:"))
for i in range(1, num // 2 + 1):
if num % i == 0:
total = total + i
if total == num:
print("{}是一个完全数".format(num))
elif total > num:
print("{}是一个丰沛数".format(num))
else:
print("{}是一个不足数".format(num))要点:
range(1, num // 2 + 1)只需检查到一半即可
素数判断(双重循环)
for i in range(2, 101):
k = 0
for j in range(2, i):
if i % j == 0:
k = 1
break
if k == 0:
print(i, end=" ")要点:
break终止内层循环k作为标志位:0表示素数,1表示非素数
作业重点
- Python用
elif而不是else if - Python用缩进表示代码块,不需要花括号
True等价于1,False等价于0,可用于计数random.randint(a, b)生成[a, b]之间的随机整数- Python支持交换变量:
a, b = b, a while True+break实现循环直到满足条件continue跳过本次循环,break终止整个循环