我需要用字母p代替一个句子的所有辅音。
我已经在下面尝试了这段代码,但是很遗憾,这无法正常工作,我不习惯此功能(str.replace()
),而我正在开始python课程。
x=str(input())
y=x.split()
cons="bcdfghjklmnpqrstvwxyz"
if cons in y:
x.replace(cons,"p")
print(y)
帮助。
答案 0 :(得分:0)
您需要做的是循环遍历cons
变量中的每个字母,然后尝试替换它。我应该指出,str.replace()
方法无法就地工作,因此您必须将结果分配回x
:
...
for c in cons:
x = x.replace(c, 'p')
您说您是Python的新手。在上面的代码中,for
循环将遍历字符串中的每个字母,并且在每个“迭代”中,将变量c
设置为字符串中的下一个字母。
答案 1 :(得分:0)
if cons in y
测试cons
中的整个字符串是否为y
的元素之一。但是y
的元素都只是单个字符,而不是长字符串。
您需要遍历y
中的每个字符,然后测试该字符是否在cons
中。
for index, letter in enumerate(y):
if letter in cons:
y[index] = 'p'
x = "".join(y)
print(x)
或者您也可以循环cons
并替换x
中的每个字母。您需要将x.replace
的结果分配回x
; Python中的字符串是不可变的,因此它将返回一个新字符串,而不会修改原始字符串。
for letter in cons:
x = x.replace(letter, "p")
print(x)
您还可以使用正则表达式一步完成整个事情:
import re
x = re.replace(r'[bcdfghjklmnpqrstvwxyz]', 'p', x)
print(x)
顺便说一句,您不需要写str(input())
。 input()
始终在Python 3中返回字符串。
答案 2 :(得分:0)
为什么在每个循环中打印y
,您甚至都不会触摸y
。
y
完全独立于x
。当您执行y=x.split()
时,将创建一个新列表,并由y
引用。 x
和y
之间将不再有关联。
此外,cons in y
将测试cons
中是否包含整个y
字符串。
您可以轻松得多,无需创建y
。 replace
可以直接对您的字符串进行操作。
x = input()
cons = "bcdfghjklmnpqrstvwxyz"
for con in cons:
x = x.replace(con, "p")
print(x)
答案 3 :(得分:0)
您只需在字符串中找到辅音的出现,然后将其替换为p。遍历辅音列表并运行replace
。如果字符串中存在辅音,它将替换它。
x = str(input())
cons="bcdfghjklmnpqrstvwxyz"
for elem in cons:
x = x.replace(elem, p)
print(x)