为什么 isupper函数判断时会不受换行影响
代买如下:strin = '''NlPWeaIY
uABNuEDKFWiUaqQ'''
lin = len(strin)
for i in range(lin):
if strin.islower():
if strin.isupper() and strin.isupper():
if not strin.isupper() and not strin.isupper():
print(strin)
print(strin.isupper())
为什么 第二行u 前面三个位置 判断isupper 会为真? 本帖最后由 Twilight6 于 2020-7-1 13:01 编辑
换行符是 \n 没有大小写之分, \n 是一个不可见字符,而不是 \ 和 n 两个字符 所以 isupper 判断换行符时候 会返回 False ,所以不受换行符影响
>>> len('\n')
1
>>> '\n'.isupper()
False
你的 u 前面三个字符是说明意思没看懂....
isupper() 函数判断字符串是否全为大写,若不全为大写返回 False ,全为大写返回 True
Twilight6 发表于 2020-7-1 12:57
换行符是 \n 没有大小写之分, \n 是一个不可见字符,而不是 \ 和 n 两个字符 所以 isupper 判断换行符 ...
问题就是 他返回的是 ture 不是false。。。 qiuyouzhi 发表于 2020-7-1 12:57
你用的是三引号字符串,换行会被无视。
比如
'''Hello
不会呀 如果我输出strin 是会输出换行的 本帖最后由 Twilight6 于 2020-7-1 13:06 编辑
hoshealiu 发表于 2020-7-1 13:01
问题就是 他返回的是 ture 不是false。。。
strin#是第i 个
strin
你而你 isupper 判断的是 i-3 ~ i-1 个 啊 不是判断 u
列表索引不包含右边的值
print(strin)
print(strin.isupper())
你这样运行就会知道为什么了
>>> 'AAA\n'.isupper()
True
刚刚测试了下,确实不受 \n 的影响
qiuyouzhi 发表于 2020-7-1 12:57
你用的是三引号字符串,换行会被无视。
比如
'''Hello
不是吧阿sir 永恒的蓝色梦想 发表于 2020-7-1 13:12
不是吧阿sir
噢,说错了 Twilight6 发表于 2020-7-1 12:57
换行符是 \n 没有大小写之分, \n 是一个不可见字符,而不是 \ 和 n 两个字符 所以 isupper 判断换行符 ...
对 这就是我奇怪的点 单独判断\n是falseIY\n放一起就是TURE了 Twilight6 发表于 2020-7-1 13:03
你而你 isupper 判断的是 i-3 ~ i-1 个 啊 不是判断 u
列表索引不包含右边的值
。。所以为啥嘞 本帖最后由 Twilight6 于 2020-7-1 14:14 编辑
hoshealiu 发表于 2020-7-1 14:11
对 这就是我奇怪的点 单独判断\n是falseIY\n放一起就是TURE了
不可见字符,如果没有单独拿出来,Python 会自动过滤掉,你记住有这样的效果就行
>>> '\tA\rA\bA\n'.isupper()
True
一个个拿出判断:
>>>for i in '\tA\rA\bA\n':
print(i.isupper())
# 返回结果:
False
True
False
True
False
本帖最后由 SHRS23 于 2020-7-1 15:26 编辑
官方文档:
str.isupper()
Return True if all cased characters 4 in the string are uppercase and there is at least one cased character, False otherwise.
如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False
常用的字符中,数字,中文,标点符号,转义字符(比如你说的\n)都是不区分大小写的字符
页:
[1]