练习python题目小记(七)

一,单词字母替换

题目要求是编写一串代码,将输入的字符串中的字母改成它在字母表中的下一个

解题的代码是:

def shift_char(word):

result = []

for ch in word:

next_ch = chr(ord(ch) + 1)

result.append(next_ch)

return ''.join(result)

word = input()

print(shift_char(word))

next_ch = chr(ord(ch) + 1)解释一下这串代码,ord是将括号中的东西转化成它相应的Unicode 码,然后加一,就是变成下一个,最后使用chr再将Unicode 码变成对应的字母。

二,缺失数字之和

def sum_missing_numbers(nums):

if not nums:

return 0

lo, hi = min(nums), max(nums)

return sum(range(lo, hi + 1)) - sum(nums)

nums = list(map(int, input().split()))

print(sum_missing_numbers(nums))

题目的要求就是我们输入一个列表,然后找出最小值和最大值,并找出之前缺失的数字。上述是解题的代码。

需要注意的是, lo, hi = min(nums), max(nums)中的多重赋值,还有range是左闭右开的。

三,字符串中缺失的字母

题目要求是:将输入的字符串中的字母与字母表中的进行对应,并且输出缺失的部分。

解题的代码:

def get_missing_letters(word_string):

all_letters = set('abcdefghijklmnopqrstuvwxyz')

existed = set(word_string)

missing = sorted(all_letters - existed)

return ''.join(missing)

word_string = input()

print(get_missing_letters(word_string))

代码没什么好说的,主要讲解一下解题的思路,就是将字母表和输入的字符串全部转化为集合,然后求两者的差集,最后即可得到答案。

四,子列表的数量

题目要求:计算列表中子列表的数量是多少。

解题的关键代码:

return sum(isinstance(item, list) for item in list_input)

重点讲解一下isinstance这个玩意的用法:

方法原型是这样的:isinstance(obj, classinfo)

前一个参数是任何一个对象,后面的是一种类型或者类型元组,作用是检查前面的对象是不是后面的那一种或多种类型。

举两个栗子:

五,重复字符的数量

题目要求是返回一个字符串中重复出现的字母的个数。

解题代码:

from collections import Counter

def count_duplicate_chars(input_string):

counts = Counter(input_string)

return sum(1 for cnt in counts.values() if cnt >= 2)

test_string = input()

result = count_duplicate_chars(test_string)

print(result)

解题思路:首先引入Counter工具对每个字母的出现次数进行计算,然后通过找出每个字母出现的次数的值,来判断重复出现的字母有多少个。

需要注意的是使用Counter的时候首先需要先从工具箱里面掏出来,其次记得counts.values() 的用法是取值(Counter的输出结果类似于字典,但是不是字典,而是一个字典-like 对象(就是在行为上像字典的玩意,实际上counter是一种映射容器))

六,字符出现的次数

题目要求是计算一个英语句子中每个单词出现某个字母的次数。

解题代码:

char = char.lower()

words = sentence.split()

return [word.lower().count(char) for word in words]

着重注意一下split和count的使用方法。

七,完美数

解题的代码:

def check_perfect(num):

if num < 2:

return False

factor_sum = 1

for i in range(2, int(num ** 0.5) + 1):

if num % i == 0:

factor_sum += i

counterpart = num // i

if counterpart != i:

factor_sum += counterpart

return factor_sum == num

num = int(input())

print(check_perfect(num))

题目的要求是判断用户输入的数是不是完美数(所有因子相加等于这个数),主要注意一下这道题目的算法,以及num ** 0.5的使用(**是python中的幂运算符)

相关推荐
island1314几秒前
CANN GE(图引擎)深度解析:计算图优化管线、内存静态规划与异构 Stream 调度机制
c语言·开发语言·神经网络
曹牧4 分钟前
Spring Boot:如何在Java Controller中处理POST请求?
java·开发语言
浅念-7 分钟前
C++入门(2)
开发语言·c++·经验分享·笔记·学习
WeiXiao_Hyy8 分钟前
成为 Top 1% 的工程师
java·开发语言·javascript·经验分享·后端
ZH15455891318 分钟前
Flutter for OpenHarmony Python学习助手实战:面向对象编程实战的实现
python·学习·flutter
玄同7659 分钟前
SQLite + LLM:大模型应用落地的轻量级数据存储方案
jvm·数据库·人工智能·python·语言模型·sqlite·知识图谱
User_芊芊君子14 分钟前
CANN010:PyASC Python编程接口—简化AI算子开发的Python框架
开发语言·人工智能·python
Max_uuc24 分钟前
【C++ 硬核】打破嵌入式 STL 禁忌:利用 std::pmr 在“栈”上运行 std::vector
开发语言·jvm·c++
白日做梦Q25 分钟前
Anchor-free检测器全解析:CenterNet vs FCOS
python·深度学习·神经网络·目标检测·机器学习
故事不长丨25 分钟前
C#线程同步:lock、Monitor、Mutex原理+用法+实战全解析
开发语言·算法·c#