Замените все символы в верхнем регистре на «X», а все символы в нижнем регистре на «x», оставив при этом все пробелы или символы одинаковыми. - PullRequest
0 голосов
/ 29 октября 2018

Я пытаюсь создать код, в котором я подставляю входную строку в «анонимный» код. Я хотел бы заменить все символы в верхнем регистре на «X», а все символы в нижнем регистре на «x», оставив при этом все пробелы или символы одинаковыми.

Я понимаю << переменная >>. Replace << старое значение, новое значение >> и , если и для циклов , но возникли проблемы при реализации им делать то, что я хочу, пожалуйста, помогите?

Извините, если код, который я разместил, неправильный, я новичок в этом

input_string   =  input( "Enter a string (e.g. your name): " ) 
lower = "abcdefghijklmnopqrstuvwxyz"
upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

for input in input_string:
    if input in input_string:
        input_string = lower.replace(input, "x")

    if input in upper:
        input_string = upper.replace(input, "X")`

print( "The anonymous version of the string is:", input_string )

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Существуют стандартные функции для обозначения символа в верхнем регистре или в нижнем регистре . Они поддерживают Unicode (в Python 3 и новее), поэтому они также работают с акцентированными символами. Так что вы можете использовать

''.join('x' if x.islower() else 'X' if x.isupper() else x for x in text)

где text - ваша входная строка. Например,

input_string   =  input( "Enter a string (e.g. your name): " ) 
result = ''.join('x' if x.islower() else 'X' if x.isupper() else x for x in input_string)

со входом

I am trying to create a code where I substitute an input string into an 'anonymous' code.

результат в

"X xx xxxxxx xx xxxxxx x xxxx xxxxx X xxxxxxxxxx xx xxxxx xxxxxx xxxx xx 'xxxxxxxxx' xxxx."
0 голосов
/ 29 октября 2018

Строки в python являются неизменяемыми, поэтому вам нужно будет создать новую, зацикливая ввод.

В вашем коде lower.replace(input, "x") этого не делает - это говорит о замене содержимого алфавита, чьи символы соответствуют вашему вводу, на x.Другими словами, вы хотели вместо этого сделать input.replace, но явно не пытались вставить весь алфавит.


Вот пример, который проверяет регистр символов без ввода алфавита

input_string = input( "Enter a string (e.g. your name): " ) 
output_string = []

for c in input_string: 
    if c.isupper(): 
        output_string.append('X')
    elif c.islower(): 
        output_string.append('x')
    else:
        output_string.append(c) 
print( "The anonymous version of the string is:", ''.join(output_string))

Другим решением будет использование, например, re.sub и "[A-Z]", "X"но это зависит от вас, чтобы узнать, как они работают

...