如何让输入只接受a-z等

问题描述 投票:0回答:5

我无法让我的输入仅接受 a-z 和 A-Z 字母。这是我想出来的

        while(not(studentName == "END")):
    studentName = input("What is the name of the student (END to finish) ")
    if not re.match("^[a-z]*$", studentName):
        print("Only letters are allowed")
    elif len(studentName) == 0:
        print("Insufficient characters. Please try again.")
    else:
        studentsNames.append(studentname)

但是我只是想出了一个错误“未定义”。 我该怎么办:C

python python-3.4
5个回答
5
投票

我不喜欢使用正则表达式,而是使用内置的字符串方法。其中之一是

str.isalpha()
,当在字符串上调用时,如果字符串仅包含
True,则返回 
A-z
。所以代替:

if not re.match("^[a-z]*$", studentName):
    print("Only letters are allowed")

我只想写:

if not studentName.isalpha():
    print("Only letters are allowed!")

0
投票

您需要导入

re
模块,并且您必须需要将正则表达式更改为,

if not re.match(r"^[A-Za-z]+$", studentName):

只需在 python 脚本顶部输入以下代码。

import re

您的正则表达式

"^[a-z]*$"
将匹配零个或多个小写字母。也就是说,它也会匹配空字符串,并且不会匹配仅包含大写字母的字符串,例如
FOO

所以这个

if not re.match("^[a-z]*$", studentName):
将为所有字符串返回
true
,该字符串不能是空字符串或仅包含小写字母的字符串。


0
投票

您可以使用 setstring.ascii_letters:

from string import ascii_letters

def is_all_characters(student_name):
    return set(student_name) in set(ascii_letters)

0
投票

isalpha() 可以满足此要求。

username = input("Enter Username: ")
if username.isalpha() is False:
 print("Only Text allowed in Username")
else:
 print("Welcome "+username)

0
投票

虽然正确: 而真实: StudentName = input("学生的名字是什么:") 如果学生姓名.isalpha(): print("欢迎来到cse", 学生姓名) 休息 别的: print("输入无效") 打破

© www.soinside.com 2019 - 2024. All rights reserved.