在Python中将小写字符更改为大写字符,反之亦然
我试图编写一个函数,给定一个字符串返回另一个字符串,该字符串将其小写字符转换为大写,反之亦然 我目前的建议如下:在Python中将小写字符更改为大写字符,反之亦然,python,string,Python,String,我试图编写一个函数,给定一个字符串返回另一个字符串,该字符串将其小写字符转换为大写,反之亦然 我目前的建议如下: def swap_case(s): word = [] for char in s: word.append(char) for char in word: if char.islower(): char.upper() else: char.lower()
def swap_case(s):
word = []
for char in s:
word.append(char)
for char in word:
if char.islower():
char.upper()
else:
char.lower()
str1 = ''.join(word)
但是字符串实际上并没有改变,我应该如何改变循环中的字符来实现这一点
PS:我知道s.swapcase()可以很容易地解决这个问题,但我想在for循环期间更改字符串中的字符。您的代码不起作用,因为在转换字符后您没有存储字符。您创建了一个包含所有字符的列表,然后访问这些值,而不实际保存它们。另外,您应该让函数返回str1,否则永远不会得到结果。这里有一个解决方法:
def swap_case(s):
swapped = []
for char in s:
if char.islower():
swapped.append(char.upper())
elif char.isupper():
swapped.append(char.lower())
else:
swapped.append(char)
return ''.join(swapped)
def swap_case(s):
word = []
for char in s:
if char.islower():
word.append(char.upper())
else:
word.append(char.lower())
str1 = ''.join(word)
return str1
顺便说一句,我知道您希望使用for循环来执行此操作,但您应该知道有更好的方法来执行此操作,这将更具python风格。您的代码不起作用,因为您在转换字符后没有存储它们。您创建了一个包含所有字符的列表,然后访问这些值,而不实际保存它们。另外,您应该让函数返回str1,否则永远不会得到结果。这里有一个解决方法:
def swap_case(s):
word = []
for char in s:
if char.islower():
word.append(char.upper())
else:
word.append(char.lower())
str1 = ''.join(word)
return str1
>>> name = 'Mr.Ed' or name= ["M","r",".","E","d"]
>>> ''.join(c.lower() if c.isupper() else c.upper() for c in name)
'mR.eD'
顺便说一句,我知道您希望使用for循环来执行此操作,但您应该知道有更好的方法来执行此操作,这将更具python风格。您可以使用swapcase
>>> name = 'Mr.Ed' or name= ["M","r",".","E","d"]
>>> ''.join(c.lower() if c.isupper() else c.upper() for c in name)
'mR.eD'
返回s的副本,但将小写字母转换为大写字母,反之亦然
来源:您可以使用swapcase
返回s的副本,但将小写字母转换为大写字母,反之亦然
来源:字符串在Python中是不可变的。您正在尝试进行适当的更改,但这将不起作用。您必须将结果存储在一个新变量中。是的,我知道,这就是为什么创建列表“word”并将原始字符串中的每个字符存储在其中的原因,我正在尝试更改列表,而不是字符串。您正在执行
char.upper()
和char.lower()
。您没有将结果存储在任何位置。因此,为什么看起来您要在适当的位置执行此操作。char.upper()
返回大写字符,但不改变原始值。也许您应该编辑您的问题,因为这不是您的意思:“但我想在for循环期间改变字符串内的字符。”但是,答案仍然是字符串是不可变的,您永远不会更改列表中的任何内容。顺便说一句,要将字符串的各个字符放入列表中,只需使用word=list
字符串在Python中是不可变的。您正在尝试进行适当的更改,但这将不起作用。您必须将结果存储在一个新变量中。是的,我知道,这就是为什么创建列表“word”并将原始字符串中的每个字符存储在其中的原因,我正在尝试更改列表,而不是字符串。您正在执行char.upper()
和char.lower()
。您没有将结果存储在任何位置。因此,为什么看起来您要在适当的位置执行此操作。char.upper()
返回大写字符,但不改变原始值。也许您应该编辑您的问题,因为这不是您的意思:“但我想在for循环期间改变字符串内的字符。”但是,答案仍然是字符串是不可变的,您永远不会更改列表中的任何内容。顺便说一句,要将字符串的各个字符放入列表中,只需使用word=list