python学习笔记之例题篇NO.3

news2025/2/24 9:52:57

获得用户输入的一个整数N,输出N中所出现不同数字的和。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

s = list(set(list(input())))# ①
result = 0
for i in s:
    result += eval(i)
print(result)

① set() 函数创建一个无序不重复元素的集合,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等,返回新的集合对象{ , }


人名最多数统计

编程模板中给出了一个字符串,其中包含了含有重复的人名,请直接输出出现最多的人名。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

s = '...字符串...'
from collections import Counter# ①
words = s.split()
c = Counter(words)# ②
print(c.most_common(1)[0][0])# ③

①Counter是一个简单的计数器;
②C 输出的字典类型:{'字符':次数,...}
most_common(n)返回一个出现次数从大到小的前 n 个元素的列表。此处是[(字符, 次数)]

方法二:

words = s.split()
counts = {}
for word in words:
    counts[word] = counts.get(word, 0) + 1 # ①
items = list(counts.items()) # ②
items.sort(key=lambda x: x[1], reverse=True)
print(items[0][0])

① 字典取值方式dictname.get(key, value);如果key存在返回对应的value,如果key不存在,返回None,设置的不加入字典中
dictname.items()函数以列表返回可遍历的(键值)元组数组。


给运动员打分计算总成绩排名

在文件dafen.txt中存放了12个裁判员为10名运动员的评分,现在要求编写程序,从文件中取出这些分数,每个运动员评分中去掉一个最高分和一个最低分,计算平均成绩,然后给出运动员排名;
要求输出格式: print( “第{:2d}名 {:2d}号运动员,平均分为{:6.2f}”.format(名次,运动员编号,平均分))
例如; 第 1名 7号运动员,平均分为 8.56 …(略)

def read_data():#读文件内容,返回读入的数据
  fp=open("src/dafen.txt")  #以默认的方式打开文件,默认‘r’,'utf-8'
  score = []
  No = 0
  for line in fp:
        No+=1
        x = list(map(eval, line.split())) #eval函数 接收运行一个字符串表达式,返回表达式的结果值。
        a,*s,b = sorted(x)
        score.append((sum(s)/10,No))
  return score
 
def cal_sort_avg(p):#对运动员成绩排序,返回排序后的结果
# -------------------BEGIN------------------------
  p.sort(key = lambda x: (-x[0],x[1])) 
  return p
# ------------------END------------------------

def print_result(p):#输出排序结果,按格式输出最终结果
# -------------------BEGIN------------------------
  for i in range(len(p)):
     print( "第{:2d}名 {:2d}号运动员,平均分为{:6.2f}".format(i+1,p[i][1],p[i][0]))

# ------------------END------------------------

def main():
  l1=read_data() #读文件中的数据
  l2=cal_sort_avg(l1) #进行数据处理
  print_result(l2) #输出结果

if __name__ == '__main__':
  main()

判断字符串是否数字

str.isnumeric()方法可以判断字符串str是否都是数字字符。若都是数字字符,返回true,否则返回false

获取字符在字符串的位置

使用str.find(c)方法可以返回字符串str中字符c所在位置的序号。
“2021/2/25“.find(“/“)返回数字4。
str.rfind(c)方法可以返回从尾部起,字符串str中字符c所在位置的序号。
“2021/2/25“.rfind(“/“)返回数字6。


Q4 图论问题

eg:如下图所示,G是一个无向图,其中蓝色边的长度是 11、橘色边的长度是 22、绿色边的长度是 33。则从 A 到 S 的最短距离是多少?

在这里插入图片描述

# 录入路线图
lyh_list = [
    ["A", "E", 1],["A", "B", 2],["A", "C", 1],["A", "D", 1],["A", "E", 1],["B", "G", 1],
    ["B", "J", 2],["C", "D", 3],["C", "G", 3],["C", "F", 3],["D", "G", 2],["D", "H", 1],
    ["D", "I", 2],["E", "H", 1],["E", "I", 3],["F", "J", 1],["F", "G", 1],["G", "K", 2],
    ["G", "I", 3],["H", "L", 2],["H", "I", 1],["I", "M", 3],["J", "S", 2],["K", "N", 1],
    ["K", "L", 3],["L", "R", 1],["L", "M", 1],["M", "N", 2], ["M", "Q", 1],["M", "S", 1],
    ["N", "P", 1],["Q", "O", 1],["O", "R", 3],["P", "O", 1],["R", "S", 1],
]

#路线存储器
loads = []

#寻路函数
def find(length, r):# length: 路线长度 r:节点node
    for x, y in enumerate(lyh_list):
        if r[1] == y[0]:
            length+=r[2]
            if y[1] == 'S':
                loads.append(length)
            else: find(length = length, r = y)
        
for i, j in enumerate(lyh_list):
    if j[0] == 'A':
        find(length = j[2], r = j)

print(min(loads))

Q5 数字三角形

在这里插入图片描述

h = int(input())

list = [list(map(int, input().split())) for i in range(h)]

for i in range(1,h): #从第二行开始
    for j in range(0,i+1):
        if j == 0:# 最左侧的只能是上一行最左侧的移下来的
            list[i][j] += list[i-1][j] 
        elif j == i:# 最右侧的只能是上一行最右侧的移下来的
            list[i][j] += list[i-1][j-1]
        else:
            list[i][j] += max(list[i-1][j-1:j+1])
# print(max(list[-1]))
if h & 1:  # 如果是奇数行,则返回最中间值
    print(list[-1][h // 2])
else:  # 偶数行则返回中间较大值
    print(max(list[-1][h // 2 - 1], list[-1][h // 2]))

一定得看题,不能上来就递归或者搜索
最后一句话决定了题目性质:
向左下走的次数与向右走的次数相差不能超过1意味着:

|freq() -  freq()| = 0 or 1

② 我们把一次左移和一次右移称为对称位移,一次对称位移后,竖直方向是不变的;
freq(左)+freq(右) = 行数 ,由于①的限制,如果行数是偶数,只能是freq(左) = freq(右);如果行数是奇数,只能是|freq(左) - freq(右)| = 1
综上,所谓的最大值并不是在一堆数中选最大,实际上最大值是确定值,所以极具误导性


集合的使用

问题描述:
小蓝有 n 个单词,但是单词中有一些是重复的,请帮小蓝去除重复的单词。
输入格式
输入第一行包含一个正整数 n ,表示小蓝的单词数量。
接下来 n 行,每行包含一个由小写字母组成的单词。
输出格式
请输出去除重复后的那些单词。如果一个单词出现了多遍,请保留第一次出现的单词,去除之后出现的单词,按输入的顺序输出。
评测用例规模与约定: 对于所有评测用例,1 <= n <= 100,每个单词的长度不超过 100。


s = input()
s_ = s[::-1]

def check(s):#判断是否为回文
    return s == s[::-1]

if check(s): print(s)
else:
    for i in range(1, len(s)):
        if check(s[i:]):
            print(s+s_[-i:])
            break

一个m行n列的方格图。开始时,在方格图的左上角,即第1行第1列。可以在方格图上跳跃,跳跃时,如果当前在第r行第c列,不能跳到行号比 r小的行,也不能跳到列号比c小的列。同时,一跳的直线距离不超过 3(不能斜走)。最终要跳到第m行第n列。图中每个格子有权值。从第1行第1列跳到第m行第n列后,总的权值和最大是多少?

m, n = map(int, input().split())
lst = [[map(int, input().split())] for _ in range(m)]

direct = [(0,1),(0,2),(0,3),
          (1,0),(1,1),(1,2),
          (2,0),(2,1),(3,0)]
for x in range(m):
    for y in range(n):
        res = []
        for dx, dy in direct:
            lx = x - dx
            ly = y - dy
            if (lx >= 0 and ly >= 0 and lx < n and ly < m)
                res.append(dp[lx][ly])
        dp[x][y] += max(res) if len(res)!=0 else 0
print(dp[-1][-1])

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/363870.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

全局组件和局部组件

全局组件第一种定义方法&#xff1a;A、创建自己的组件&#xff1a;Loading.vueB、在main.js文件中引入组件并注册import Vue from vue import App from ./App.vue import * as filters from ./filterimport quanjuzujian from ./components/quanjuzujian.vueVue.component(qua…

carla0.9.13-UE4添加4轮车模型(Linux系统)

前期准备建模工具&#xff1a;blender:v3.4.1&#xff1b;可以在Ubuntu Software商店直接下载虚拟引擎&#xff1a;carla-UE4 (carla v0.9.13)&#xff0c;无需额外安装UE4&#xff0c;carla中自带插件编译carla参照官方文档&#xff1a;https://carla.readthedocs.io/en/0.9.1…

mysql存储引擎、事务、索引

目录MySQL进阶存储引擎什么是存储引擎常用存储引擎事务什么是事务怎么理解提交事务 和回滚事务事务特性事务的隔离级别索引什么是索引索引的实现原理什么条件下&#xff0c;我们会考虑给字段添加索引呢?什么条件下&#xff0c;索引会失效&#xff1f;索引分类MySQL进阶 存储引…

Scala的变量声明

文章目录变量声明&#xff08;一&#xff09;简单说明&#xff08;二&#xff09;利用val声明变量1&#xff0c;声明方式2&#xff0c;案例演示&#xff08;三&#xff09;利用var声明变量1&#xff0c;声明方式2&#xff0c;案例演示&#xff08;四&#xff09;换行输入语句&a…

横道图时间标尺在P6软件中的设置

卷首语 由于其直观简洁且易于管理的特性&#xff0c;使其成为展示项目活动顺序及时间安排的最常用的进度管理工具。 甘特图 甘特图&#xff08;Gantt Chart&#xff09;&#xff0c;又称为横道图或棒条图&#xff0c;是最早的项目进度管理工具之一。由于其直观简洁且易于管理…

从WEB到PWA 开发-发布-安装

见意如题&#xff01;本文主要来说说PWA开发&#xff01;作为一个前端程序员&#xff0c;在没有任何Android/IOS的开发情况下&#xff0c;想想我们有多少种方法来开发一个原生移动应用程序&#xff01;我们可以有非原生、混合开发&#xff0c;PWA等等手段。类似uniapp&#xff…

LabVIEW应用程序(EXE)无法正确动态调用插件

LabVIEW应用程序&#xff08;EXE&#xff09;无法正确动态调用插件正在构建一个应用程序并使用插件架构&#xff0c;以便可以动态调用将来创建的VI&#xff08;插件&#xff09;。应用程序在LabVIEW开发环境中可以正常运行&#xff0c;但不能作为可执行程序运行。运行可执行文件…

STM32-CAN控制器介绍

STM32-CAN控制器介绍 对CAN接口部分重要知识点进行记录&#xff0c;更详细的需要查看参考手册 CAN协议介绍&#xff1a;https://blog.csdn.net/weixin_46251230/article/details/129147612 bxCAN简介 STM32的CAN接口叫做bxCAN&#xff0c;bxCAN是基本扩展CAN(Basic Extende…

第五次作业:修改redis的配置文件使得windows的图形界面客户端可以连接redis服务器

1. 安装 Redis 依赖 Redis 是基于 C语言编写的&#xff0c;因此首先需要安装 Redis 所需要的 gcc 依赖&#xff1a; yum install -y gcc tcl 2、上传安装文件 将下载好的 redis-6.2.7.tar.gz 安装包上传到虚拟机的任意目录&#xff08;一般推荐上传到 /usr/local/src目录&am…

3.基于分割的文本检测算法--DBNet++

文章目录1.概况2.DBNet中的主要方法2.1 网络结构2.2 适应特征图融合模块(Adaptive Scale Fusion Module, ASF)3.ASF模块的源码实现参考资料欢迎访问个人网络日志&#x1f339;&#x1f339;知行空间&#x1f339;&#x1f339; 1.概况 2022年02月份论文&#xff1a;Real-Time S…

对比yolov4和yolov3

目录 1. 网络结构的不同 1.1 Backbone 1.1.1 Darknet53 1.1.2 CSPDarknet53 1.2 Neck 1.2.1 FPN 1.2.2 PAN 1.2.3 SPP 1.3 Head 2. ​​​​​数据增强​​​​​ 2.1 CutMix 2.2 Mosaic 3. 激活函数 4. 损失函数 5. 正则化方法 知识点 记录备忘。 总体而言&…

云计算|OpenStack|使用VMware安装华为云的R006版CNA和VRM

前言&#xff1a; FusionCompute架构 (CNA、VRM) CNA(ComputingNode Agent):计算节点代理VNA虚拟节点代理&#xff0c;部署在CNA上&#xff0c;实施计算、存储、网络的虚拟化的配置管理。VRM(Virtual Resource Manager):虚拟资源管理器 VNA可以省略不安装 本次实验使用的是V…

关于客户背景调查的两个案例,说下我的真实看法

这篇文章我只是想客观陈述下事实&#xff0c;并没有对他人的贬低与对自己的吹捧之意。只是想通过这样两件小事&#xff0c;传递出来一个观点&#xff1a;在外贸业务开发过程中&#xff0c;很多时候正是那些我们内心抗拒&#xff0c;不愿意沉下心去做的事&#xff0c;才给了我们…

关于vue3生命周期的使用、了解以及用途(详细版)

生命周期目录前言组合式写法没有 beforeCreate / created 生命周期&#xff0c;并且组合式写生命周期用哪个先引哪个beforeCreatecreatedbeforeMount/onBeforeMountmounted/onMountedbeforeUpdate/onBeforeUpdateupdated/onUpdatedbeforeUnmount/onBeforeUnmountunmounted/onUn…

数据库及缓存之MySQL(一)

思维导图 常见知识点 1.mysql存储引擎&#xff1a; 2.innodb与myisam区别&#xff1a; 3.表设计字段选择&#xff1a; 4.mysql的varchar(M)最多存储数据&#xff1a; 5.事务基本特性&#xff1a; 6.事务并发引发问题&#xff1a; 7.mysql索引&#xff1a; 8.三星索引&#xf…

常见的分类算法及分类算法的评估方法

文章目录贝叶斯分类法&#xff08;Bayes&#xff09;决策树&#xff08;Decision Tree&#xff09;支持向量机&#xff08;SVM&#xff09;K近邻&#xff08;K-NN&#xff09;逻辑回归&#xff08;Logistics Regression&#xff09;线性回归和逻辑回归的区别神经网络&#xff0…

JavaWeb12-线程通讯(线程等待和唤醒)

目录 1.方法介绍 1.1.wait()/wait(long timeout)&#xff1a;让当前线程进入等待状态。 1.1.1.wait执行流程 1.1.2.wait结束等待的条件 1.1.3.wait() VS wait(long timeout) 1.1.4.为什么wait要放在Object中&#xff1f; --->PS&#xff1a;wait(0) 和 sleep(0) 的区…

算法训练营 day52 动态规划 买卖股票的最佳时机系列1

算法训练营 day52 动态规划 买卖股票的最佳时机系列1 买卖股票的最佳时机 121. 买卖股票的最佳时机 - 力扣&#xff08;LeetCode&#xff09; 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票…

VR全景多种玩法打破传统宣传,打造全新云端视界

传统的展示方式只是在进行单方面的表达&#xff0c;不论是图片、视频&#xff0c;都无法让浏览者有参与感&#xff0c;这样的展示宣传效果自然比不上VR全景展示&#xff0c;VR全景基于真实场景来形成三维图像&#xff0c;其沉浸式和无视野盲区的特点让用户更有真实感和沉浸感&a…

python -- 魔术方法

魔术方法就算定义在类里面的一些特殊的方法 特点&#xff1a;这些func的名字前面都有两个下划线 __new__方法 相当于一个类的创建一个对象的过程 __init__方法 相当于为这个类创建好的对象分配地址初始化的过程 __del__方法 一个类声明这个方法后&#xff0c;创建的对象如果…