python程序设计——练习9_有一行由任意字符组成的字符串,请求出其中所有数的和。最长连续的数不超过18位。-程序员宅基地

技术标签: 算法  python  python程序设计——上机练习  开发语言  

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]] = cnt
    else:
        cnt += 1
        id[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 False
    return True
s = list(input().split())
a= {
    'qweasdzxc':'Red', 'rtyfghvbn':'Blue', 'uiopjklm':'Yellow'}
ans = {
    'Red':[], 'Blue':[], 'Yellow':[] }
for i in s:
    flag = False
    for j in a.keys():
        if check(i.lower(),j):
            flag = True
            ans[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 -= 1
    s = input()
    x = list(''.join(s[:]))
    res = 0
    for 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 = 0
    for i in range(1,x):
        if x % i == 0:
            res += i
    return 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 = 1
        for 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()

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_57396565/article/details/130837651

智能推荐

【新手科研指南5】深度学习代码怎么读-小白阶段性思路(以手写数字识别应用为例)_深度学习程序怎么读-程序员宅基地

文章浏览阅读6.2k次,点赞6次,收藏26次。我是一个深度学习代码小白,请你用中文写上注释,能让我能轻松理解下面这段代码。注意包含所有函数、调用和参数的注释。以同样的python代码块样式返回你写的代码给我。代码看累了,就看《动手学深度学习》文档:基于PyTorch框架,从底层函数实现基础功能,再到框架的高级功能。努力上路的小白一枚,麻烦路过的大佬指导一二,同时希望能和大家交流学习~争取更新学习这个文档的专栏,记录学习过程。量身定做了一套话术hhh,亲身测试还不错。这个感觉更浅一点儿,之后复习看吧。20天吃掉那只Pytorch。_深度学习程序怎么读

Java学习路线图,看这一篇就够了!-程序员宅基地

文章浏览阅读2.7w次,点赞126次,收藏1.2k次。耗废1024根秀发,Java学习路线图来了,整合了自己所学的所有技术整理出来的2022最新版Java学习路线图,适合于初、中级别的Java程序员。_java学习路线

PCL_Tutorial2-1.7-点云保存PNG_pcl::io:savepng-程序员宅基地

文章浏览阅读4.4k次。1.7-savingPNG介绍代码详情函数详解savePNGFile()源码savePNGFile()源码提示savePNGFile()推荐用法处理结果代码链接介绍PCL提供了将点云的值保存到PNG图像文件的可能性。这只能用有有序的云来完成,因为结果图像的行和列将与云中的行和列完全对应。例如,如果您从类似Kinect或Xtion的传感器中获取了点云,则可以使用它来检索与该云匹配的640x480 RGB图像。代码详情#include <pcl / io / pcd_io.h>#incl_pcl::io:savepng

知乎问答:程序员在咖啡店编程,喝什么咖啡容易吸引妹纸?-程序员宅基地

文章浏览阅读936次。吸引妹子的关键点不在于喝什么咖啡,主要在于竖立哪种男性人设。能把人设在几分钟内快速固定下来,也就不愁吸引对口的妹子了。我有几个备选方案,仅供参考。1. 运动型男生左手单手俯卧撑,右手在键盘上敲代码。你雄壮的腰腹肌肉群活灵活现,简直就是移动的春药。2.幽默男生花 20 块找一个托(最好是老同学 or 同事)坐你对面。每当你侃侃而谈,他便满面涨红、放声大笑、不能自已。他笑的越弱_咖啡厅写代码

【笔试面试】腾讯WXG 面委会面复盘总结 --一次深刻的教训_腾讯面委会面试是什么-程序员宅基地

文章浏览阅读1.2w次,点赞5次,收藏5次。今天 (应该是昨天了,昨晚太晚了没发出去)下午参加了腾讯WXG的面委会面试。前面在牛客上搜索了面委会相关的面经普遍反映面委会较难,因为都是微信的核心大佬,问的问题也会比较深。昨晚还蛮紧张的,晚上都没睡好。面试使用的是腾讯会议,时间到了面试官准时进入会议。照例是简单的自我介绍,然后是几个常见的基础问题:例如数据库索引,什么时候索引会失效、设计模式等。这部分比较普通,问的也不是很多,不再赘述。现在回想下,大部分还是简历上写的技能点。接下来面试官让打开项目的代码,对着代码讲解思路。我笔记本上没有这部分代码,所_腾讯面委会面试是什么

AI绘画自动生成器:艺术创作的新浪潮-程序员宅基地

文章浏览阅读382次,点赞3次,收藏4次。AI绘画自动生成器是一种利用人工智能技术,特别是深度学习算法,来自动创建视觉艺术作品的软件工具。这些工具通常基于神经网络模型,如生成对抗网络(GANs),通过学习大量的图像数据来生成新的图像。AI绘画自动生成器作为艺术与科技结合的产物,正在开启艺术创作的新篇章。它们不仅为艺术家和设计师提供了新的工具,也为普通用户提供了探索艺术的机会。随着技术的不断进步,我们可以预见,AI绘画自动生成器将在未来的创意产业中发挥越来越重要的作用。

随便推点

Flutter ListView ListView.build ListView.separated_flutter listview.separated和listview.builder-程序员宅基地

文章浏览阅读1.7k次。理解为ListView 的三种形式吧ListView 默认构造但是这种方式创建的列表存在一个问题:对于那些长列表或者需要较昂贵渲染开销的子组件,即使还没有出现在屏幕中但仍然会被ListView所创建,这将是一项较大的开销,使用不当可能引起性能问题甚至卡顿直接返回的是每一行的Widget,相当于ios的row。行高按Widget(cell)高设置ListView.build 就和io..._flutter listview.separated和listview.builder

2021 最新前端面试题及答案-程序员宅基地

文章浏览阅读1.4k次,点赞4次,收藏14次。废话不多说直接上干货1.js运行机制JavaScript单线程,任务需要排队执行同步任务进入主线程排队,异步任务进入事件队列排队等待被推入主线程执行定时器的延迟时间为0并不是立刻执行,只是代表相比于其他定时器更早的被执行以宏任务和微任务进一步理解js执行机制整段代码作为宏任务开始执行,执行过程中宏任务和微任务进入相应的队列中整段代码执行结束,看微任务队列中是否有任务等待执行,如果有则执行所有的微任务,直到微任务队列中的任务执行完毕,如果没有则继续执行新的宏任务执行新的宏任务,凡是在..._前端面试

linux基本概述-程序员宅基地

文章浏览阅读1k次。(3)若没有查到,则将请求发给根域DNS服务器,并依序从根域查找顶级域,由顶级查找二级域,二级域查找三级,直至找到要解析的地址或名字,即向客户机所在网络的DNS服务器发出应答信息,DNS服务器收到应答后现在缓存中存储,然后,将解析结果发给客户机。(3)若没有查到,则将请求发给根域DNS服务器,并依序从根域查找顶级域,由顶级查找二级域,二级域查找三级,直至找到要解析的地址或名字,即向客户机所在网络的DNS服务器发出应答信息,DNS服务器收到应答后现在缓存中存储,然后,将解析结果发给客户机。_linux

JavaScript学习手册十三:HTML DOM——文档元素的操作(一)_javascript学习手册十三:html dom——文档元素的操作(一)-程序员宅基地

文章浏览阅读7.9k次,点赞26次,收藏66次。HTML DOM——文档元素的操作1、通过id获取文档元素任务描述相关知识什么是DOM文档元素节点树通过id获取文档元素代码文件2、通过类名获取文档元素任务描述相关知识通过类名获取文档元素代码文件3、通过标签名获取文档元素任务描述相关知识通过标签名获取文档元素获取标签内部的子元素代码文件4、html5中获取元素的方法一任务描述相关知识css选择器querySelector的用法代码文件5、html5中获取元素的方法二任务描述相关知识querySelectorAll的用法代码文件6、节点树上的操作任务描述相关_javascript学习手册十三:html dom——文档元素的操作(一)

《LeetCode刷题》172. 阶乘后的零(java篇)_java 给定一个整数n,返回n!结果尾数中零的数量-程序员宅基地

文章浏览阅读132次。《LeetCode学习》172. 阶乘后的零(java篇)_java 给定一个整数n,返回n!结果尾数中零的数量

php 公众号消息提醒,如何开启公众号消息提醒功能-程序员宅基地

文章浏览阅读426次。请注意,本文将要给大家分享的并不是开启公众号的安全操作风险提醒,而是当公众号粉丝给公众号发消息的时候,公众号的管理员和运营者如何能在手机上立即收到消息通知,以及在手机上回复粉丝消息。第一步:授权1、在微信中点击右上角+,然后选择“添加朋友”,然后选择“公众号”,然后输入“微小助”并关注该公众号。2、进入微小助公众号,然后点击底部菜单【新增授权】,如下图所示:3、然后会打开一个温馨提示页面。请一定要..._php微信公众号服务提示

推荐文章

热门文章

相关标签