Python 用于检查变量';s字符串以元音开头?

Python 用于检查变量';s字符串以元音开头?,python,Python,我正在做一种MadLibs的事情,我需要检查我的三个变量是否以元音开头,然后在前面加上“a”或“an”。 我有这个 def vowelcheck(variable): if variable[0] == "a" or variable[0] == "e" or variable[0] == "i" or variable[0] == "o" or variable[0] == "u": variable = "an " + variable else:

我正在做一种MadLibs的事情,我需要检查我的三个变量是否以元音开头,然后在前面加上“a”或“an”。 我有这个

def vowelcheck(variable):
    if variable[0] == "a" or variable[0] == "e" or variable[0] == "i" or variable[0] == "o" or variable[0] == "u":
        variable = "an " + variable
    else:
        variable = "a " + variable;
然后

vowelcheck(noun1)
vowelcheck(noun2)
vowelcheck(noun3)
在变量之后,但它对单词没有任何作用。
关于这一点,我可以做些什么来让它工作?

函数的“variable”参数是noun1、noun2、nound2这几个词的副本。您确实修改了“variable”,但它不修改名词

请尝试:

def vowelcheck(variable):
    if variable[0] == "a" or variable[0] == "e" or variable[0] == "i" or variable[0] == "o" or variable[0] == "u":
        variable = "an " + variable
    else:
        variable = "a " + variable
    return variable

noun1, noun2, noun3 = (vowelcheck(noun1), vowelcheck(noun2), vowelcheck(noun3))

在Python中,函数参数是通过值传递的,而不是通过引用传递的。因此,您只更改局部变量
变量
,而不是传入的字符串

尝试以下方法:

def vowelcheck(word):
    if word[0] in "aeiou":
        return "an " + word
    else:
        return "a " + word


noun1 = vowelcheck(noun1)
noun2 = vowelcheck(noun2)
noun3 = vowelcheck(noun3)

您的函数不返回任何内容,并且其输入是不可变的,因此您的函数无效。您可以按值传递参数,但传递的值是引用。调用
元音检查(noun1)
时,传递对
noun1
引用的对象的引用。如果
noun1
是一个可变对象,那么在函数返回后将看到对该对象的更改。我理解你的意思,但我相信措辞不清楚。我不完全明白这一点,如果
变量
noun1
被定义为:
noun1='door'
,那么
打印元音检查(noun1)
将输出
a door