PTA-浙大版 《Python程序设计》 第三章编程题目及答案

博主第一次写CSDN的博客,所以排版上可能有些不尽人意,代码部分均为个人思路,可能复杂或者考虑欠妥,欢迎大家一起讨论~

目录


第一题:大于身高的平均值

第二题:输入一个字符串,再输入两个字符,求这两个字符在字符串中的索引。

第三题:求整数的位数及各位数字之和

第四题:字符替换

第五题:删除字符 

第六题:输出10个不重复的英文字母

第七题: 逆序的三位数

第八题:判断两个字符串是否为变位词 

第九题:输入字符串,排序后输出最大字符及该字符在原字符串中的索引

第十题:计算有n个字符串中最长的字符串长度

第十一题:位1的个数

第十二题:整数的二进制相加

第十三题:汉明距离

第十四题:判断回文字符串

第十五题:输入一行字符串,并将它转换成10进制数输出 

第十六题: 统计满足特定条件的字符数

第十七题:查验身份证 


第一题:大于身高的平均值

中小学生每个学期都要体检,要量身高,因为身高可以反映孩子的生长状况。现在,一个班的身高已经量好了,请输出其中超过平均身高的那些身高。程序的输入为一行数据,其中以空格分隔,每个数据都是一个正整数。程序要输出那些超过输入的正整数的平均数的输入值,每个数后面有一个空格,输出的顺序和输入的相同。

这里用了np数组求得平均数,当然for循环累加也是可以的

import numpy as np
data = input().split()
data = list(map(int,data))
avg = np.mean(data)
for i in data:
    if i > avg:
        print(i,end = ' ')

后来试了一下倒也没有必要调用numpy,直接用sum函数即可处理,这样程序耗时能从278ms降到15ms左右。

data = list(map(int,input().split()))
avg = sum(data)/len(data)
for i in data:
    if i > avg:
        print(i,end=' ')

第二题:输入一个字符串,再输入两个字符,求这两个字符在字符串中的索引。

输入一个字符串,再输入两个字符,求这两个字符在字符串中的索引。

这里我想的是直接对字符串倒序,然后依次检索,输出index调整一下即可

data = input()
a,b = input().split()
data = data[::-1]

for i in range(0,len(data)):
    if data[i] == b:
        print(len(data)-i-1,b)

for i in range(0,len(data)):
    if data[i] == a:
        print(len(data)-i-1,a)       

第三题:求整数的位数及各位数字之和

对于给定的正整数N,求它的位数及其各位数字之和。(提示:把整数转换成字符串,列表,用sum和len函数)

N = input()
list = list(N)
suma = 0
for i in list:
    suma = suma + int(i)
print(len(list),suma)

第四题:字符替换

题要求编写程序,将输入字符串中的大写英文字母按以下对应规则替换:(提示:转换表用元组实现)

暂时没看元组是什么东西,所以直接用ascii码做了,之后会再补充~

data = list(input())
for i in range(len(data)):
    if ord(data[i]) >= 65 and ord(data[i]) <= 90:
        data[i] = chr(155-ord(data[i]))

data = ''.join(data)
print(data)

第五题:删除字符 

输入一个字符串 str,再输入要删除字符 c,大小写不区分,将字符串 str 中出现的所有字符 c 删除。提示:去掉两端的空格。

str = input().strip()
list = list(str)
list1 = list[:]
c = input().strip()
for i in list:
    if c.lower() == i.lower():
        list1.remove(i)
print('result:', ''.join(list1))

第六题:输出10个不重复的英文字母</

  • 20
    点赞
  • 120
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值