<p>问题在于代码的以下部分:</p>
<pre><code>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
</code></pre>
<p>您无需任何条件就可以增加变量,为此作业使用<code>all</code>函数:</p>
<pre><code>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.")
</code></pre>
<p>现在,如果您正在寻找另一种方法,您可以使用regex来完成此任务,但效率不如前面的解决方案。</p>
<pre><code>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.")
</code></pre>