题目一:
请编写一个函数,接收一个整数n作为参数,返回n的阶乘。
示例输入: 5
示例输出: 120
解析:可以使用递归或循环来计算n的阶乘。
python
def factorial(n): if n == 0: return 1 else: return n * factorial(n-1) # 测试 print(factorial(5)) # 120
题目二:
请编写一个函数,接收一个字符串作为参数,返回该字符串中的所有子串(包括空字符串)。
示例输入: "abc"
示例输出: ['', 'a', 'b', 'c', 'ab', 'bc', 'abc']
解析:可以使用嵌套循环来生成所有可能的子串。
python
def find_all_substrings(s): substrings = [] for i in range(len(s)+1): for j in range(i+1, len(s)+1): substrings.append(s[i:j]) return substrings # 测试 print(find_all_substrings("abc")) # ['', 'a', 'b', 'c', 'ab', 'bc', 'abc']
题目三:
请编写一个函数,接收一个整数n作为参数,返回第n个素数。
示例输入: 4
示例输出: 7
解析:可以使用循环和判断素数的方法来找到第n个素数。
python
def is_prime(num): if num < 2: return False for i in range(2, int(num**0.5)+1): if num % i == 0: return False return True def nth_prime(n): count = 0 num = 2 while count < n: if is_prime(num): count += 1 num += 1 return num - 1 # 测试 print(nth_prime(4)) # 7
题目四:
请编写一个函数,接收一个列表作为参数,返回该列表中的所有子列表(包括空列表)。
示例输入: [1, 2, 3]
示例输出: [[], [1], [2], [3], [1, 2], [2, 3], [1, 2, 3]]
解析:可以使用递归的方式生成所有可能的子列表。
python
def find_all_sublists(lst): if not lst: return [[]] sublists = find_all_sublists(lst[1:]) return sublists + [[lst[0]] + sublist for sublist in sublists] # 测试 print(find_all_sublists([1, 2, 3])) # [[], [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]]
题目五:
请编写一个函数,接收一个字符串作为参数,返回该字符串中的所有回文子串。
示例输入: "ababa"
示例输出: ['a', 'b', 'aba', 'aba', 'ababa']
解析:可以使用嵌套循环和判断回文字符串的方法来找到所有回文子串。
python
def is_palindrome(s): return s == s[::-1] def find_all_palindromic_substrings(s): palindromes = [] for i in range(len(s)): for j in range(i+1, len(s)+1): if is_palindrome(s[i:j]): palindromes.append(s[i:j]) return palindromes # 测试 print(find_all_palindromic_substrings("ababa")) # ['a', 'b', 'aba', 'aba', 'ababa']