当且仅当s中至少有一个字母字符且s中的字母字符全部为大写或全部为小写时,返回True。
def upper_lower(s):
""" (str) -> bool
>>> upper_lower('abc')
True
>>> upper_lower('abcXYZ')
False
>>> upper_lower('XYZ')
True
"""
答案 0 :(得分:1)
正则表达式是迄今为止最有效的方法。
但如果你想在你的代码中加入一些pythonic风格,你可以试试这个:
'abc'.isupper()
'ABC'.isupper()
'abcABC'.isupper()
upper_lower = lambda s: s.isupper() or s.islower()
答案 1 :(得分:1)
使用re.match
if re.match(r'(?:[A-Z]+|[a-z]+)$', s):
print("True")
else:
print("Nah")
我们不需要添加行锚的开头,因为re.match
尝试从字符串的开头匹配。
因此,只有当输入字符串只包含小写字母或仅包含大写字母时,它才会进入if
块。
答案 2 :(得分:0)
您可以使用以下正则表达式:
if re.search('^([a-z]+|[A-Z]+)$', s):
# all upper or lower case
说明:^
匹配字符串的开头,[a-z]
和[A-Z]
是微不足道的匹配,+
匹配一个或多个。 |
是" OR"正则表达式,最后$
匹配字符串的结尾。
或者,您可以使用all
并检查:
all(c.islower() for c in s)
# same thing for isupper()
答案 3 :(得分:0)
您可以收集所有字母字符,然后检查全部或上部或全部是否较低
a=[c for c in s if s.isalpha()]
if a:
if "".join(a).isupper() or "".join(a).islower():
print "yes"