关于python中if语句中or使用异常退出循环,

本文介绍了一段Python代码,用于统计员工薪资,并计算平均薪资。文章首先展示了出现除以零错误的原始代码,随后通过改进输入终止条件解决了该问题。修正后的程序能够正确处理用户输入并计算平均薪资。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

报错的代码段
empNum = 0
salarySum= 0
salarys = []
while True:
s = input(“请输入员工的薪资(按 Q或q结束)”)
if s == ‘Q’ or ‘q’:
break
if float(s)<0: continue
empNum +=1
salarys.append(float(s))
salarySum += float(s)
print(“员工数{0}”.format(empNum))
print(“录入薪资:”,salarys)
print(“平均薪资{0}”.format(salarySum/empNum))

错误提示

“C:\python studenty\untitled\venv\Scripts\python.exe” “C:/python studenty/untitled/mypython.py”
请输入员工的薪资(按 Q或q结束)4156
Traceback (most recent call last):
员工数0
录入薪资: []
File “C:/python studenty/untitled/mypython.py”, line 14, in
print(“平均薪资{0}”.format(salarySum/empNum))
ZeroDivisionError: division by zero

Process finished with exit code 1

仅更改使用.upper识别大小写不使用or

empNum = 0
salarySum= 0
salarys = []
while True:
s = input(“请输入员工的薪资(按 Q或q结束)”)
if s.upper() == ‘Q’:
break
if float(s)<0: continue
empNum +=1
salarys.append(float(s))
salarySum += float(s)
print(“员工数{0}”.format(empNum))
print(“录入薪资:”,salarys)
print(“平均薪资{0}”.format(salarySum/empNum))

运行结果
“C:\python studenty\untitled\venv\Scripts\python.exe” “C:/python studenty/untitled/mypython.py”
请输入员工的薪资(按 Q或q结束)3000
请输入员工的薪资(按 Q或q结束)4000
请输入员工的薪资(按 Q或q结束)q
员工数2
录入薪资: [3000.0, 4000.0]
平均薪资3500.0

Process finished with exit code 0

求大神指教,本人小白多多见谅。

### Python 中从 `if` 语句循环结构中抛出异常Python 编程语言中,可以利用 `raise` 关键字来手动引发异常。这不仅适用于条件判断中的 `if` 语句,在循环结构内同样适用。当特定条件下满足时,通过 `raise` 可以创建自定义错误消息并中断正常流程。 #### 使用 `if` 语句抛出异常 在一个简单的例子中展示如何基于某个条件触发异常: ```python def validate_age(age): if age < 0 or age > 120: raise ValueError("年龄应该是一个介于0到120之间的整数") print(f"验证成功:{age} 是有效的年龄") try: validate_age(-5) except ValueError as e: print(e) ``` 这段代码尝试调用函数 `validate_age()` 并传入负数值作为参数[^2]。由于这个值不符合预期范围,因此会执行 `raise` 语句从而抛出了一个带有描述性的字符串的 `ValueError` 异常对象。 #### 在循环结构内部抛出异常 同样的逻辑也可以应用于各种类型的循环之中,比如下面的例子展示了如何在遍历列表的过程中遇到非法项就立即停止操作并向外层传递异常信息: ```python numbers = [&#39;a&#39;, &#39;b&#39;, 3, 4] for index, item in enumerate(numbers): try: squared = int(item)**2 print(f"{item} 的平方是 {squared}") except TypeError: message = f"无法计算位置 {index}: &#39;{item}&#39; 不是可以转换成整型的数据" raise TypeError(message) print("所有项目均已处理完毕") ``` 在这个案例里,一旦遇到了不能被转化为整数的对象就会立刻终止整个迭代过程,并且给出具体的提示说明哪个元素造成了问题所在。 另外需要注意的是,在某些情况下可能并不希望完全退出程序而是继续运行后续代码,则可以在捕获异常之后采取适当措施恢复状态而不必让其传播出去影响更大范围内的功能模块。 对于更复杂的场景下还可以考虑使用上下文管理器(`with`)配合自定义类实现更加优雅地资源管理和错误报告机制。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值