函数用于检查变量的字符串是否以元音开头?
我正在做一种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)
变量后
,但它不会做任何事情的话。 我可以对此做些什么改变以使其发挥作用?
函数的'变量'参数是单词noun1,noun2,nound2的副本。你确实修改'变量',但它不修改名词。
尝试,而不是:
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中,函数参数是按值传递,而不是参考。所以你只是改变本地变量variable
,而不是传入的字符串。
尝试类似:
def vowelcheck(word):
if word[0] in "aeiou":
return "an " + word
else:
return "a " + word
noun1 = vowelcheck(noun1)
noun2 = vowelcheck(noun2)
noun3 = vowelcheck(noun3)
您按值传递参数,但传递的值是引用。当你调用'vowelcheck(noun1)'时,你传递一个对'noun1'引用的对象的引用。如果'noun1'是一个可变对象,则函数返回后将看到该对象的更改。我明白你的意思,但我相信措辞不清。 – spectras
如果定义'variable''名词1',我不会得到这个:'noun1 ='door''然后'print vowelcheck(noun1)'会输出'a door' –
你的函数不返回任何东西,它的输入是不可改变的,因此,你的功能是没有效果。 –