练习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中的幂运算符)

相关推荐
七夜zippoe8 分钟前
可解释AI:构建可信的机器学习系统——反事实解释与概念激活实战
人工智能·python·机器学习·可解释性·概念激活
csdn_aspnet21 分钟前
C# 求n边凸多边形的对角线数量(Find number of diagonals in n sided convex polygon)
开发语言·算法·c#
qq_2546744137 分钟前
Docker 中的 镜像(
开发语言
码云社区1 小时前
JAVA二手车交易二手车市场系统源码支持微信小程序+微信公众号+H5+APP
java·开发语言·微信小程序·二手交易·闲置回收
crescent_悦1 小时前
C++:The Largest Generation
java·开发语言·c++
Lyyaoo.2 小时前
【JAVA基础面经】抽象类/方法与接口
java·开发语言
0xDevNull2 小时前
Java实现Redis延迟队列:从原理到高可用架构
java·开发语言·后端
糖炒栗子03262 小时前
Go 语言环境搭建与版本管理指南 (2026)
开发语言·后端·golang
于先生吖2 小时前
无人共享健身房 Java 后端源码 + 多端对接完整方案
java·开发语言
cpp_learners3 小时前
银河麒麟V10+飞腾FT-2000/4处理器+QT源码静态编译5.14.2指南
开发语言·qt