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

相关推荐
牛奔2 小时前
Go 如何避免频繁抢占?
开发语言·后端·golang
寻星探路6 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
lly2024068 小时前
Bootstrap 警告框
开发语言
2601_949146538 小时前
C语言语音通知接口接入教程:如何使用C语言直接调用语音预警API
c语言·开发语言
曹牧8 小时前
Spring Boot:如何测试Java Controller中的POST请求?
java·开发语言
KYGALYX8 小时前
服务异步通信
开发语言·后端·微服务·ruby
zmzb01038 小时前
C++课后习题训练记录Day98
开发语言·c++
ValhallaCoder9 小时前
hot100-二叉树I
数据结构·python·算法·二叉树
猫头虎9 小时前
如何排查并解决项目启动时报错Error encountered while processing: java.io.IOException: closed 的问题
java·开发语言·jvm·spring boot·python·开源·maven
YUJIANYUE10 小时前
PHP纹路验证码
开发语言·php