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

题目一:
请编写一个函数,接收一个字符串作为参数,判断该字符串是否是回文字符串(正读和反读都一样),如果是回文字符串则返回True,否则返回False。不区分大小写和空格。

示例输入: "Racecar"
示例输出: True

解析:可以使用双指针法,一个指针从字符串的开头向后移动,另一个指针从字符串的末尾向前移动,比较两个指针指向的字符是否相等,直到两个指针相遇或交叉。

 

python

def is_palindrome(s): s = s.lower().replace(" ", "") # 将字符串转换为小写并去除空格 left = 0 right = len(s) - 1 while left < right: if s[left] != s[right]: return False left += 1 right -= 1 return True # 测试 print(is_palindrome("Racecar")) # True print(is_palindrome("Python")) # False

题目二:
请编写一个函数,接收一个列表作为参数,返回该列表中的最大值和最小值。

示例输入: [5, 3, 9, 2, 7]
示例输出: 最大值:9,最小值:2

解析:可以使用内置函数max()min()来获取列表中的最大值和最小值。

 

python

def find_max_min(lst): max_val = max(lst) min_val = min(lst) return max_val, min_val # 测试 result = find_max_min([5, 3, 9, 2, 7]) print("最大值:", result[0]) # 9 print("最小值:", result[1]) # 2

题目三:
请编写一个函数,接收一个整数n作为参数,返回从1到n之间所有奇数的列表。

示例输入: 10
示例输出: [1, 3, 5, 7, 9]

解析:可以使用列表推导式来生成奇数列表。

 

python

def find_odd_numbers(n): return [x for x in range(1, n+1) if x % 2 != 0] # 测试 print(find_odd_numbers(10)) # [1, 3, 5, 7, 9]

题目四:
请编写一个函数,接收一个字符串作为参数,返回该字符串中的所有数字之和。

示例输入: "abc123def456"
示例输出: 579

解析:可以使用正则表达式来匹配字符串中的数字,并使用sum()函数计算数字之和。

 

python

import re def sum_of_numbers(s): numbers = re.findall(r'\d+', s) return sum(map(int, numbers)) # 测试 print(sum_of_numbers("abc123def456")) # 579

题目五:
请编写一个函数,接收一个字符串作为参数,返回该字符串中每个字符出现的次数。

示例输入: "hello"
示例输出: {'h': 1, 'e': 1, 'l': 2, 'o': 1}

解析:可以使用字典来记录每个字符出现的次数。

 

python

def count_characters(s): char_count = {} for char in s: char_count[char] = char_count.get(char, 0) + 1 return char_count # 测试 print(count_characters("hello")) # {'h': 1, 'e': 1, 'l': 2, 'o': 1}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值