Простой код в Python для изменения верхнего и нижнего регистра - PullRequest
0 голосов
/ 12 января 2020

Я хочу использовать аргументы * для ввода имени и изменения четных чисел для символа на верхний регистр и нечетного символа на строчный. Например, 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

Ответы [ 3 ]

2 голосов
/ 12 января 2020

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')
0 голосов
/ 12 января 2020

Вы можете перебрать свою строку следующим образом:

Код:

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
0 голосов
/ 12 января 2020

Вы передаете переменную args с *. Это означает, что вы передаете список аргументов. Итак, когда вы пишете myfunc1('My Name'), функция получает в качестве аргумента строку 'My Name' и пустой аргумент. Поэтому, когда вы перебираете аргументы, первый for будет работать над «Моим именем», а второй for будет работать над пустым аргументом. Решение простое, удалите * из объявления вашей функции.

...