s、 replace()调用在Python中无效

2024-09-27 19:29:35 发布

您现在位置:Python中文网/ 问答频道 /正文

s = input()
s.lower()
for i in range (0, len(s)):
    if(s[i] in "aoyeui"):
        s.replace(s[i], '')
for i in range(0, len(s)):
    s.replace(s[i], '.' + s[i])
print(s) 

此代码应删除所有元音,并按“.”分隔字符串


Tags: 字符串代码inforinputlenifrange
3条回答

s.lower()应该分配给s,否则原始字符串将保持不变。你知道吗

我重写了一个工作代码。希望它能帮助您:

s = str(input("Text: "))
s = s.lower()
t =""
for char in s:
    if char not in "aoyeui":
        t+=char

t = t.split('.')

for i in t:
    print(i) 

让我们逐行注释:

    s = input ()  #wrong indentation
s.lower()      #  you have to assign it to s. 
for i in range (0, len(s)):  # range(0, x) is the same as range(x)
    if (s[i] in "aoyeui"): #  ok 
        s.replace(s[i], '')  # strings are not mutable so replace does not modify the string. You have to assign it to s
# splitting can be done much easier :)
for i in range(0, len(s)):  
    s.replace(s[i], '.' + s[i])  # again you have to assign
print(s)  # ok

我也注意到你的代码还有一个问题。当替换元音时,字符串长度会发生变化,并可能导致多个问题。当长度改变时,通常不应该按索引进行迭代。所以正确的代码应该是这样的:

s = input ()
s = s.lower()
for vowel in "aoyeui":
        s = s.replace(vowel, '')
s = '.'.join(list(s))  # this is how to separate each character with a dot (much easier eh?)
print(s)

str是不可变的。它上的所有操作都会创建一个新的str。你知道吗

当您使用replace时,您想重新分配s。或lower。你知道吗

s = s.lower()

s = s.replace(s[i], '')

相关问题 更多 >

    热门问题