Python练习:大海捞针
Python练习:大海捞针
题目
你能大海捞针吗?
编写一个函数 findNeedle()
,接收一个充满垃圾但包含一个 "needle"
的 array
函数找到针后,应返回一条信息(字符串),内容如下:
"found the needle at position "
加上 index
,它就找到了针,所以:
示例(输入 --> 输出):
["hay", "junk", "hay", "hay", "moreJunk", "needle", "randomJunk"] --> "found the needle at position 5"
注:在 COBOL 中,应返回 "found the needle at position 6"
代码
def find_needle(haystack):
if "needle" in haystack:
index = haystack.index("needle")
return "found the needle at position " + str(index)
else:
return "No needle in this haystack"
知识点:
函数定义:
def find_needle(haystack):
这行代码定义了一个名为find_needle
的函数,该函数接受一个参数haystack
。字符串操作:
"needle" in haystack
和haystack.index("needle")
这两行代码都涉及到了Python的字符串操作。in
关键字用于检查一个字符串是否包含另一个字符串。index
方法用于查找一个子串在一个更大的字符串中的位置。条件语句:
if "needle" in haystack:
和else:
这两行代码表示一个条件语句。Python使用if
、elif
和else
关键字来进行条件判断。返回语句:
return "found the needle at position " + str(index)
和return "No needle in this haystack"
这两行代码都是返回语句,它们定义了函数的返回值。字符串拼接:
"found the needle at position " + str(index)
这行代码展示了如何在Python中进行字符串拼接。+
运算符可以用于连接两个字符串,而str
函数可以将非字符串类型的变量转化为字符串。类型转换:
str(index)
这个表达式将整数index
转换为字符串,这是因为只有字符串才能与其他字符串进行拼接。
测试
import codewars_test as test
from solution import find_needle
@test.describe("Fixed Tests")
def fixed_tests():
@test.it('Basic Test Cases')
def basic_test_cases():
test.assert_equals(find_needle(['3', '123124234', None, 'needle', 'world', 'hay', 2, '3', True, False]), 'found the needle at position 3')
test.assert_equals(find_needle(['283497238987234', 'a dog', 'a cat', 'some random junk', 'a piece of hay', 'needle', 'something somebody lost a while ago']), 'found the needle at position 5')
test.assert_equals(find_needle([1,2,3,4,5,6,7,8,8,7,5,4,3,4,5,6,67,5,5,3,3,4,2,34,234,23,4,234,324,324,'needle',1,2,3,4,5,5,6,5,4,32,3,45,54]), 'found the needle at position 30')