在try语句中使用.isalnum()

时间:2019-05-06 12:56:28

标签: python-3.x python-3.7

我正在尝试在try语句中使用isalnum()。我将导致False,但不会执行except语句。为什么?

尝试了几件事,一件有用的事是,在try语句之外有一行检查isalnum()。然后检查该语句是True还是Fasle。 这似乎是一种解决方法,我认为应该最好使用try语句进行检查。

例如

while True
    string = input()
    try:
        check = string.isalnum()
        break

    except ValueError:
        print("{} must be a number or a letter.".format(string))
        continue

2 个答案:

答案 0 :(得分:1)

  

尝试并排除

     

如果遇到错误,将停止执行try块代码,并   向下转移到除外块。

  

isalnum()方法

     如果字符串中的所有字符都是字母数字(字母或数字),则

返回True。如果不是,则返回   错误的。

注意:

在您的情况下,使用它是没有意义的。您将永远不会出错,因为isalnum()中的结果为True或False,except语句将永远不会执行

答案 1 :(得分:0)

您似乎在将抛出的异常与返回的False混淆。

您设置的tryexcept代码将尝试调用string.isalnum(),如果该代码以ValueError的方式中断,则您的except部分将运行。问题是,string.isalnum()不会抛出ValueError,如果您的字符串是字母数字,它将返回True,否则将返回False。您可以使用1行脚本对此进行检查:

"gfdgksjhfgyuierg634786234693".isalnum()

>>> True

"()**^&*%$%$#%#@%$@^%%(^&%(^".isalnum()

>>> False

如果其中任何一个引发了异常,您都会看到它而不是True / False