练习 10-6:加法运算 提示用户提供数值输入时,常出现的一个问题是,用户提供的是文本而不是数。在此情况下,当你尝试将输入转换为整数时,将引发 ValueError 异常。编写一个程序,提示用户输入两个数,再将其相加并打印结果。在用户输入的任何一个值不是数时都捕获 ValueError 异常,并打印一条友好的错误消息。对你编写的程序进行测试:先输入两个数,再输入一些文本而不是数。
时间: 2025-07-21 13:56:33 浏览: 0
<think>根据用户需求,我们需要编写一个程序,该程序能够:
1. 提示用户输入两个数值。
2. 将输入值相加并打印结果。
3. 当用户输入非数值时,捕获ValueError异常并打印友好错误消息。
我们将按照以下步骤实现:
- 使用try-except块来捕获转换输入为浮点数时可能引发的ValueError。
- 如果两个输入都成功转换为浮点数,则计算它们的和并打印。
- 如果任何一个输入转换失败,则捕获异常并提示用户输入有效的数字。
此外,根据练习10-7的要求,我们将程序放在一个while循环中,让用户在输入错误后可以继续输入,直到输入正确为止。
下面是一个完整的程序:</think>### Python程序:处理用户输入数值加法并捕获ValueError异常
我将为您编写一个Python程序,实现用户输入两个数值并求和的功能,同时处理非数值输入时的ValueError异常。程序会提供友好的错误提示,并允许用户持续尝试输入。
#### 完整代码实现
```python
def add_numbers():
"""执行加法运算并处理输入异常"""
print("加法计算器:请输入两个数值进行相加(输入'q'退出)")
while True:
try:
# 获取第一个输入值
num1 = input("请输入第一个数字: ")
if num1.lower() == 'q': # 检查退出指令
print("程序已退出")
break
num1 = float(num1) # 尝试转换为浮点数
# 获取第二个输入值
num2 = input("请输入第二个数字: ")
if num2.lower() == 'q':
print("程序已退出")
break
num2 = float(num2)
# 计算并显示结果
result = num1 + num2
print(f"计算结果: {num1} + {num2} = {result}\n")
except ValueError: # 捕获数值转换错误
print("错误:请输入有效的数字(如 5 或 3.14),不能是文本!请重新输入。\n")
# 运行程序
if __name__ == "__main__":
add_numbers()
```
#### 代码说明
1. **异常处理机制**:
- 使用 `try-except` 块捕获 `ValueError` 异常(当输入无法转换为数字时触发)[^1]
- 错误处理块提供友好的中文提示:"请输入有效的数字...不能是文本!"
2. **输入处理**:
- 使用 `float()` 函数将输入转换为浮点数(支持整数和小数)
- 用户输入 `q` 或 `Q` 可随时退出程序
3. **循环结构**:
- 通过 `while True` 循环持续接收输入,直到用户主动退出
- 每次计算后显示清晰的结果格式:`5 + 3.2 = 8.2`
#### 测试方法
1. **正常输入测试**:
```python
输入第一个数字: 5
输入第二个数字: 3.2
输出: 计算结果: 5.0 + 3.2 = 8.2
```
2. **异常输入测试**:
```python
输入第一个数字: hello
输出: 错误:请输入有效的数字(如 5 或 3.14),不能是文本!请重新输入。
```
3. **混合输入测试**:
```python
输入第一个数字: 10
输入第二个数字: world
输出: 错误:请输入有效的数字(如 5 或 3.14),不能是文本!请重新输入。
```
#### 数学表达式说明
程序中的加法运算遵循基本数学规则:
$$ a + b = \text{sum} $$
其中 $a$ 和 $b$ 为实数集 $\mathbb{R}$ 中的任意元素。
#### 相关问题
1. 如何扩展此程序以处理除法运算并捕获`ZeroDivisionError`(除零错误)?[^2]
2. Python中还有哪些常见异常类型(如`TypeError`, `IndexError`)?如何处理它们?
3. 如何修改程序使其能够计算多个数值(不只两个)的总和?
4. 在异常处理中,`sys.exc_info()`函数有什么作用?如何用它获取更详细的错误信息?[^3]
[^1]: Python允许我们在程序中手动设置异常,使用 raise 语句即可...
[^2]: Python有两种错误很容易辨认:语法错误和异常...
[^3]: sys.exc_info()函数除了前面介绍的获取异常信息的方式外...
阅读全文
相关推荐


















