尝试除语句python之外

时间:2014-03-20 03:29:15

标签: 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. 如果不是。然后'除了'进场并重新开始
  3. 如果商是1.停止。
  4. 即使我将其更改为

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

    '除了'但是我得到了不支持的操作数类型'如果我输入一个数字。

2 个答案:

答案 0 :(得分:2)

您正试图立即将其转换为int。 try-except语句将检查错误,但仅限于try-except thingy中包含的代码。如果输入错误,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教授告诉我使用无限循环并且打破/退出它是非常糟糕的编程习惯,所以你应该只使用一个布尔值价值(而foo:...... ...... foo = false)。我还不完全确定为什么,因为我还没看好它。

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

一般来说,它只是你愿意让它变得多可读或容易出错。

答案 1 :(得分:0)

要循环而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!"