我正在尝试在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
答案 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