TypeError和ValueError检查-ve否时正确处理。和弦

时间:2019-04-03 18:26:28

标签: python python-2.7

我想提出或处理异常时的否。是-ve或值是字符串。

def pallindrome(x):
    try:
        val=int(x)
    except ValueError:
        print("x must be integer")
        return 0
    try:
        x<0
    except TypeError:
        print("x must be +ve integer")
        return 0
    temp=x
    rev=0
    while(x>0):
        r=x%10
        rev=rev*10+r
        x=x/10
    if(temp==rev):
        print("pallindrome")
    else:
        print("ne")

pallindrome(-121)       #o/p --ne
pallindrome("vikash")   #o/p--x must be integer

这里是如何处理负整数的情况。 请提出建议。 预先感谢。

2 个答案:

答案 0 :(得分:1)

代替以下try-except块进入函数内部:

try:
    x<0
except TypeError:
    print("x must be +ve integer")
    return 0

尝试一下:

if x<0:
    print("x must be +ve integer")
    return 0

或者,如果您想引发一些异常,请尝试以下方法:

if x<0:
    raise ValueError("x must be +ve integer")
    return 0

答案 1 :(得分:1)

当数字为负数时,不需要引发异常,您可以使用简单的if语句来检查以下内容:

def pallindrome(x):
    try:
        val=int(x)
        if val<0:
            print("x must be +ve integer")
            return 0
        rev=0
        while val>0:
            r = val%10
            rev = rev*10+r
            val = val/10
        if temp == rev:
            print("pallindrome")
        else:
            print("ne")
    except ValueError:
        print("x must be integer")
        return 0

更新:如果您想在数字为负数时引发TypeError异常,则可以这样更改代码:

        ...
        if val<0:
            raise TypeError("x must be +ve integer")
            return 0
        ...
    except ValueError:
        print("x must be integer")
        return 0