1

我正在尝试创建一个代码,将输入字符串替换为“匿名”代码。我想用“X”替换所有大写字符,用“x”替换所有小写字符,同时保持任何空格或符号相同。

我理解<< variable >>.replace<< old value, new value >>iffor循环,但是在实现它们来做我想做的事情时遇到了麻烦,请帮忙?

抱歉,如果我发布的代码不正确,我是新手

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

2 回答 2

1

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.suband "[A-Z]", "X",例如,但这取决于您了解它们是如何工作的

于 2018-10-28T22:39:37.367 回答
1

有标准函数可以指示字符是大写还是小写。这些是 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."
于 2018-10-28T22:41:24.353 回答