try catch - Try except statement python



我只是想更好地理解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. 如果不是
  3. 。然后"except"开始发挥作用并重新开始
  4. 如果商为1。停止。

即使我把它改成

    x=input('enter no.->')
    try:
        int(x)/2

'except'工作,但如果我输入一个数字,我会得到'不支持的操作数类型'。

您正在尝试立即将其转换为整型。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教授告诉我使用无限循环和打破/返回它是非常糟糕的编程实践,所以你应该只使用布尔值(while foo: ... ... ...)Foo = false)。我不完全确定为什么,因为我还没有查过。

编辑:在for循环中使用break是一种不好的做法吗?

一般来说,这取决于你希望它有多易读或多容易出错。

当x是一个数字时循环,您可以这样做(使用Try和Except):

num = True
while num:
   x = raw_input("Enter a number: ")
   try:
       y = int(x)/2
       num = True
   except:
       num = False
print "Done!"

最新更新