目录
案例 1:简单计算器
目标:创建一个多功能计算器,支持加法、减法、乘法、除法操作,并包含输入验证和错误处理。
详细步骤
- 定义计算器函数:接受两个数字和一个操作符作为输入参数。
- 操作符判断:通过
if-elif
语句判断操作符,选择相应的计算。 - 错误处理:处理输入的除数为零的情况,避免程序崩溃。
- 输出结果:根据运算输出结果。
代码示例
def calculator(num1, num2, operator):
try:
if operator == '+':
return num1 + num2
elif operator == '-':
return num1 - num2
elif operator == '*':
return num1 * num2
elif operator == '/':
if num2 == 0:
return "错误:不能除以零"
return num1 / num2
else:
return "无效的操作符"
except TypeError:
return "请输入有效的数字"
# 主程序
try:
num1 = float(input("输入第一个数字: "))
num2 = float(input("输入第二个数字: "))
operator = input("输入操作符 (+, -, *, /): ")
result = calculator(num1, num2, operator)
print(f"结果: {result}")
except ValueError:
print("输入错误,请确保输入的是数字")
说明
- 异常处理:
try-except
块用于捕获用户输入的类型错误或操作符错误。 - 输入验证:在主程序中增加了数字输入验证,避免非数字输入导致的崩溃。
- 功能扩展:可以添加取余、幂次运算等其他运算符,进一步增强功能。
案例 2:判断奇偶数并校验输入
目标:编写一个函数,判断用户输入的数字是奇数还是偶数,并包含输入验证。
详细步骤
- 定义函数:定义一个函数
check_odd_even
,接收一个数字作为参数。 - 判断逻辑:使用条件语句判断数字是否为偶数。
- 异常处理:确保用户输入的内容为整数。
代码示例
def check_odd_even(number):
try:
number = int(number)
if number % 2 == 0:
return "偶数"
else:
return "奇数"
except ValueError:
return "输入无效,请输入一个整数"
# 主程序
num = input("输入一个数字: ")
print(check_odd_even(num))
说明
- 输入验证:在函数中处理非整数输入。
- 扩展建议:可以将判断结果保存到列表中,以便后续统计或处理。
案例 3:计算列表平均值
目标:计算用户输入的一组数字的平均值,包含非数字输入的验证。
详细步骤
- 输入处理:提示用户输入一组数字,并使用空格分隔。
- 列表解析:将用户输入的数据转为浮点数列表。
- 计算平均值:使用
sum
和len
函数计算平均值。 - 异常处理:捕获非数字输入的异常,提示用户重新输入。
代码示例
def average(numbers):
try:
return sum(numbers) / len(numbers) if len(numbers) > 0 else 0
except TypeError:
return "输入的列表中包含非数字元素"
# 主程序
try:
numbers = list(map(float, input("输入一组数字,用空格分隔: ").split()))
print(f"平均值: {average(numbers)}")
except ValueError:
print("输入无效,请确保输入的是数字")
说明
- 异常捕获:在输入过程中捕获
ValueError
异常,避免非数字导致的程序崩溃。 - 代码优化:可以在
average
函数中增加检测空列表的逻辑,确保除零错误不发生。
案例 4:查找最大值和最小值
目标:编写一个函数,在用户输入的数字列表中查找最大值和最小值,并包含数据验证。
详细步骤
- 定义查找函数:使用
min
和max
函数查找最小值和最大值。 - 输入处理:将用户输入的字符串转换为整数列表。
- 异常处理:确保输入内容有效。
代码示例
def find_min_max(numbers):
if not numbers:
return "列表为空"
return min(numbers), max(numbers)
# 主程序
try:
numbers = list(map(int, input("输入一组数字,用空格分隔: ").split()))
min_val, max_val = find_min_max(numbers)
print(f"最小值: {min_val}, 最大值: {max_val}")
except ValueError:
print("输入无效,请确保输入的是整数")
说明
- 空列表处理:函数内部处理空列表的情况,确保程序健壮性。
- 扩展建议:可以扩展为返回最大值、最小值的索引位置。
案例 5:统计字符串中的字符
目标:编写一个程序,统计用户输入字符串中每个字符的出现次数,忽略空格。
详细步骤
- 定义统计函数:创建一个字典存储每个字符的计数。
- 统计逻辑:遍历字符串,为每个字符更新计数。
- 忽略空格:判断字符是否为空格,非空格字符进行统计。
代码示例
def count_characters(string):
char_count = {}
for char in string:
if char != " ":
char_count[char] = char_count.get(char, 0) + 1
return char_count
# 主程序
string = input("输入字符串: ")
char_count = count_characters(string)
for char, count in char_count.items():
print(f"'{char}': {count}")
说明
- 优化建议:使用
collections.Counter
模块可以简化统计过程。 - 扩展建议:可以将结果保存为文件或进行排序展示。
案例 6:生成斐波那契数列
目标:编写一个函数生成斐波那契数列,并包含数据验证和扩展。
详细步骤
- 定义生成函数:使用循环生成斐波那契数列。
- 输入验证:确保用户输入的项数为正整数。
- 生成逻辑:按斐波那契数列规则生成数字。
代码示例
def fibonacci(n):
if n <= 0:
return "输入必须为正整数"
fib_sequence = [0, 1]
for i in range(2, n):
fib_sequence.append(fib_sequence[-1] + fib_sequence[-2])
return fib_sequence[:n]
# 主程序
try:
n = int(input("输入斐波那契数列的项数: "))
print(f"斐波那契数列: {fibonacci(n)}")
except ValueError:
print("输入无效,请输入一个整数")
说明
- 扩展建议:生成更长的斐波那契数列或限制生成项数。
案例 7:文件读写操作
目标:创建一个文本文件,写入内容并读取,包含错误处理。
详细步骤
- 写入内容:使用
with open
写入内容到文件。 - 读取内容:打开文件读取内容,确保文件路径正确。
- 异常处理:增加文件不存在时的异常处理。
代码示例
def write_to_file(filename, content):
with open(filename, 'w') as file:
file.write(content)
def read_from_file(filename):
try:
with open(filename, 'r') as file:
return file.read()
except FileNotFoundError:
return "文件不存在"
# 主程序
filename = 'example.txt'
content = input("输入要写入的内容: ")
write_to_file(filename, content)
print("文件内容:")
print(read_from_file(filename))
案例编号 | 案例名称 | 功能描述 | 关键步骤 | 输入验证 | 错误处理 | 扩展建议 |
---|---|---|---|---|---|---|
1 | 简单计算器 | 实现加法、减法、乘法和除法运算 | 定义计算器函数,判断操作符,输出结果 | 验证数字输入 | 检查零除错、无效操作符 | 增加取余、幂次运算等更多操作符 |
2 | 判断奇偶数 | 判断输入数字是奇数还是偶数 | 定义函数判断数字是否能整除2 | 验证整数输入 | 捕获非整数输入 | 结果保存到列表中,便于统计或处理 |
3 | 计算列表平均值 | 计算用户输入的数字列表的平均值 | 将输入数据转换为浮点数列表,计算平均值 | 验证数字输入 | 捕获非数字输入 | 空列表返回零,确保除零不发生 |
4 | 查找最大最小值 | 找出数字列表中的最大值和最小值 | 使用min 和max 函数找最大值和最小值 | 验证数字输入 | 检查空列表 | 返回最大/最小值的索引位置 |
5 | 字符统计 | 统计字符串中每个字符的出现次数(忽略空格) | 遍历字符串,非空格字符计数 | 验证字符串输入 | 无需额外处理 | 使用Counter 模块,按字符频率排序 |
6 | 斐波那契数列生成 | 生成指定长度的斐波那契数列 | 使用循环生成数列,返回前n 项 | 验证正整数输入 | 检查负数或零输入 | 增加生成项数限制,防止过大 |
7 | 文件读写操作 | 写入文本内容到文件并读取文件内容 | 写入内容至文件,读取文件并输出内容 | 验证文件路径 | 文件不存在错误 | 增加文件追加写入模式 |
8 | 猜数字游戏 | 随机生成一个数字,让用户猜测并提示对错 | 随机生成数字,用户输入并判断大小 | 验证数字输入 | 捕获非数字输入 | 统计总猜测次数、限制最大猜测次数 |