加上用try...except方法
时间: 2024-02-23 14:03:17 浏览: 61
新手常见Python错误及异常解决处理方案
好的,以下是使用 `try...except` 方法处理用户输入非正整数的 Python 代码:
```
while True:
try:
n = int(input("请输入一个正整数:"))
if n <= 0:
raise ValueError("输入必须为正整数")
factorial = 1
i = 1
while i <= n:
factorial *= i
i += 1
print("%d 的阶乘是:%d" % (n, factorial))
break
except ValueError as e:
print(e)
```
代码解释:
1. 我们使用 `while True:` 来实现无限循环,直到用户输入了一个正整数为止。
2. 在 `try` 块中,我们使用 `int()` 函数将用户输入的字符串转换为整数,并将其存储在变量 `n` 中。
3. 接着,我们使用 `if` 语句判断用户输入的数是否小于等于 0,如果是,就使用 `raise` 语句抛出一个 `ValueError` 异常,并输出提示信息。
4. 如果用户输入的是正整数,则初始化变量 `factorial` 为 1,用于存储阶乘的结果;变量 `i` 初始值为 1,用于循环计算阶乘。
5. 在 while 循环中,我们使用 `factorial *= i` 语句来计算阶乘,即每次将 `i` 乘以 `factorial`,并将结果赋值给 `factorial`。
6. 循环条件为 `i <= n`,即当 `i` 小于等于 `n` 时,不断进行循环。
7. 最后,我们使用 `print()` 函数输出结果,并在 `except` 块中捕获 `ValueError` 异常,输出错误提示信息并继续循环,以等待用户重新输入。
希望这次回答能够满足你的需求!
阅读全文