我目前正在上Python课程,并参阅了本书中关于功能的章节。 (请注意,这是我第一次学习任何编程。)
我目前正在进行的一项练习要求我将一堆条件语句转换为一个函数(即泛化)。
为了简短起见,我的问题是:
在我定义一个函数后,让我们这样说......
def count_letter(letter,string):
count = 0
for letter in string:
count += 1
print(count)
(据我记忆,这是我为问题输入的内容。)
我运行程序,然后像往常一样调用shell中的函数......
(以下示例)
>>> count_letter(a,bananana)
我得到以下输出......
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
count_letter(a,bananana)
NameError: name 'a' is not defined
我的老师和班上的每个人都无法弄清楚我们为什么会出现这样的错误。我们会理解它是否是某种其他类型的错误,但让shell告诉我们一个参数是“未定义的”#39; (即我们理解错误的变量)是我们无法弄清楚的。
我们一直盯着代码一周,仍然无法弄清楚。
非常感谢任何帮助。
事后的想法:我试图计算&#34; bananana&#34;中的&#34; a&#34; s&#34; bananana&#34;在示例中。我想我应该清楚那里的含糊不清。
答案 0 :(得分:3)
如上所述,a
和bananana
是变量的名称,应以与定义变量count
类似的方式定义。例如:
>>> character_to_search = 'l'
>>> text = 'Hello World'
>>> count_letter(character_to_search, text)
将是正确的语法,因为character_to_search
和text
都未定义。
另一种可能性是,不是使用实际变量,而是将字符串直接传递给函数。在这种情况下,您的语法稍有不正确。它应该是(注意单引号):
count_letter('a', 'bananana')