所以我正在为我的家庭作业努力工作,并遇到了另一个错误。
原文:
word = 'banana'
count = 0
for letter in word:
if letter == 'a':
count = count + 1
print count
确定。看起来很简单。
然后我在函数名 count 中使用了这段代码并对其进行了一般化,以便它接受字符串和字母作为参数。
def count1(str, letter):
count = 0
word = str
for specific_letter in word:
if specific_letter == letter:
count = count + 1
print count
这是我仍然不确定我做错了什么。
我必须重写这个函数,以便它不使用遍历字符串,而是使用上一节中的三参数find。这是:
def find(word, letter, startat):
index = startat
while index <= len(word):
if word[index] == letter:
return index
index = index + 1
return -1
这是我得到了多远......但程序不能按照我想要的方式工作。
def find(str, letter, startat):
index = startat
word = str
count = 0
while index <= len(word):
if word[index] == letter:
for specific_letter in word:
if specific_letter == letter:
count = count + 1
print count
index = index + 1
有人能指出我正确的方向吗?我想知道我在做什么,而不仅仅是给出答案。感谢。
答案 0 :(得分:3)
练习的目的是使用先前定义的函数find
作为构建块来实现新函数count
。因此,当您出错时,尝试重新定义find
,当您尝试更改count
的实施时。
然而,由于您提出的find
有轻微错误,您需要将<=
更改为<
以使其正常工作。使用<=
,您可以使用index == len(word)
输入循环体,这将导致IndexError: string index out of range
。
首先修复find
函数:
def find(word, letter, startat):
index = startat
while index < len(word):
if word[index] == letter:
return index
index = index + 1
return -1
然后重新实施count
,这次在正文中使用find
:
def count(word, letter):
result = 0
startat = 0
while startat < len(word):
next_letter_position = find(word, letter, startat)
if next_letter_position != -1:
result += 1
startat = next_letter_position + 1
else:
break
return result
if __name__ == '__main__':
print count('banana', 'a')
答案 1 :(得分:1)
这个想法是使用find来找到给定字母的下一个索引。
在您的代码中,您不使用查找功能。
答案 2 :(得分:1)
如果你想尝试一些有趣和pythonic的东西:将原来的find
更改为yield index
并删除最终的return -1
。哦,并修复<=
错误:
def find(word, letter, startat):
index = startat
while index < len(word):
if word[index] == letter:
yield index
index = index + 1
print list(find('hello', 'l', 0))
现在find
会返回所有的结果。您可以像我在示例中使用它一样使用它或使用for position in find(...):
您也可以根据结果的长度简单地编写count
。
(对不起,你的问题中没有关于最终功能的提示,因为我无法告诉你你想要做什么。看起来你可能会留下太多的原始功能并将它们的目的混杂在一起?)
答案 3 :(得分:0)
这就是我想出的:这应该有效。
def find(word, letter, startat)
index = startat
count = 0
while index < len(word):
if word[index] == letter:
count = count + 1 ##This counts when letter matches the char in word
index = index + 1
print count
>>> find('banana', 'a', 0)
3
>>> find('banana', 'n', 0)
2
>>> find('mississippi', 's', 0)
4
>>>
答案 4 :(得分:0)
尝试使用:
spring.profiles.active