如何在不使用字符串方法的情况下确定字符是大写、小写、数字还是非字母数字

2024-05-17 10:12:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试编写一个程序来确定一个字符是大写、小写、数字还是非字母数字,而不使用isupper、islower、is digit等字符串方法。程序是我输入的所有内容,它告诉我它是小写字母。有人能帮我吗?

character = input("Enter a character: ")

lowerLetters = "abcdefghijklmnopqrstuvwxyz"
upperLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
digits = "0123456789"
lowerCount = 0
upperCount = 0
digitCount = 0
nonAlphaCount = 0

for ch in character:
    for ch in lowerLetters:
        lowerCount += 1
    for ch in upperLetters:
        upperCount += 1
    for ch in digits:
        digitCount += 1
    else:
        nonAlphaCount += 1

if lowerCount > 0:
    print(character, "is a lower case letter.")
elif upperCount > 0:
    print(character, "is an upper case letter.")
elif digitCount > 0:
    print(character, "is a digit.")
elif nonAlphaCount > 0:
    print(character, "is a non-alphanumeric character.")

Tags: in程序foris数字chprintdigit
3条回答

问题在于代码的以下部分:

for ch in character:
    for ch in lowerLetters:
        lowerCount += 1
    for ch in upperLetters:
        upperCount += 1
    for ch in digits:
        digitCount += 1
    else:
        nonAlphaCount += 1

您无需任何条件就可以增加变量,为此作业使用all函数:

character = input("Enter a character: ")

lowerLetters = "abcdefghijklmnopqrstuvwxyz"
upperLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
digits = "0123456789"

if all(ch in character ckafor ch in lowerLetters):
    print(character, "is a lower case letter.")
elif all(ch in character for ch in upperLetters):
    print(character, "is an upper case letter.")
elif all(ch in characterfor ch in digits):
    print(character, "is a digit.")
else:
    print(character, "is a non-alphanumeric character.")

现在,如果您正在寻找另一种方法,您可以使用regex来完成此任务,但效率不如前面的解决方案。

character = input("Enter a character: ")
import re
if re.match(r'[a-z]+',characters):
        print(character, "is a lower case letter.")
elif re.match(r'[A-Z]',characters):
        print(character, "is an upper case letter.")
elif re.match(r'[0-9]+',characters):
        print(character, "is a digit.")
else:
        print(character, "is a non-alphanumeric character.")

可以使用ascii值

Numbers 0-9 ASCII 48 to 57 
Lowercase letters a-z ASCII 97 to 122 
Uppercase letters A-Z ASCII 65-90

使用ord函数。像这样:

>>ord('a')
97 

因此,要检查a是否是小写字母,请执行以下操作:

if 97<=ord('a')<=122:
    print "lowercase character"

你的代码是好的(虽然不是最好的,即使没有使用你提到的方法),但你有几个错别字:)这就是你所拥有的:

for ch in character:
    for ch in lowerLetters:
        lowerCount += 1
    for ch in upperLetters:
        upperCount += 1
    for ch in digits:
        digitCount += 1
    else:
        nonAlphaCount += 1

这是你想输入的:

for ch in character:
    if ch in lowerLetters:
        lowerCount += 1
    elif ch in upperLetters:
        upperCount += 1
    elif ch in digits:
        digitCount += 1
    else:
        nonAlphaCount += 1

相关问题 更多 >