Python Letter Changer

时间:2014-02-17 16:02:22

标签: python list random function

我正在开发一个从任何变量(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)

2 个答案:

答案 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()或明确处理大写。

最后,不是元音的东西是辅音。