验证该输入由字母字符组成

时间:2018-06-09 19:15:21

标签: python string exception

我一直在尝试为用户在文本文件中输入新单词添加一些验证。

输入必须只包含字母,我使用.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()

3 个答案:

答案 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()