【python】pythonPTA编程练习2
文章目录
- 7-1 输出不重复的字符
- 7-2 找列表中最大元素的下标(高教社,《Python编程基础及应用》习题4-7
- 7-3 删除列表中的重复值(高教社,《Python编程基础及应用》习题4-8)
- 7-4 统计字符串列表中每个字母出现的次数(高教社,《Python编程基础及应用》习题6-8)
- 7-5 jmu-python-异常-学生成绩处理中级版
- 7-6 下标异常
- 7-7 往返跑方阵
7-1 输出不重复的字符
分数 10
作者 马杨珲
单位 浙江科技学院
输入一个字符串,把最左边的10个不重复的字符(大小写算不同字符)挑选出来。 如不重复的字符不到10个,则按实际数目输出。
输入格式:
输入一个字符串s。
输出格式:
输出一个字符串,包含字符串s最左边10个不重复的字符。不到10个按实际输出。
输入样例1:
在这里给出一组输入。例如:
Hello world, hello python
输出样例1:
在这里给出相应的输出。例如:
Helo wrd,h
输入样例2:
在这里给出一组输入。例如:
succeed
输出样例2:
在这里给出相应的输出。例如:
suced
n = input() #输入一个字符串
s = ''#定义一个str变量来存储最后输出的字符串
for i in n:if i not in s:#这步去重if len(s)<10:#取前10个s+=i
print(s)
7-2 找列表中最大元素的下标(高教社,《Python编程基础及应用》习题4-7
分数 5
作者 海洋饼干叔叔
单位 重庆大学
输入一个整数列表,找出整数列表中最大元素的下标,如果最大元素的个数超过1,那么请打印输出所有的下标。
输入格式:
数字1,数字2,数字3,…,数字n
输出格式:
下标1
下标2
…
下标k
输入样例:
3,2,3
输出样例:
0
2
a = list(map(int,(input().split(','))))
b=0
for i in range(len(a)):if a[i]>=b:b=a[i]print(i)
7-3 删除列表中的重复值(高教社,《Python编程基础及应用》习题4-8)
分数 5
作者 海洋饼干叔叔
单位 重庆大学
输入一个列表,删除其中的重复值,再输出。
要求
假设列表中存在k个值为a的元素,删除前k-1个元素,保留最后一个。
不同元素在列表中的相对位置不应被改变。
输入格式:
[元素1, 元素2, … , 元素n]
输出格式:
[元素1,元素2, … , 元素k]
输入样例:
[4,3,2,3,2,4,True]
输出样例:
[3, 2, 4, True]
提示:将形如"[1,3,5]"的字符串转换成列表可以使用eval()函数。
注意:不要在遍历列表的同时对列表进行增删改操作,这样会引起混乱,导致不正确的结果!
注意,输出格式应与输出样例一致,涉及空格,逗号等。
请接着往下看:你的程序真的对了吗?
多数读者的解题思路是制造一个v列表的复制品以避免在遍历v的同时删除v中的元素。该解决方案可以通过本题设置的全部测试。但这并不意味着该解决方案是“完全正确”的。请尝试下述输入:
[1,7,6,7,7,True,'a',9.8,'a',True]
很遗憾,程序将产生错误的输出:
[6, 7, 9.8, 'a', True]
产生这种意外结果的原因是:在Python里1和True是相等的! 0和False也是相等的! 在使用列表的count()函数,index()函数,remove()函数时,1和True, 0和False被不加区分地对待。
下述代码的执行结果证实了这一点:
v = [1,True,2,True,0,False]
print("count of 1:", v.count(1), ",count of True:", v.count(True))
print("count of 0:", v.count(0), ",count of False:", v.count(False))
print("index of True:",v.index(True), ",index of False",v.index(False))
v.remove(True)
print("after v.remove(True):",v)
其执行结果为:
count of 1: 3 ,count of True: 3 #1,True都同时为1或True
count of 0: 2 ,count of False: 2 #0,False都同时为0或False
index of True: 0 ,index of False 4 #下标0的1被视为True
after v.remove(True): [True, 2, True, 0, False] #1被当作True移除了
以下代码可有效解决True和1 以及0和False的问题:
li = eval(input())#将字符串转化为列表
li2=[ele for ele in reversed(li)]#反向列表中list中的元素
count1=0#分别用来记录列表中1和0的个数
count2=0
li=[]
for i in li2:if not isinstance(i, bool) and i == 1:#把列表中所有的1存入列表lili.insert(0,1)count1+=1if not isinstance(i, bool) and i == 0:#把列表中所有的0存入列表lili.insert(0,0)count2+=1if i not in li:#除0,1以外不在li中的元素存入li,去重li.insert(0,i)
for x in range(count1-1):#list.remove(x):移除列表中x的第一个匹配项li.remove(1)
for j in range(count2-1):li.remove(0)
print(li)
7-4 统计字符串列表中每个字母出现的次数(高教社,《Python编程基础及应用》习题6-8)
分数 10
作者 海洋饼干叔叔
单位 重庆大学
统计字符串列表中每个字母出现的次数。
编写程序,使用eval()函数读入一个仅包含字符串对象的列表,然后统计该列表中每个字母出现的次数。
列表中的字符串对象仅包含小写英文字母。
输入格式:
一个仅包括字符串对象的列表,且全部字符串对象中仅出现小写英文字母。
输出格式:
字母,次数
…
字母,次数
(注意按a-z的顺序输出)
输入样例:
["aaab", "cccdz"]
输出样例:
在这里给出相应的输出。例如:
a,3
b,1
c,3
d,1
z,1
li = eval(input())
dict = {}
for i in li:for j in i:if j not in dict.keys():dict[j] = 1else:dict[j]+=1for i in sorted(dict):print('{},{}'.format(i,dict[i]))
7-5 jmu-python-异常-学生成绩处理中级版
分数 10
作者 郑如滨
单位 集美大学
小明在帮老师处理数据,这些数据的第一行是n,代表有n行整数成绩需要统计。
接着连续输入n个成绩,如果中途输入错误(非整数)提示’Error! Reinput’,
并输出错误的数据。然后重新输入,直到输入n个正确的成绩才退出。如果整个
输入过程中没有错误数据,提示’All OK’。最后输出所有学生的平均值,保留两
位小
数。
注:该程序可以适当处理小错误,比如对于有些数据如果左右包含空格,先去掉
空格再行处理。
输入格式:
第一行为n,代表接下来要输入的正确行数。
然后输入成绩,输入错误则提示重输,直到输入n行正确的数据为止。
输出格式:
如果输入过程中无异常,需输出All OK。
输入样例1:
3
12 3
输出样例1:
All OK
avg grade = 2.00
输入样例2:
3
1
#
b
2
3
输出样例2:
Error for data #! Reinput
Error for data b! Reinput
avg grade = 2.00
n = int(input())#输入n个成绩
num = n
sum_grade = 0
flag = True
err_grade = ""
err_list = [] #用来存储错误的输入
while n:try:err_grade = input()grade = int(err_grade)#转化为intsum_grade += graden = n-1except:#捕捉异常,将不是int型的字符存储在err_list列表中flag = False #flag表示输入有异常err_list.append(err_grade)
if flag:print("All OK")
else:#对异常的数据作出处理for grade in err_list:print("Error for data %s! Reinput" % grade)
print("avg grade = %.2f" % (sum_grade/num))
7-6 下标异常
分数 10
作者 马杨珲
单位 浙江科技学院
输入一个非空字符串和一个索引值,输出字符串中,该索引值对应的字符。若发现异常,则输出“输入下标有误”
输入格式:
输入一个非空的字符串,再输入一个索引值(Python中可以是正向索引,也可以是反向索引)。
输出格式:
输出字符串中,该索引值对应的字符。若发现异常(如输入的索引值太大或太小,超出字符串的索引值范围;如输入的索引值为非整数等),则输出“输入下标有误”
输入样例:
在这里给出一组输入。例如:
Hello World
-4
输出样例:
在这里给出相应的输出。例如:
o
输入样例:
在这里给出一组输入。例如:
abcd
4
输出样例:
在这里给出相应的输出。例如:
输入下标有误
输入样例:
在这里给出一组输入。例如:
Good
?
输出样例:
在这里给出相应的输出。例如:
输入下标有误
n = input()
try:i = int(input())print(n[i])
except:print('输入下标有误')
7-7 往返跑方阵
分数 10
作者 马杨珲
单位 浙江科技学院
所谓“往返跑方阵”,是指对任意给定的n,将1到n×n的整数依次填写到n×n的方阵中,从右上角第1个格子开始,向下填充;倒底后,往左移动一列,改变方向,向上填充;到最上面一行后,再向左一列,改变方向,向下填充;.…… 以此类推,直到将n×n的方阵填满。本题要求构造这样的“往返跑方阵”。
输入格式:
输入一个正整数n(1⩽n⩽10 )
输出格式:
输出n×n的往返跑方阵。每行n个数字,每个数字占3位,右对齐
输入样例1:
在这里给出一组输入。例如:
3
输出样例1:
在这里给出相应的输出。例如:
7 6 1
8 5 2
9 4 3
输入样例2:
在这里给出一组输入。例如:
5
输出样例2:
在这里给出相应的输出。例如:
21 20 11 10 1
22 19 12 9 2
23 18 13 8 3
24 17 14 7 4
25 16 15 6 5
n = int(input())
i = 0#行下标
j = n-1 #列下标
list1 = [[0 for j in range(n)] for j in range(n)]# 创建一个nxn的矩阵
num = 1
while True:while i < n:#从上往下放list1[i].insert(0, num)num += 1 i +=1 #将某列放满i=n-1 #从最后一行开始放数字j -= 1#给n-1列放数字if j < 0:#循环终止条件,意味着放满了!breakwhile i >=0:#将n-1列从下往上放,直至放满list1[i].insert(0, num)num += 1i -= 1 i = 0 #从第一行开始放数字j -= 1 #放几列减几次,直到放满,循环终止if j < 0:break
for i in range(n):#遍历输出矩阵for j in range(n):if j == n-1:# print('{:>2d}')print("%3d" % list1[i][j])else:print("%3d" % list1[i][j], end='')
【python】pythonPTA编程练习2相关推荐
- python import io_详解Python IO编程
文件读写 读文件 try: # windows下utf8 f = open('./README.md', 'r', encoding='utf8', errors='ignore') print(f. ...
- [Python_7] Python Socket 编程
0. 说明 Python Socket 编程 1. TCP 协议 [TCP Server] 通过 netstat -ano 查看端口是否开启 # -*-coding:utf-8-*-"&qu ...
- OpenERP与Python 元编程
Python元编程被称为"黑魔法".Python界的传奇人物Tim Peters有云: 引用 Python的元编程这种黑魔法99%的人都无需了解,如果你拿不准是否应该用到它时,你不 ...
- Python网络编程(4)——异步编程select epoll
在SocketServer模块的学习中,我们了解了多线程和多进程简单Server的实现,使用多线程.多进程技术的服务端为每一个新的client连接创建一个新的进/线程,当client数量较多时,这种技 ...
- 这可能是Python面向对象编程的最佳实践
作者 | 崔庆才 来源 | 进击的Coder(ID:FightingCoder) Python 是支持面向对象的,很多情况下使用面向对象编程会使得代码更加容易扩展,并且可维护性更高,但是如果你写的多了 ...
- 《从问题到程序:用Python学编程和计算》——第2章 计算和编程初步 2.1 数值表达式和算术...
本节书摘来自华章计算机<从问题到程序:用Python学编程和计算>一书中的第2章,第2.1节,作者 裘宗燕,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 第2 ...
- Python手动编程实现斐波那契数列
Python手动编程实现斐波那契数列 目录 Python手动编程实现斐波那契数列 #斐波那契数列起源 #斐波那契数列特点<
- Python面向对象编程:类继承和其衍生术语
Python面向对象编程03:类继承和其衍生术语 前面我们讲到过正则表达式字符等,上一篇分享了面向对象编程和类的结构,最后稍微提到了继承. Python面向对象编程:深度认识类class_ Pytho ...
- python网络编程--socket简单实现
python网络编程 ...
- 《Python面向对象编程指南》——1.2 基类中的__init__()方法
本节书摘来自异步社区<Python面向对象编程指南>一书中的第1章,第1.2节,作者[美]Steven F. Lott, 张心韬 兰亮 译,更多章节内容可以访问云栖社区"异步社区 ...
最新文章
- python写一个表白程序带时间_Python 打造最强表白程序
- sis防屏蔽程序_弱电工程屏蔽机房设计方案
- 祝文欣讲座免费在线学习 免费下载
- Attribute ‘sklearn.linear_model._logistic.LogisticRegression.multi_class‘ must be explicitly set to
- xshell堡垒机_Jumpserver开源堡垒机管理
- 蓝桥杯-算法提高-种树
- Linux系统如何安装VMware(虚拟机)
- Microsoft SQL Server Compact 4.0ADO.NET Entity Framework 4.1MVC3
- 寻找圣杯 In Search of the Holy Grail
- 电脑会在哪些地方暴露你的隐私
- 分段锁——ConcurrentHashMap
- AI - 机器学习(Machine Learning)与深度学习(Deep Learning)资料汇总
- pdflatex和xelatex的使用差别和建议
- 02_爬取灌篮高手全国大赛漫画
- 解决Wireshark抓包跟踪流后http的响应正文乱码
- Lisa新歌破吉尼斯世界纪录,MV播放量7460万,中国粉丝贡献大
- 揭开“QUIC”的神秘面纱
- 母亲节,来一打AI数据范儿的礼物?
- 微信公众号编辑菜单栏代码
- 用html+css实现小米官网的模拟
热门文章
- 微软 Office 全家桶被 GPT-4 革新:Word 一键变成 PPT,打工人的春天来了!
- 学生信息管理系统-web项目实训(基于JAVA)
- Oracle 的 表空间(Tablespace)、用户(User)、模式(Schema)
- Java导出多个excel并打包压缩成.zip文件
- Linux中文乱码-word-pdf字体转换问题处理
- word如何批量更改公式字体
- 赛格威机器人路萌中国首秀 开发者计划今年将在国内落地
- 『时代』杂志:元宇宙将改变世界;健身教练:AI让我丢工作!有话说北欧人工智能夏令营资料大公开;深度学习书籍TOP5 | ShowMeAI资讯日报
- mt8735 android5.1调试MIC增益参数和去除录制的音频文件播放有电流声
- 安索夫矩阵分析市场和产品策略