python - 尝试 except 语句 python

标签 python try-catch except

我只是想更好地理解 Try 和 except 语句。我被困住了。所以我希望你们能澄清一下。本程序纯粹用于学习。

感谢您的意见。

while True:
    x=int(input('enter no.->'))

    try:
        x/2
    except ValueError:
        print('try again')
    else:
        if (x/2)==1:
            break
print('program end')

所以我写这个程序的目的是-

  1. 如果 x 是数字则循环
  2. 如果不是。然后“异常(exception)”开始发挥作用并重新开始
  3. 如果商为 1。停止。

即使我把它改成

    x=input('enter no.->')

    try:
        int(x)/2

“异常(exception)”有效,但如果我输入数字,我会得到“不支持的操作数类型”。

最佳答案

您正在尝试立即将其转换为 int。 try- except 语句将检查错误,但仅限于 try- except 中包含的代码中。如果输入错误,int 转换将立即失败,因为输入的不是整数。 相反,将 int 转换 (int(string)) 放入 try- except 语句中:

while True:
    x=input('enter no.->')


    try:
        x=int(x)
    except ValueError:
        print('try again')
    else:
        if (x/2)==1:
            break
print('program end')

第二个失败,因为您必须将 x 设置为转换后的值,因此您基本上是在尝试将字符串除以 2。

作为一个注释,我不确定这有多适用,但是我的 OOP 教授告诉我使用无限循环并中断/返回它是非常糟糕的编程实践,所以你应该只使用一个 bool 值(而 foo: ... ... ... foo = false)。我不太清楚为什么,因为我还没有查过。

编辑:Is it a bad practice to use break in a for loop?

一般来说,这只是您愿意让它变得可读或容易出错的程度。

关于python - 尝试 except 语句 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22522904/

相关文章:

xslt - 在XPATH/XSL中使用“except”时的结构要求

python - 计算 Pandas 数据框中的数据类型

python - 使用 List 参数调用经过棉花糖验证的 GET 端点

c++ - 为什么 SymGetSymFromAddr64 不工作?它返回错误代码 126

java - 无法捕获 EJB 中的异常

Python try block 不捕获 os.system 异常

python - 如何用python替换字符串中的html元素?

python - 如何使用 Python 和 PIL 库从 DNA 序列创建条形码?

Java Hibernate,一种跟踪 native 异常的方法

python - 尝试除了奇怪的行为 python 2.7