文章目录

  • 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相关推荐

  1. python import io_详解Python IO编程

    文件读写 读文件 try: # windows下utf8 f = open('./README.md', 'r', encoding='utf8', errors='ignore') print(f. ...

  2. [Python_7] Python Socket 编程

    0. 说明 Python Socket 编程 1. TCP 协议 [TCP Server] 通过 netstat -ano 查看端口是否开启 # -*-coding:utf-8-*-"&qu ...

  3. OpenERP与Python 元编程

    Python元编程被称为"黑魔法".Python界的传奇人物Tim Peters有云: 引用 Python的元编程这种黑魔法99%的人都无需了解,如果你拿不准是否应该用到它时,你不 ...

  4. Python网络编程(4)——异步编程select epoll

    在SocketServer模块的学习中,我们了解了多线程和多进程简单Server的实现,使用多线程.多进程技术的服务端为每一个新的client连接创建一个新的进/线程,当client数量较多时,这种技 ...

  5. 这可能是Python面向对象编程的最佳实践

    作者 | 崔庆才 来源 | 进击的Coder(ID:FightingCoder) Python 是支持面向对象的,很多情况下使用面向对象编程会使得代码更加容易扩展,并且可维护性更高,但是如果你写的多了 ...

  6. 《从问题到程序:用Python学编程和计算》——第2章 计算和编程初步 2.1 数值表达式和算术...

    本节书摘来自华章计算机<从问题到程序:用Python学编程和计算>一书中的第2章,第2.1节,作者 裘宗燕,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 第2 ...

  7. Python手动编程实现斐波那契数列

    Python手动编程实现斐波那契数列 目录 Python手动编程实现斐波那契数列 #斐波那契数列起源 #斐波那契数列特点<

  8. Python面向对象编程:类继承和其衍生术语

    Python面向对象编程03:类继承和其衍生术语 前面我们讲到过正则表达式字符等,上一篇分享了面向对象编程和类的结构,最后稍微提到了继承. Python面向对象编程:深度认识类class_ Pytho ...

  9. python网络编程--socket简单实现

    python网络编程                                                                                           ...

  10. 《Python面向对象编程指南》——1.2 基类中的__init__()方法

    本节书摘来自异步社区<Python面向对象编程指南>一书中的第1章,第1.2节,作者[美]Steven F. Lott, 张心韬 兰亮 译,更多章节内容可以访问云栖社区"异步社区 ...

最新文章

  1. python写一个表白程序带时间_Python 打造最强表白程序
  2. sis防屏蔽程序_弱电工程屏蔽机房设计方案
  3. 祝文欣讲座免费在线学习 免费下载
  4. Attribute ‘sklearn.linear_model._logistic.LogisticRegression.multi_class‘ must be explicitly set to
  5. xshell堡垒机_Jumpserver开源堡垒机管理
  6. 蓝桥杯-算法提高-种树
  7. Linux系统如何安装VMware(虚拟机)
  8. Microsoft SQL Server Compact 4.0ADO.NET Entity Framework 4.1MVC3
  9. 寻找圣杯 In Search of the Holy Grail
  10. 电脑会在哪些地方暴露你的隐私
  11. 分段锁——ConcurrentHashMap
  12. AI - 机器学习(Machine Learning)与深度学习(Deep Learning)资料汇总
  13. pdflatex和xelatex的使用差别和建议
  14. 02_爬取灌篮高手全国大赛漫画
  15. 解决Wireshark抓包跟踪流后http的响应正文乱码
  16. Lisa新歌破吉尼斯世界纪录,MV播放量7460万,中国粉丝贡献大
  17. 揭开“QUIC”的神秘面纱
  18. 母亲节,来一打AI数据范儿的礼物?
  19. 微信公众号编辑菜单栏代码
  20. 用html+css实现小米官网的模拟

热门文章

  1. 微软 Office 全家桶被 GPT-4 革新:Word 一键变成 PPT,打工人的春天来了!
  2. 学生信息管理系统-web项目实训(基于JAVA)
  3. Oracle 的 表空间(Tablespace)、用户(User)、模式(Schema)
  4. Java导出多个excel并打包压缩成.zip文件
  5. Linux中文乱码-word-pdf字体转换问题处理
  6. word如何批量更改公式字体
  7. 赛格威机器人路萌中国首秀 开发者计划今年将在国内落地
  8. 『时代』杂志:元宇宙将改变世界;健身教练:AI让我丢工作!有话说北欧人工智能夏令营资料大公开;深度学习书籍TOP5 | ShowMeAI资讯日报
  9. mt8735 android5.1调试MIC增益参数和去除录制的音频文件播放有电流声
  10. 安索夫矩阵分析市场和产品策略