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

相关推荐
aini_lovee1 小时前
基于UERD算法的JPEG图像隐写MATLAB实现
开发语言·算法·matlab
繁华似锦respect1 小时前
HTTPS 中 TLS 协议详细过程 + 数字证书/签名深度解析
开发语言·c++·网络协议·http·单例模式·设计模式·https
qq_356196951 小时前
day27pipeline管道@浙大疏锦行
python
坐吃山猪1 小时前
Electron03-桌面文件夹
开发语言·javascript·ecmascript
我命由我123451 小时前
微信小程序 - 内容弹出框实现(Vant Weapp 实现、原生实现)
开发语言·前端·javascript·微信小程序·小程序·前端框架·js
噔噔噔噔@1 小时前
第一章、基础理论——第一节、软件测试概述
python·单元测试·压力测试
豐儀麟阁贵1 小时前
8.6运行时异常
java·开发语言
冷雨夜中漫步1 小时前
AI入坑之路——(1)搭建本地的Python与Jupyter开发环境
人工智能·python·jupyter
CRUD酱1 小时前
RabbitMQ是如何确保消息的可靠性的?
java·python·rabbitmq