我一直在尝试为用户在文本文件中输入新单词添加一些验证。
输入必须只包含字母,我使用.isalpha()
的if语句工作,但我想尝试看看我是否可以使用try工作,除了到目前为止我还没有它工作。
try语句允许所有输入,无论它是否包含数字或空格。我似乎无法发现我出错的地方。
def AddNewWords():
List = []
Exit = False
while not Exit:
choice = input("Please enter a word to be added to the text file: ")
try:
choice.isalpha()
except:
print("Not a valid word")
continue
else:
List.append(choice)
Exit = True
Return List
AddNewWords()
答案 0 :(得分:1)
isalpha()
返回True / False,它不会引发任何异常。
请改为尝试:
choice = input("Please enter a word to be added to the text file: ")
if not choice.isalpha():
print("Not a valid word")
continue
List.append(choice)
Exit = True
FWIW,您也可以在不使用退出变量的情况下以更紧凑的方式重写循环,而是使用while True
+ break
:
while True:
choice = input("Please enter a word to be added to the text file: ")
if choice.isalpha():
List.append(choice)
break
print("Not a valid word")
答案 1 :(得分:1)
如果没有try
/ except
子句,有很多方法可以实现您的结果。但是,提出手动异常是一种非常有效的方法,只需对代码进行一些更改即可应用。
首先,您需要确保False
结果str.isalpha
引发错误:
if not choice.isalpha():
raise ValueError
其次,您应该明确定义要捕获的异常:
except ValueError:
print("Not a valid word")
continue
完整的解决方案:
def AddNewWords():
L = []
Exit = False
while not Exit:
choice = input("Please enter a word to be added to the text file: ")
try:
if not choice.isalpha():
raise ValueError
except ValueError:
print("Not a valid word")
continue
else:
L.append(choice)
Exit = True
return L
AddNewWords()
答案 2 :(得分:0)
你需要检查是否真假不尝试除外,因为你不会得到任何异常。代码应该是。
def AddNewWords():
List = []
Exit = False
while not Exit:
choice = input("Please enter a word to be added to the text file: ")
if not choice.isalpha():
print("Not a valid word")
continue
else:
List.append(choice)
Exit = True
return List
AddNewWords()