python 基本大小写字符串
python basic uppercase and lowercase string
我正在尝试将给定字符串中的所有大写字符更改为小写字符,反之亦然。
- 我做错了什么,为什么我的代码不工作?
所以我试图循环遍历每个字母(即 s),如果它是小写字母则将其更改为大写字母 "and" 反之亦然。
string='HeLLO'
result=list(s.upper() for s in string if s.lower() and s.lower() for s in string if s.upper())
print(result)
output: ['H', 'E', 'L', 'L', 'O', 'H', 'E', 'L', 'L', 'O', 'H', 'E', 'L', 'L', 'O', 'H', 'E', 'L', 'L', 'O', 'H', 'E', 'L', 'L', 'O']
if s.lower()
这是一个糟糕的条件,因为它只是降低字符的功能,与 if s.upper()
相同。请改用 s.isupper()
。
>>> print result = list((s.lower() if s.isupper() else s.upper() for s in string))
['h', 'E', 'l', 'l', 'o']
你的生成器逻辑是错误的:
s.upper() for s in string if s.lower() and
s.lower() for s in string if s.upper()
第一部分是带条件的生成器 - 除了 if s.lower()
之外都可以。
第二部分也是生成器。
现在它只是第一个生成器的复杂条件(if
... and
...)
已经有一个方法可以做到这一点。
s = 'HelLo'
print(s.swapcase())
'hELlO'
What am I doing wrong, why isn't my code working?
虽然好的 python 代码可以看起来像(可执行的)伪代码并且读起来很像英语,但仅用英语说明您想做什么并期望 Python 做正确的事情是行不通的。不工作。 ;-)
特别是
中的关键字 and
s.upper() for s in string if s.lower() and s.lower() for s in string if s.upper()
并不像您认为的那样。 and
是一个布尔运算符,其工作方式如下:
True and True == True
True and False == False
False and True == False
False and False == False
在字符串上使用它(就像你在这里做的那样)会产生一个可能令人惊讶的结果:
"foo" and "bar" == "bar"
"" and "bar" == ""
请参阅其他答案以了解该怎么做。
我正在尝试将给定字符串中的所有大写字符更改为小写字符,反之亦然。
- 我做错了什么,为什么我的代码不工作?
所以我试图循环遍历每个字母(即 s),如果它是小写字母则将其更改为大写字母 "and" 反之亦然。
string='HeLLO'
result=list(s.upper() for s in string if s.lower() and s.lower() for s in string if s.upper())
print(result)
output: ['H', 'E', 'L', 'L', 'O', 'H', 'E', 'L', 'L', 'O', 'H', 'E', 'L', 'L', 'O', 'H', 'E', 'L', 'L', 'O', 'H', 'E', 'L', 'L', 'O']
if s.lower()
这是一个糟糕的条件,因为它只是降低字符的功能,与 if s.upper()
相同。请改用 s.isupper()
。
>>> print result = list((s.lower() if s.isupper() else s.upper() for s in string))
['h', 'E', 'l', 'l', 'o']
你的生成器逻辑是错误的:
s.upper() for s in string if s.lower()
and
s.lower() for s in string if s.upper()
第一部分是带条件的生成器 - 除了 if s.lower()
之外都可以。
第二部分也是生成器。
现在它只是第一个生成器的复杂条件(if
... and
...)
已经有一个方法可以做到这一点。
s = 'HelLo'
print(s.swapcase())
'hELlO'
What am I doing wrong, why isn't my code working?
虽然好的 python 代码可以看起来像(可执行的)伪代码并且读起来很像英语,但仅用英语说明您想做什么并期望 Python 做正确的事情是行不通的。不工作。 ;-)
特别是
中的关键字and
s.upper() for s in string if s.lower() and s.lower() for s in string if s.upper()
并不像您认为的那样。 and
是一个布尔运算符,其工作方式如下:
True and True == True
True and False == False
False and True == False
False and False == False
在字符串上使用它(就像你在这里做的那样)会产生一个可能令人惊讶的结果:
"foo" and "bar" == "bar"
"" and "bar" == ""
请参阅其他答案以了解该怎么做。