0
点赞
收藏
分享

微信扫一扫

浙大python习题超详细思路(第三章)

骑在牛背上看书 2022-04-19 阅读 420
python

人生苦短,我用python

https://pintia.cn/problem-sets/1111652100718116864/problems/type/1

在这里插入图片描述

浙大python习题\第3章\1.输出大于平均数的数.py

#中小学生每个学期都要体检,要量身高,因为身高可以反映孩子的生长状况。
# 现在,一个班的身高已经量好了,请输出其中超过平均身高的那些身高。
# 程序的输入为一行数据,其中以空格分隔,每个数据都是一个正整数。
# 程序要输出那些超过输入的正整数的平均数的输入值,每个数后面有一个空格,
# 输出的顺序和输入的相同。
a=list(map(int,input().split()))
b=sum(a)/len(a)      #求平均数
for i in a:
    if i>=b:
        print(i,end=' ') #每一个输出的i之后,还会执行end后面的内容''之间有一个空格,使输出的每个数分开

浙大python习题\第3章\2.查身份证是否正确.py

#一个合法的身份证号码由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=int(input())
w=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]
s=0
dic={0:'1',1:'0',2:'x',3:'9',4:'8',5:'7',6:'6',7:'5',8:'4',9:'3',10:'2'}
#建立一个字典用于存放z值和校验码
for i in range(n):
    r=[]
    m=input()
    if not m[0:17].isdigit():
        print(m)
        s+=1
    else:
        for k in range(17):     #查找第17位
            r.append(w[k]*int(m[k]))
        if dic[sum(r)%11]!=m[17]:
            print(m)
            s+=1
if s==0:
    print("All passed")

浙大python习题\第3章\3.求字符索引.py

#输入一个字符串,再输入两个字符,求这两个字符在字符串中的索引。
s=input()                          #输入字符串
a,b=input().split()                #输入字符
for i in range(len(s)-1,-1,-1):    #倒着遍历字符串,为什么要倒着,因为题目要求
    if s[i]==a or s[i]==b:
        print(i,s[i])              #输出下标和字母

浙大python习题\第3章\4.查找指定字符.py

#本题要求编写程序,从给定字符串中查找某指定的字符。
#输入的第一行是一个待查找的字符。第二行是一个以回车结束的非空字符串(不超过80个字符)。
#如果找到,在一行内按照格式“index = 下标”输出该字符在字符串中所对应的最大
# 下标(下标从0开始);否则输出"Not Found"。
a=input()
b=input()
for i in range(len(b)-1,-1,-1):   #也可以用 range(0,len(b),1)
    if b[i]==a:
        print(f'index={i}')     #下标是从0开始的
        break
    if i==0:
        print('Not Found')

浙大python习题\第3章\5.提取数字.py

#提取一个字符串中的所有数字字符(‘0’……‘9’),将其转换为一个整数输出。
#输入样例:free82jeep5   输出样例:825
#法1:
n = input()
s =" "                   #用于放字符
for i in n:
   if i>='0' and i<= '9':    #判断是否为数字
        s+=i                   #以字符形式相加
print(int(s))

#法2:
# m=input()
# n=[]                                #用于放字符
# for i in m:
#     if i>='0' and i<='9':       #判断是否为数字
#         n.append(int(i))               #列表追加
# print(sum(n)) 

#法3:
# print(int(''.join([i for i in input() if i.isdigit()]))+1)

浙大python习题\第3章\6.求出现次数最多的数.py

#统计一个整型序列中出现次数最多的整数及其出现次数。
a=input().split()
e=a[1:int(a[0])+1]
b=set(e)
c=0 
for i in b:
    d=e.count(i)
    if d>c:
        c=d
        m=i
print(m,c)

浙大python习题\第3章\7.找最大值及其下标.py

#输入格式:
#输入在第一行中给出一个正整数n(1<n≤10)。第二行输入n个整数,用空格分开。
#输出格式:
#在一行中输出最大值及最大值的最小下标,中间用一个空格分开。
a=int(input())
b=list(map(int,input().split()))
print(max(b),b.index(max(b)))       #.index(max(b))用于输出max(b)的最小下标

浙大python习题\第3章\8.输出字符串逆序.py

#输入格式:
#输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。
#输出格式:
#在一行中输出逆序后的字符串。
n=input()
print(n[::-1]) 

浙大python习题\第3章\9.挑出16进制转换成10进制.py

#输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),
# 组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。
# 如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。

str1 = input()
s = '1234567890abcdefABCDEF'
c = ""
for item in str1:
    if item in s:
        c = c + item
if c == '':
    print('0')
elif str1.find(c[0])>str1.find('-'):    
    print(-int(c,16))
else:
    print(int(c,16))

浙大python习题\第3章\10.求大写的辅音字母个数.py

#英文辅音字母是除A、E、I、O、U以外的字母。本题要求编写程序,
#统计给定字符串中大写辅音字母的个数。
a=input()
b=['A','E','I','O','U']
count=0
for i in a:
    if i.isupper() and i not in b:   #isupper()检查字母大写
        count+=1
print(count)

浙大python习题\第3章\11.字符串排序.py

#按首字母排序
a = input().split()
l = []
for i in a:
    l.append(i)    #追加
    l.sort()       #排序

for j in l:        #按格式输出
    print(j) 


#print(*l)可代替第二个for

浙大python习题\第3章\12求整数位数及其和.py

# #对于给定的正整数N,求它的位数及其各位数字之和。
n = int(input())
s = 0
m = str(n)              #转换成字符串是为了方便求长度
for i in m:             #遍历m这个字符串
    s = s + int(i)
print(len(m),s)

# print(sum([int(i) for i in input()]))

浙大python习题\第3章\13.$字符对应替换.py

#替换大写字母,A->Z,B->Y.....
b='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
c=b[::-1]       #把b逆序
a=''.maketrans(b,c)    #.maketrans(b,c)表示用c替换b
x=input()
print(x.translate(a))

浙大python习题\第3章\14.字符大小写转换.py

#对一个以“#”结束的字符串,将其小写字母全部转换成大写字母,
# 把大写字母全部转换成小写字母,其他字符不变输出。
s=input()
s=s.replace('#','')    
#题目要求不能输出#,这里replace函数用空格把#替换了
print(s.swapcase())    #swapcase函数用于大小写转换

浙大python习题\第3章\15.统计单词个数.py

#统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,
# 各单词之间用空格分隔,空格数可以是多个。
l=list(input().split())     #把文本变成列表
print(len(l))               #len()函数用于输出字符串,列表,字典,元组长度

浙大python习题\第3章\16.删除重复字符.py

#将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。
l=list(set(input()))    #用集合去掉重复元素,再把数据存入列表
l.sort()                #对列表升序排列
print(''.join(l))       #join用于将列表转换为字符串

浙大python习题\第3章\17.删指定字符.py

#输入一个字符串 str,再输入要删除字符 c,
# 大小写不区分,将字符串 str 中出现的所有字符 c 删除。
s = list(input().strip())
d = input().strip()
n=[]                     #创建列表
for i in s:
	if d.upper() !=i and d.lower()!=i:
		n.append(i)
 #upper用于小写转大写,lower用于大写转小写
 #appen用于把i元素追加到列表后面
print("result:",''.join(n))        
#用append输出的是一个list,要用join转换

浙大python习题\第3章\18.挑10个不重复的字母.py

#随机输入一个字符串,把最左边的10个不重复的英文字母(不区分大小写)挑选出来。 
# 如没有10个英文字母,显示信息“not found”
str = input()
arr = ""        #创建一个字符串
for i in str:
    if i.upper() and i.lower() not in arr and i.isalpha():
        arr += i               #isalpha()保证挑选出来的是字母而不是空格或数字
if len(arr) < 10:
    print("not found")
else:
    print(arr[:10])

浙大python习题\第3章\19.找最长的字符串.py

#输入格式:
# 输入第一行给出正整数N;随后N行,每行给出一个
# 长度小于80的非空字符串,其中不会出现换行符,空格,制表符。
# 输出格式:
# 在一行中用以下格式输出最长的字符串:
# The longest is: 最长的字符串
# 如果字符串的长度相同,则输出先输入的字符串。
a= int(input())
c=''
for i in range(a):  #遍历a中的一堆字符串
    b=input()
    if len(b) > len(c):      #如果b比c长就把b赋值给c
        c=b
print('The longest is:',c

浙大python习题\第3章\20.输出逆序的三位数.py

#程序每次读入一个正3位数,然后输出按位逆序的数字。
# 注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。
a=list(input())
print(int("".join(a[::-1])))   #[::-1]表示把列表a的元素倒着复制一遍

浙大python习题\第3章\21.判断回文字符.py

#输入一个字符串,判断该字符串是否为回文。
# 回文就是字符串中心对称,从左向右读和从右向左读的内容是一样的
a=input()
print(a)                 #题目要求要把输入的字符串再输出一遍
print('Yes') if a==a[::-1] else print('No')
                         #当a==a[::-1]时为回文

浙大python习题\第3章\22.顺序输出大写字母.py

#顺序输出给定字符串中所出现过的大写英文字母,
#每个字母只输出一遍;若无大写英文字母则输出“Not Found”
#顺序输出给定字符串中所出现过的大写英文字母
a=list(input())    #将输入的字符串转换为列表,之后就可以以长度是否大于0作为输出条件
b=[]               #定义一个列表用来放大写字母
for n in a:
    if n.isupper() and n not in b: #isupper()用于检查字母是否大写
        b.append(n)                #追加
if len(b)>0:
    print(''.join(b))
else:
    print('Not Found')
举报

相关推荐

0 条评论