在这里插入图片描述

程序逻辑——让计算机学会判断

学习目标

  1. 运算符
  2. 条件语句
  3. 运算符和条件语句综合应用案例
  4. 程序错误分类及如何DEBUG调试

运算符

运算符和操作对象

运算符:+、-、*、/、//、%等特殊符号集合;操作对象:运算符连接的数据。
Python支持8类运算符:

  1. 算术运算符
  2. 比较(关系)运算符
  3. 赋值运算符
  4. 逻辑运算符
  5. 位运算符
  6. 成员运算符
  7. 身份运算符
  8. 运算符优先级

1.1 算术运算符

设定变量 a=10,b=5

运算符描述实例
+相加a + b → 15
-相减/取负数a - b → 5
*相乘/字符串重复a * b → 50
/除法(浮点结果)a / b → 2.0
%取模(求余数)b % a → 0
**幂运算a**b → 10^5 = 100000
//地板除(取商整数部分)9//2 →4;9.0//2.0→4.0

幂运算符两种用法

方法1:** 内置运算符
# 2的3次方
result = 2**3
print(result) # 输出8

# 小数、负数幂
print(4**0.5)  # 2.0 平方根
print(2**-2)   # 0.25 负次方
方法2:pow() 函数
print(pow(2, 3)) # 输出8

练习:计算圆面积

需求:输入半径,输出面积并保留2位小数

1.2 比较运算符

设定变量 a=10,b=20

运算符描述实例
==等于a == b → False
!=不等于a != b → True
>大于a > b → False
<小于a < b → True
>=大于等于a >= b → False
<=小于等于a <= b → True

1.3 逻辑运算符

设定变量 a=10,b=20

运算符表达式规则描述实例
andx and yx为False则返回x,否则返回ya and b →20
orx or yx非0返回x,否则返回ya or b →10
notnot x取反,True变False,False变Truenot(a and b) →False

1.4 赋值运算符

基础:c = a,衍生复合赋值

运算符等价写法
c -= ac = c - a
c *= ac = c * a
c /= ac = c / a
c %= ac = c % a
c **= ac = c ** a
c //= ac = c // a

1.5 成员运算符

用于判断值是否存在于字符串、列表、元组等序列

运算符描述
in序列包含值返回True,否则False
not in序列不包含值返回True,否则False

在这里插入图片描述

配套补充:列表

  • 有序可变序列,格式 [],逗号分隔元素
  • 列表元素可混合整数、浮点数、字符串、嵌套列表等
# 列表示例
[10, 20, 30, 40]
['spam', 2.0, 5, [10, 20]]

创建与访问列表

list1 = ['Google', 'Baidu', 1997, 2000]
list2 = [1, 2, 3, 4, 5, 6, 7]
# 下标访问
print(list1[0])
# 切片截取
print(list2[1:5])

in 运算符实战案例

# 字符串判断
text = "Hello, world!"
print("world" in text)    # True
print("Python" not in text) # True
print("hello" in text)   # False(区分大小写)

# 列表/元组判断
fruits = ["apple","banana","cherry"]
numbers = (10,20,30)
print("banana" in fruits) # True
print(15 not in numbers)  # True

课堂练习

现有用户列表 ["lili","lucy","tom"],输入姓名,查询用户是否存在

1.6 身份运算符

比较两个对象内存地址(id()

运算符描述
isid(x) == id(y) 返回True
is notid(x) != id(y) 返回True

在这里插入图片描述

1.7 运算符优先级(从高到低)

  1. ** 指数
  2. ~ + - 按位翻转、一元正负号
  3. * / % // 乘除取模地板除
  4. + - 加减
  5. >> << 移位
  6. & 位与
  7. ^ | 位异或、位或
  8. <= < > >= 比较运算符
  9. == != 相等判断
  10. = %= /= //= -= += *= **= 赋值
  11. is is not 身份运算符
  12. in not in 成员运算符
  13. not or and 逻辑运算符
    在这里插入图片描述

条件语句

条件语句改变程序执行分支,根据判断选择执行代码块

2.1 if 单分支

语法

if 表达式:
    语句序列

逻辑

条件为真,执行内部代码;条件为假,直接跳过。

2.2 if-else 双分支

语法

if 表达式:
    语句序列1
else:
    语句序列2

逻辑

条件成立执行1,不成立执行2

age = 18
if age >= 18:
    print("成年人")
else:
    print("未成年人")

2.3 if…elif…else 多分支

多条件依次判断,匹配第一个成立分支

score = 85
if score >= 90:
    grade = "A"
elif score >= 80:
    grade = "B"
elif score >= 70:
    grade = "C"
else:
    grade = "D"
print(f"成绩等级:{grade}")

2.4 if 嵌套

if内部再写if语句,多层条件判断

语法

if 表达式1:
    if 表达式2:
        语句1
    elif 表达式3:
        语句2
    else:
        语句3
elif 表达式n:
    ...
else:
    ...

在这里插入图片描述

综合案例:猜拳游戏

规则:石头=1,剪刀=2,布=3;电脑随机出拳,判断胜负

computer = random.randint(1, 3)
print(computer)
# 2. 用户出拳
user = int(input("请用户出拳(石头-1 剪刀-2 布-3)"))
if user < 1 or user > 3:
    print("输入不合法")
else:
    # 3. 对比PK出结果(平局,电脑赢了,用户赢了)
    if computer == user:
        print("平局")
    elif (user == 1 and computer == 2) \
            or (user == 2 and computer == 3) \
            or (user == 3 and computer == 1):
            print("用户赢了")
    else:
        print("电脑赢了")

在这里插入图片描述

运算符和条件语句综合应用案例

需求:判断是否开展户外活动

判定规则:

  1. 晴天 + 温度18~30℃ → 户外活动
  2. 多云 + 温度15~25℃ + 湿度<80% → 户外活动
  3. 雨天 → 不活动
  4. 其余所有情况 → 不活动

示例函数(修正原文残缺代码)

# 案例——天气
w = input("请输入天气:")
t = int(input("请输入温度:"))
h = int(input("请输入湿度: "))

if w == "晴天":
    if t >= 18 and t <= 30:
        print("可户外运动")
    else:
        print("不可户外运动")
elif w == "多云":
    if (t >= 15 and t < 25):
        if h <= 80:
            print("可户外运动")
        else:
            print("不可户外运动")
    else:
        print("不可户外运动")

elif w == "雨天":
    print("不可户外运动")
else:
    print("不可户外运动")

在这里插入图片描述

程序错误分类及如何DEBUG调试

程序错误分为3大类:语法错误、运行时错误、逻辑错误

4.1 语法错误(Syntax Errors)

代码不符合Python语法规则,程序直接无法运行
常见原因:

  1. 缺失标点:括号、引号、冒号
  2. 关键字拼写错误(if写成fi)
  3. Python缩进错误
  4. 语句残缺,少:=等符号

4.2 运行时错误(Runtime Errors / 异常Exception)

代码语法没问题,运行中途触发异常崩溃
常见类型:

错误类型场景
ZeroDivisionError除数为0
TypeError不同类型数据运算(数字+字符串)
NameError使用未定义变量/函数
IndexError列表索引越界
FileNotFoundError打开不存在文件

错误示例与优化

# 原始易报错代码
str_input = input('请输入两数(空格隔开):')
a,b = str_input.split()
print(a / b) # 类型错误、分割数量不足、除零错误

# try-except捕获异常优化
str_input = input('请输入两数(空格隔开):')
a,b = str_input.split()
a = int(a)
b = int(b)
try:
    print(a / b)
except ZeroDivisionError:
    print('除数不能为0')

4.3 逻辑错误(Logical Errors)

程序正常运行无报错,但输出结果不符合预期

示例

# 需求:计算1~n累加和
def sum_numbers(n):
    total = 0
    for i in range(n): # range(n) 只取0~n-1,漏掉n
        total += i
    return total

result = sum_numbers(5)
# 预期1+2+3+4+5=15,实际输出10
print(f"1到5的和是:{result}")
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐