python程序设计——练习9

article/2025/9/23 23:41:54

目录

      • 1.任意整数各个位数之和
      • 2.列表下标转换
      • 3.稀疏矩阵的表示
      • 4.有序列表插入元素
      • 5.列表合并去重
      • 6.单词的区域
      • 7.查验身份证
      • 8.亲和数
      • 9.乘积的列表
      • 10.矩阵相加

1.任意整数各个位数之和

请输入任意一个正整数,求各个位数之和并输出。
输入样例1:

123

输出样例1:

sum=6

代码:

s, sum = input(), 0
for i in s:sum += int(i)
print('sum=%d' % sum)

2.列表下标转换

【题目描述】
从键盘输入一个字符串,保证字符串中的元素仅由英文单词构成(单词之间用英文逗号隔开)。请你先对字符串中的元素进行排序(仅排序,不要改变原本的字符串),然后将字符串中的每个元素替换为它们排序后的序号。请将替换后的字符串以列表的形式输出。
【详细解释】序号代表了一个元素有多大。序号编号的规则如下:
1、序号从 1 开始编号;
2、一个元素越大,那么序号越大;
3、果两个元素相等,那么它们的序号相同;
4、英文字母按照首字母的大小进行排序,如果首字母相同,则按第二个字母进行排序,依次类推;
【输入描述】
一行英文单词,单词之间用逗号隔开。
【输出描述】
一个列表。
【输入样例1】

a,a,a

【输出样例1】

[1,1,1]

【输入样例2】

a,a,h,b,c,e,d,f,ab,dd,c,f

【输出样例2】

[1,1,9,3,4,7,5,8,2,6,4,8]

代码:

s = input().split(',')
a = s[::]
a.sort()
ans, id, cnt = [], {}, 1
for i in range(len(a)):if not i or a[i] == a[i - 1]:id[a[i]] = cntelse:cnt += 1id[a[i]] = cnt
for i in range(len(s)):if s[i] != ',':ans.append(id[s[i]])
print('[%d' % ans[0], end = '')
for i in range(1,len(ans)):print(',%d' % ans[i], end = '')
print(']')

3.稀疏矩阵的表示

【题目描述】
稀疏矩阵,即包含大量值为 0 的矩阵,此类矩阵的一种存储方法是将矩阵中所有非 0 元素所在的位置(行标和列标)和元素值存储在顺序表(数组)中,通过存储由所有非 0 元素的三元组构成的顺序表,和该稀疏矩阵的行数、列数以及非零元素总个数构成的三元组,即可完成对整个稀疏矩阵的存储,这就是稀疏矩阵使用三元组表示的实现思想。
例如:
下面三元组表:
((1,2,12),(1,3,9),(3,1,-3),(3,6,14),(4,3,24),(5,2,18),(6,1,15),(6,4,-7),(6,7,8))
最后一个三元组(6,7,8),表示系数矩阵为6行7列,包含8个非零元。
所存储的矩阵为:
0 12 9 0 0 0 0
0 0 0 0 0 0 0
-3 0 0 0 0 14 0
0 0 24 0 0 0 0
0 18 0 0 0 0 0
15 0 0 -7 0 0 0
编写程序,从键盘输入一个 m行 x n列 的稀疏矩阵,输出他的三元表表示方法,及转置后的矩阵。
【注意】每输入一行应判断本行的列数是否与 n 相等,若不相等则直接结束程序,并输出’输入错误!’
【输入要求】
第一行,两个正整数 m 和 n 代表矩阵的行数和列数,中间用逗号隔开。
第二~M+1行,为一个稀疏矩阵(该矩阵中的非0元素可为整数或小数)。
【输出要求】
第一行,该稀疏矩阵的三元表示法。
第二~N+1行,为该稀疏矩阵的转置矩阵(注意每个元素占6位,且最后一行不换行。
Sample Input 1

8,5
1 0 0 0 0
3 0 0 0 0 0 0 0

Sample Output 1

Input error in line 2 of the matrix!

Sample Input 2

4,6
1.2 0 0 3 0 0
0 0 0 3.4 0 0
-2 -2.1 0 0 0 0
0 0 0 1 0 0.0

Sample Output 2

Triplet List:
((1, 1, 1.2), (1, 4, 3), (2, 4, 3.4), (3, 1, -2), (3, 2, -2.1), (4, 4, 1), (4, 6, 6))
Transpose matrix:
1.2 0 -2 0
0 0 -2.1 0
0 0 0 0
3 3.4 0 1
0 0 0 0
0 0 0 0.0

代码:

m,n = map(int,input().split(','))
a,ans,cnt = [],[],0
for i in range(m):a.append(list(map(eval,input().split())))if len(a[i]) != n:print(f'Input error in line {i+1} of the matrix!')exit()
for i in range(m):for j in range(n):if a[i][j] != 0:ans.append((i+1,j+1,a[i][j]))cnt += 1
ans.append((m,n,cnt))
print('Triplet List:')
print(tuple(ans))
print('Transpose matrix:')
for i in zip(*a):for j in i:print(f'{j:^6}',end=' ')if i != zip(*a)[-1]:print()

4.有序列表插入元素

【题目描述】
从键盘上获取一个已按升序排好的整数列表(测试样例的数都已严格按照升序输入),用户输入一个待插入的整数,编写程序,实现插入该数后,列表后仍保持有序。
【输入描述】
样例输入:
1、列表元素由空格隔开。
2、待插入的整数。
【输出描述】
样例输出:
输出后的列表为X,插入后的索引值为X
若插入元素的值与已有列表中的元素相同,则X为最大下标索引值。
【输入样例1】

1 2 3 3 3 4
3

【输出样例1】

输出后的列表为[1, 2, 3, 3, 3, 3, 4],插入索引值为5

代码:

a = list(map(int, input().split()))
b = eval(input())
a.append(b)
a.sort()
print('输出后的列表为', end = '')
print(a, end = '')
print(',插入索引值为%d' % (a.index(b) + a.count(b) - 1))

5.列表合并去重

【题目描述】
输入两个列表alist和blist,要求列表中的每个元素都为正整数且不超过10;合并alist和blist,并将重复的元素去掉后输出一个新的列表clist。同时为保证输出结果一致,请将列表clist内元素按升序排序之后再输出。
【输入描述】
共两行,每一行都用来输入列表中的元素值,以空格隔开。
【输出描述】
共一行,以列表形式打印输出。
【输入样例1】

1 2 3
4 3 2

【输出样例1】

[1, 2, 3, 4]

代码:

a = list(map(int, input().split()))
b = list(map(int, input().split()))
print(list(set(a + b)))

6.单词的区域

Description
输入一个列表 words ,列表中的元素全部为由字符串组成的单词,遍历整个列表,将所有可以使用键盘中同一区域字母打印出来的单词,和其所对应的颜色区域组成”键值对“存入字典当中,并输出。键盘如下图所示。
在这里插入图片描述
美式键盘中:
红色区域由字符 “qweasdzxc” 组成。
蓝色区域由字符 “rtyfghvbn” 组成。
黄色区域由字符 “uiopjklm” 组成。
Input
一行仅由单词组成的字符串,单词之间用空格隔开。
Output
一行,单词区域的字典。
Sample Input 1

sea hello Dad Peace try pop

Sample Output 1

{‘Red’: [‘sea’, ‘Dad’], ‘Blue’: [‘try’], ‘Yellow’: [‘pop’]}

Sample Input 2

BLUE red yellow pink

Sample Output 2

{‘Red’: [], ‘Blue’: [], ‘Yellow’: []}

代码:

def check(x, y):for i in x:if y.find(i)==-1:return Falsereturn True
s = list(input().split())
a= {'qweasdzxc':'Red', 'rtyfghvbn':'Blue', 'uiopjklm':'Yellow'}
ans = {'Red':[], 'Blue':[], 'Yellow':[] }
for i in s:flag = Falsefor j in a.keys():if check(i.lower(),j):flag = Trueans[a[j]].append(i)break
print(ans)

7.查验身份证

【题目描述】
一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下:首先对前17位数字加权求和,权重分配为:[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];然后将计算的和对11取模得到值Z;最后按照以下关系对应Z值与校验码M的值:
Z:0 1 2 3 4 5 6 7 8 9 10
M:1 0 X 9 8 7 6 5 4 3 2
现在给定一些身份证号码,请你验证校验码的有效性,并输出有问题的号码。
【输入描述】
输入第一行给出正整数N(≤100)是输入的身份证号码的个数。随后N行,每行给出1个18位身份证号码。
【输出描述】
按照输入的顺序每行输出1个有问题的身份证号码。这里并不检验前17位是否合理,只检查前17位是否全为数字且最后1位校验码计算准确。如果所有号码都正常,则输出All passed。
【输入样例1】

4
320124198808240056
12010X198901011234
110108196711301866
37070419881216001X

【输出样例1】

12010X198901011234
110108196711301866
37070419881216001X

【输入样例2】

2
320124198808240056
110108196711301862

【输出样例2】

All passed

代码:

n = int(input())
m = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
z = '10X98765432'
flag = True
while(n):n -= 1s = input()x = list(''.join(s[:]))res = 0for i in range(0,17):if x[i] != 'X':res += m[i] * int(x[i])if x[-1] != z[res % 11]:print(s)flag = False
if flag:print('All passed')

8.亲和数

【题目描述】
古希腊数学家毕达哥拉斯在自然数研究中发现,220的所有真约数(即不是自身的约数)之和为:1+2+4+5+10+11+20+22+44+55+110=284。
而284的所有真约数为1、2、4、71、 142,加起来恰好为220。
人们对这样的数感到很惊奇,并称之为亲和数。
一般地讲,如果两个数中任何一个数都是另一个数的真约数之和,则这两个数就是亲和数。
你的任务就编写一个程序,判断给定的两个数是否是亲和数。
【输入描述】
两个整数A,B; 其中 0 <=A,B <=600000 ;
【输出描述】
如果A和B是亲和数的话输出YES,否则输出NO。
【输入样例1】

220 284

【输出样例1】

YES

【输入样例2】

100 200

【输出样例2】

NO

代码:

a, b = map(int, input().split())
def get(x):res = 0for i in range(1,x):if x % i == 0:res += ireturn res
if get(a) == b and get(b) == a:print('YES')
else:print('NO')

9.乘积的列表

【题目描述】
给定一个包含若干个整数的列表alist,要求返回输出列表blist,blist中的元素为除与alist对应位置上的元素之外其余各元素的乘积。(注:原列表的1位于1号位置,结果应该等于除去1号位置的其他元素的积,对应输出6=23,原列表的2,对应输出3=13,原列表的3,对应输出2=1*2)
【输入描述】
共一行,元素以空格隔开。
【输出描述】
共一行,为一个列表。
【输入样例1】

1 2 3

【输出样例1】

[6, 3, 2]

代码:

a = list(map(int, input().split()))
sum = 1
for i in a:sum *= i
if not sum:b = []for i in range(len(a)):cnt = 1for j in range(len(a)):if j != i:cnt *= a[j]b.append(cnt)print(b)
else:b = [sum // i for i in a]print(b)

10.矩阵相加

Description
正整数n,代表要输入的是n*n的矩阵,两个矩阵由用户输入,计算输出两个矩阵相加的和。
Input
一个整数n,和两个矩阵的值。
Output
两个矩阵相加后的值,每个元素占三位,中间对齐,元素之间由两个空格组成。
Sample Input 1

3
12 3 -5
1 -9 0
3 6 8
1 8 9
6 5 4
3 2 1

Sample Output 1

13 11 4
7 -4 4
6 8 9

代码:

n = int(input())
a = [[]for i in range(n)]
for i in range(n):a[i] = list(map(int,input().split()))
for i in range(n):a[i] = [j + k for j, k in zip(a[i], list(map(int,input().split())))]
for i in range(n):for j in range(n):print(f'{a[i][j]:^3}', end='  ')print()


http://chatgpt.dhexx.cn/article/1LmToZSP.shtml

相关文章

squeezenet,DSD

squeezenet 2016.11.4 squeezenet的目的是用更少的网络构建模型,同时保持模型的准确率。 出发的三个原则是:1、用1*1卷积代替3*3卷积 2、减少与3*3卷积相连的通道数 3、在网络后期使用采样。保证特征图的大小。 其中1、2的目的是减少参数,同时…

Squid

Squid中文权威指南:点击打开链接 CentOS 6.4下Squid代理服务器的安装与配置 一、简介 代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息。 Squid是一个缓存Internet 数据的软件,其接收用户的下载申请,并自…

Squeeze-and excitation network

Squeeze-and excitation network introdutcion motivation:当前一些研究表明,将attention机制引入网络中来捕获特征之间的空间相关性可增强CNN的表征,但本文希望建立channels之间的关系。 整体的SE block的图: 如上图所示&…

SQUIRE: A Sequence-to-sequence Framework for Multi-hop Knowledge Graph Reasoning

摘要 近年来,多跳知识图(KG)推理得到了广泛的研究,以提供具有证据路径的缺失链接的可解释预测。大多数先前的工作使用基于强化学习(RL)的方法来学习导航到目标实体的路径。然而,这些方法的收敛速度慢,收敛性差,当路径…

Squeeze-and-Excitation Networks

摘要 卷积神经网络建立在卷积运算的基础上,通过融合局部感受野内的空间信息和通道信息来提取信息特征。为了提高网络的表示能力,许多现有的工作已经显示出增强空间编码的好处。在这项工作中,我们专注于通道,并提出了一种新颖的架…

HTML页面可视化快速设计

1、HTML页面可视化快速设计工具:Maqetta IBM 公司在 IBM Impact 2011 上面发布了 Maqetta,一个创建桌面和移动用户界面的 HTML5 设计编辑工具,并同时宣布将项目捐助给开源机构 Dojo 基金会。 也即Maqetta 是由 Dojo 基金会提出的开源技术 ,…

HTML 转 EXE 工具(HTML App Build)

2023-07-01 将进行完全功能免费发布,本文中的下载连接已经是最新的下载连接。 2023-02-19 已经进行了重大升级! 一款免费的HTML转EXE工具,无论您是单页面应用,或者是其他的使用传统的html javascript css 生成的网站&#xff0c…

HTML5教程|0代码,快速制作调查问卷

我们经常需要收集数据,今天我们来介绍一种自己实现问卷调查数据表的制作方法,本节教程是单选框的交互制作,希望大家看完都可以学会。我们使用的H5工具是Epub360,下面就进入教学环节吧~ 一、组件介绍: 单选项&#xf…

几款制作帮助文档的工具汇总

几款制作帮助文档的工具汇总 文章目录 几款制作帮助文档的工具汇总为什么需要发布产品帮助文档支持在线用 MarkDown格式的编辑器1、[GitBook](https://www.gitbook.com/)2、[Docsify](https://docsify.js.org/)3 、MrDoc4. YDoc5、VuePress6、[Docusaurus](https://docusaurus.…

微软html帮助文档制作,MicrosoftHTMLHelpWorkshop(CHM文件生成工具)

MicrosoftHTMLHelpWorkshop是一款文件制作工具,通过此软件能够帮助我们对CHM文件进行快速编程配置,也可快速的进行建立需要的HYML格式的文件,软件还可单独的进行运行,可快速的制作出CHM文件,简单又实用,有需…

html 制作箭头,怎么使用html制作箭头?制作箭头代码分享!

我们在制作静态页面的时候一般的都会使用一些什么箭头、按钮等等各种形状的控件,但是一般比较常使用的就是用图片加入然后再设置函数从而达到预期的效果,那么今天我们就来说说不用照片怎么设计一个箭头吧! 1.编写盒子代码 首先我们使用开发工…

可视化html dream,推荐十款非常优秀的 HTML5 在线设计工具

网络有很多优秀的设计和开发工具可能大家都不知道,因此这篇文章就向设计师推荐十款优秀 HTML5 在线工具,这些工具能够帮助设计师们设计出更有创意的作品。随着 HTML5 技术的不断成熟,网络上涌现出越来越多的优秀 HTML5 应用,一起看…

易企秀如何导出html,易企秀怎么免费制作h5?

如何使用易企秀制作一个免费的html5页面?如何使用易企秀制作一个免费的h5页面来进行宣传?易企秀如何制作一个营销页面? 方法步骤 1.易企秀是一款非常好用的营销工具,用户能够在里面免费的制作出一个h5页面,来进行产品的…

易企秀HTML5文件,怎么用易企秀制作h5场景秀?

易企秀是一款手机端精美网页DIY制作工具 ,用户可以编辑手机网页,分享到社交网络,并且通过报名表单收集潜在客户或其他反馈信息。适用于:企业宣传,产品介绍,活动促销,预约报名,会议组…

HTML5 canvas画板的制作

canvas画板的制作 今天看了一些canvas视频的教程,有制作画板的过程,但是我有给出他们的简洁版和使用版本,能让用户看出画直线的路径,也就是当你拉一条直线的时候就和绘图工具一样,都能很好使用,绘图之后&am…

HTML制作员工信息登记表

任务描述:利用HTMLCSS制作下面的表格 任务分析: 1.需用到表单方面的知识,from标签 input标签及其属性 2.该表背景为粉色,需设置背景色 3.有两个表单按钮,提交和重置按钮 4.文本框内填充了一定文字 HTML代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitio…

html5手机页面设计软件,5个非常优秀的免费H5页面制作工具(推荐)

经常在微信里看到一些活动推荐页面,非常酷炫,自己也想做,但不会H5,也不懂移动开发规范,怎么办? 中国 1. 易企秀 百度指数:★★★★★ 易企秀界面 作 为百度指数最热的易企秀其实很容易定义,就是移动版PPT的H5页面制作工具,用来在手机上做简单动态演示。所以它各方面的…

html5海报 在线制作软件,免费H5在线制作工具大全(48种),不会写代码的看过来

H5制作不是设计师和程序猿的专利,普通用户也可以靠自己制作出精美的Html5作品,下面是几乎市面上所有的Html5在线制作平台,利用平台提供的海量模板资源和特效功能,完全可以让你成为一个Html5大师。当然,选择太多,不如不选。对于有选择恐惧症或者不知道该选择哪个工具的人来…

h5制作导出html,H5制作工具Hype的导出功能详解

Hype是一款Mac端网页制作工具,它可以通过时间线录制功能制作各种各样的网页炫酷动画效果,同时也支持使用物理引擎制作动画。当然,它的强大不仅仅体现于动画制作方面,它的导出功能同样也是功能齐全,下面小编就通过使用Hype 4版本,为大家详细介绍下这款H5制作软件的导出功能…

如何在线引入 阿里巴巴矢量图标库?

本地下载了图标矢量库后&#xff0c;发现漏下了几个图标怎么办&#xff1f; 1、重新下载新的项目&#xff0c;覆盖本地的。 2、引入在线链接&#xff01; 如何引入在线链接&#xff1f; 1、选择你要下载的图标&#xff0c;先下载到本地。 2 复制新图标内容3、粘贴到本地图标库…