【问题标题】:How to determine if character is uppercase, lowercase, digit, or non-alphanumeric without string methods如何在没有字符串方法的情况下确定字符是大写、小写、数字还是非字母数字
【发布时间】:2015-10-09 13:51:30
【问题描述】:

我正在尝试编写一个程序来确定一个字符是大写、小写、数字还是非字母数字,而没有像 isupper、islower、isdigit 这样的字符串方法。该程序是我输入的所有内容,它告诉我它是一个小写字母。有人可以帮我吗?

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.")

【问题讨论】:

  • 这段代码的问题是你正在这样做:for ch in lowerLetters: lowerCount += 1。这意味着无论如何,lowerCount 始终为 26。您需要将 lowerLetters 与您的 ch 进行比较。
  • “字母”的定义各不相同(“数字”也是如此)。即使在英语中,ASCII 字母也不能涵盖整个词汇表。您是否对 ASCII、来自某些语言的字母字符的子集或定义为字母的完整 Unicode 字符集感兴趣?

标签: python python-3.x


【解决方案1】:

你可以使用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"

【讨论】:

  • 谢谢先生。你是个天才
【解决方案2】:

您的代码很好(尽管即使不使用您提到的方法,也不是最适合您的代码)但是您有几个错别字:) 这就是您所拥有的:

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

【讨论】:

  • 谢谢,我明白了
【解决方案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.")

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

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.")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-12
    • 2018-02-03
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    • 2020-10-21
    • 2010-11-04
    • 1970-01-01
    相关资源
    最近更新 更多