3 回答

TA贡献1863条经验 获得超2个赞
Python 中的字符串是不可变的,这意味着一旦将字符串变量分配给字符串(例如a ='Hello'),与列表对象不同,字符串的内容不能更改。在上面的代码中,您正在以某种方式转换字符串而不是更改字符串变量的内容。
a=input()
for i in a:
if i.isupper():
print (i.lower(),end='')
else:
print (i.upper(),end='')
print(a)
如果您运行此代码,您将看到 a 的值与您输入的值相同。字符串方法 lower() 和 upper() 只返回字符串的副本。

TA贡献1828条经验 获得超3个赞
str.lower,str.upper和其他字符串操作返回副本。他们没有就地工作。您可以通过阅读文档自行检查;例如:
str.lower()
返回所有大小写字符转换为小写的字符串副本。
这里的副本意味着一个新字符串,而不是原地变异的旧字符串。您还可以通过在变异后打印字符串来进一步验证这一点:
x = 'HELLO'
y = x.lower()
print(x) # 'HELLO'

TA贡献1852条经验 获得超1个赞
它们是不可变的。例如
text = 'hello'
text.upper()
print(text) # hello
尽管您调用upper了该text变量,但它的值并没有改变。与可变的列表对比
lst = [1,2,3]
lst.append(4)
print(lst) # [1,2,3,4]
添加回答
举报