Проверка того, что ввод состоит из буквенных символов - PullRequest
0 голосов
/ 09 июня 2018

Я пытался добавить некоторую проверку для пользователей, вводящих новое слово в текстовый файл.

Ввод должен состоять только из букв, и я получил эту работу, используя операторы if с .isalpha(), однакоЯ хотел попробовать и посмотреть, смогу ли я заставить его работать, используя 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 голосов
/ 09 июня 2018

вам нужно проверить, если истина / ложь не попробовать, за исключением случаев, когда вы не получите никаких исключений.код должен быть.

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()
0 голосов
/ 09 июня 2018

Есть много способов достичь вашего результата без предложения 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()
0 голосов
/ 09 июня 2018

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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...