【问题标题】:Simple Code in Python to change the Upper Case and Lower CasePython中用于更改大写和小写的简单代码
【发布时间】:2020-04-29 06:00:43
【问题描述】:

我想使用 *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 可以是参数列表。您正在发送一个参数“我的名字”。它可以比“我的名字”、“你的名字”更多。因此,当您执行 args[i] 时,您只会得到每个 args,在本例中为“我的名字”。你需要应用你在另一个循环中应用的逻辑。
  • 为什么你使用*args 并将string 传递给你的函数? myfunc1('My Name', 'str1', 'str2')这是*args的用法

标签: python python-3.x uppercase lowercase


【解决方案1】:

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')

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      代码:

      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
      

      【讨论】:

        猜你喜欢
        • 2014-11-04
        • 1970-01-01
        • 2019-04-12
        • 1970-01-01
        • 1970-01-01
        • 2015-08-24
        • 1970-01-01
        • 2014-04-23
        • 2019-07-03
        相关资源
        最近更新 更多