Python 如何处理ValueError:以10为基数的int()的文本无效:';a';不劳而获

Python 如何处理ValueError:以10为基数的int()的文本无效:';a';不劳而获,python,Python,如果在命令行窗口中输入为整数,并且您给出了一些字符串或字符,则会发生以下错误: ValueError: invalid literal for int() with base 10: 'a' 如何在不使用try-Exception块的情况下处理此问题?您需要执行try-Exception,并捕获ValueError 请查看此python文档: 您需要进行一次尝试,然后捕获ValueError 请查看此python文档: 如果你真的想避免try/except块,你可以使用内置方法并手动进行检查,

如果在命令行窗口中输入为整数,并且您给出了一些字符串或字符,则会发生以下错误:

ValueError: invalid literal for int() with base 10: 'a'

如何在不使用try-Exception块的情况下处理此问题?

您需要执行try-Exception,并捕获ValueError

请查看此python文档:


您需要进行一次尝试,然后捕获ValueError

请查看此python文档:


如果你真的想避免try/except块,你可以使用内置方法并手动进行检查,但作为其他回复程序,我建议只使用try/except。如果你真的想避免try/except块,你可以使用内置方法并手动进行检查,但作为其他回复程序,我建议只使用try/except。

如果您有要避免使用
try:
/
except:
,请使用:

def is_int_number(num):
    return num.strip().lstrip('-+').isdigit() and num.count('-') + num.count('+') <= 1
在普通代码中,我们使用
try
/
,ValueError除外:
,但是:

try:
    fieldindex = int(sys.argv[1])-1
except ValueError:
    print('Please enter a number')
    sys.exit(1)

如果要避免使用
请尝试:
/
除了:
,请使用:

def is_int_number(num):
    return num.strip().lstrip('-+').isdigit() and num.count('-') + num.count('+') <= 1
在普通代码中,我们使用
try
/
,ValueError除外:
,但是:

try:
    fieldindex = int(sys.argv[1])-1
except ValueError:
    print('Please enter a number')
    sys.exit(1)

只需使用for in块来验证每个字符是否为数字,或者失败:

_zero = ord('0')
_nine = ord('9')

def is_num(value):
    for c in value:
        if not (_zero <= c <= _nine):
            return False

    return True

print(is_num(b'234'))
\u zero=ord('0'))
_九=ord('9')
def是_num(值):
对于c值:

如果不是(_zero只需使用for in块验证每个字符是否为数字,或者失败:

_zero = ord('0')
_nine = ord('9')

def is_num(value):
    for c in value:
        if not (_zero <= c <= _nine):
            return False

    return True

print(is_num(b'234'))
\u zero=ord('0'))
_九=ord('9')
def是_num(值):
对于c值:

如果不是(\u zero这就是异常处理的目的,为什么不在这里使用
try:
语句?可能您想使用
raw\u input
而不是
input
,将值读取为字符串?您需要告诉我们更多有关您尝试执行的操作的信息。我的程序是这样的,无论何时输入字符,它都应该将输入作为整数应该在不使用try-exceptfieldindex=int(sys.argv[1])的情况下处理acter或string-1-->这就是我获取命令窗口输入的方式。现在,每当我输入一些字符串/字符时,它就会给我错误,我想处理它,这就是异常处理的目的,为什么不在这里使用
try:
语句呢?也许你想用
原始输入
而不是
输入
来读取字符串值?你需要告诉你我的程序应该将输入作为整数,每当我输入一个字符或字符串时,它应该在不使用try exceptfieldindex=int(sys.argv[1])的情况下得到处理-1-->这是我接受命令窗口输入的方式。现在,每当我输入一些字符串/字符时,它都会给我错误,我想处理这个问题,这可能是对您实际问题的最佳答案,@Neeraj Lad,但无论如何,您不应该在代码中使用它。这样做,您就是在为自己设置陷阱-边缘情况会在您的
是否也可以实现为
返回重新搜索(r“^\s*[+-]?\d+\s*$”,num)
?@SethMMorton:可以;但这是一个额外的导入,而且对使用异常处理有无法解释的厌恶的OP也可能无法导入
re
。-)这可能是你实际问题的最佳答案,@Neeraj Lad,但无论如何你都不应该在代码中使用它。这样做,你是在为自己设置陷阱——在最坏的情况下会在你脸上爆炸的边缘案例。你的
is_int_number
是否也可以实现为
return re.search(r“^\s*[+-]?\d+\s*$”,num)
?@SethMMorton:可以;但是这是一个额外的导入,并且对于使用异常处理有无法解释的厌恶的OP可能也不允许导入
re
:-)fieldindex=int(sys.argv[1])-1这是我的命令行输入语法,当我使用字符串/字符时,会显示上面的错误。你能帮我处理for-in块吗?fieldindex=int(sys.argv[1])-1这是我的命令行输入语法,当我使用字符串/字符时,会显示上面的错误。你能帮我处理for-in块吗?