Python每日五道练手试题以及日常解析(八)

题目一:
请编写一个函数,接收一个整数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']

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值