我正在开发一个从任何变量(var,var2)获取字符串并将元音更改为任意随机元音的程序。我试图这样做,但我的代码不起作用,它总是打印出没有元音。
import random
alph = list('abcdefgkijklmnopqrstuvwxyz')
vow = list('aeiou')
Alphabet = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p', 'q' ,'r' ,'s', 't', 'u', 'v', 'w', 'x' ,'y','z']
Vowels = ['a', 'e', 'i', 'o', 'u']
Consences = ['b','c','d','f','g','h','j','k','l','m','n','p', 'q' ,'r' ,'s', 't', 'v', 'w', 'x' ,'y','z']
ranVowel= random.choice(Vowels)
print(ranVowel)
var2 = ['i']
var = list("cat")
def ifVowel(x):
if (Vowels in x):
print 'there is a vowel'
var[var.index(vow)] = ranVowel
elif (Vowels not in x):
print 'there is no vowel'
else: print 'no vowels'
ifVowel(var2)
答案 0 :(得分:3)
可以使用re
替换函数...,例如:
>>> import re, random
>>> vowels = 'aeiou'
>>> text = 'this is something with vowels in'
>>> re.sub('[aeiou]', lambda L: random.choice(vowels), text, flags=re.I)
'thos is semithung wath vawuls in'
答案 1 :(得分:3)
你的考试
if (Vowels in x):
正在检查整个列表Vowels = ['a', 'e', 'i', 'o', 'u']
是否为in x
,并且可能永远不会是True
。相反,你想要:
if any(vowel in x for vowel in Vowels):
单独测试每一个。还
var[var.index(vow)] = ranVowel
只会替换第一个元音。您需要遍历字符串以替换所有元音,例如:
replaced = "".join(c if c not in Vowels else random.choice(Vowels) for c in x)
请注意,所有这些只适用于小写,因此您可能希望使用x.lower()
或明确处理大写。
最后,不是元音的东西是辅音。