Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中将小写字符更改为大写字符,反之亦然_Python_String - Fatal编程技术网

在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