Python 中用于更改大写和小写的简单代码

Simple Code in Python to change the Upper Case and Lower Case

我想使用 *args 输入名称并将字符的偶数更改为大写,将奇数字符更改为小写。例如,Myname -> MyNaMe

我使用了以下代码进行操作。但它将所有字符输出为大写。 (如果我在 myfunc1(x) 下添加任何随机变量,那么它工作正常。)

使用 *args :

def myfunc1(*args):
    result=''
    for i in range(0,len(args)):
        if i%2==0:
            result+=args[i].upper()
        else:
            result+=args[i].lower()
    print(result)

myfunc1('My Name') # prints "MY NAME"

使用随机变量:

def myfunc1(my_string):
    result=''
    for i in range(0,len(my_string)):
        if i%2==0:
            result+=my_string[i].upper()
        else:
            result+=my_string[i].lower()
    print(result)

myfunc1('Myname') # prints MyNaMe

args 是参数列表。由于您要发送 1 个参数,args=('My Name',).

正确的代码

def myfunc1(*args):
    result=''
    for i in range(0,len(args[0])):
        if i%2==0:
            result+=args[0][i].upper()
        else:
            result+=args[0][i].lower()
    print(result)

myfunc1('My Name')

您正在使用 * 传递 args 变量。这意味着您正在传递一个参数列表。因此,当您编写 myfunc1('My Name') 时,该函数将字符串 'My Name' 和一个空参数作为参数。因此,当您迭代 args 时,第一个 for 将处理 'My name' 而第二个 for 将处理空参数。解决方案很简单,从函数声明中删除 *

您可以像这样遍历您的字符串:

代码:

def myfunc1(my_string):
    print(''.join([char.upper() if idx % 2 == 0 else char.lower() for idx, char in enumerate(my_string)]))

myfunc1("My Name")

输出:

> My nAmE