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

相关推荐
宠..几秒前
VS Code SSH 远程连接 Ubuntu 并实现快速运行(C/C++示例)
java·运维·c语言·开发语言·c++·ubuntu·ssh
Omics Pro几秒前
免费!糖蛋白质组学数据分析
开发语言·深度学习·数据挖掘·数据分析·r语言·excel·知识图谱
WL_Aurora2 分钟前
Python 算法基础篇之排序算法(二):希尔、快速、归并
python·算法·排序算法
枫叶林FYL3 分钟前
【强化学习】2 大规模并行强化学习中的耦合策略优化:受控多样性驱动的样本高效探索
开发语言·php
chao1898444 分钟前
基于MATLAB的音频信号AM调制与解调实现
开发语言·matlab·音视频
雨落在了我的手上7 分钟前
初识java(八):数组的定义与使用
java·开发语言
贵州晓智信息科技7 分钟前
曼德勃罗集的 Three.js 实现
开发语言·javascript·ecmascript
xiaoshuaishuai88 分钟前
C# CUDA 到 OpenCL 迁移
开发语言·windows·c#
AI科技星8 分钟前
基于平行素数对等腰梯形网格拓扑的完备性证明哥德巴赫猜想1+1
c语言·开发语言·网络·量子计算·agi
聆风吟º9 分钟前
【C标准库】深入理解C语言 isdigit函数详解:判断字符是否为数字
c语言·开发语言·库函数·isdigit