python浙大-MOOC-PTA ch 3
51522 ワード
7-1 3-1.身長より大きい平均値(10点)小中学生は学期ごとに健康診断を受け、身長を測らなければならない.身長は子供の成長状況を反映することができるからだ.今、1つのクラスの身長はすでに量って、その中で平均身長を超えた身長を出力してください.プログラムの入力は1行のデータで、各データは正の整数で区切られています.プログラムは、入力した正の整数の平均数を超える入力値を出力します.各数の後ろにスペースがあり、出力の順序は入力と同じです.
-2身分証明書の検査(15分)合法的な身分証明書番号は、17ビットの地域、日付番号、順序番号に1ビットの検査コードを加えて構成されています.検証コードの計算規則は次のとおりです.
まず、上位17ビットの数字の重み付けを合計し、重み付けは{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}に割り当てられる.そして、計算した和対11を型抜きして値Zを得る.最後に、Z値と検査コードMの値を以下の関係で対応する.
7-3文字列内のアルファベットの位置インデックスを出力(20分)
7-4指定された文字を検索する(15分)本題では、指定された文字列から指定された文字を検索するプログラムが必要です.
7-5文字変換(15分)この問題では、1つの文字列のすべての数値文字(‘0’......‘9’)を抽出し、整数出力に変換する必要があります.
7-6整数シーケンスの中で出現回数が最も多い数(15点)を求める本題は1つの整数シーケンスの中で出現回数が最も多い整数とその出現回数を統計することを要求する.
7-7最大値とその下付き(20点)を求める本題はプログラムを書くことを要求して、与えられたn個の数の中の最大値とその対応する最小下付き(下付きは0から始まる)を探し出します.
7-8文字列逆シーケンス(15分)文字列を入力し、その文字列を逆シーケンスし、逆シーケンス後の文字列を出力します.
7-9文字列を10進数整数(15分)に変換#で終わる文字列を入力します.本題では、すべての非16進数文字(大文字と小文字を区別せず)をフィルタリングし、新しい16進数を表す文字列を構成し、それを10進数に変換して出力します.最初の16進数文字の前に「-」という文字がある場合は、その数が負数であることを示します.
7-10統計大文字子音アルファベット(15分)英語子音アルファベットはA、E、I、O、U以外のアルファベットである.この問題では、所定の文字列の大文字と補助音のアルファベットの個数を統計するプログラムを作成する必要があります.
7-11文字列ソート(20点)本題ではプログラムを作成し,5文字列を読み込み,小さい順に出力する.
7-12整数の桁数と各位の数字の和(15分)与えられた正の整数Nに対して、その桁数とその各位の数字の和を求める.
7-13文字列置換(15分)本題では、所定の文字列の大文字と小文字を以下の対応規則で置換するプログラムを作成する必要があります.
アルファベット対応アルファベットA Z B Y C X D W…X C Y B Z A
7-14文字列のアルファベットの大文字と小文字の変換(15分)本題はプログラムを書くことを要求して、1つの"#"で終わる文字列に対して、その小文字をすべて大文字に変換して、大文字をすべて小文字に変換して、その他の文字は出力しません.
7-15は1行のテキストの単語の個数を統計します(15分)このテーマはプログラムを編纂して1行の文字の中の単語の個数を統計することを要求します.「単語」とは、連続してスペースを含まない文字列を指し、各単語間はスペースで区切られ、スペース数は複数であってもよい.
7-16重複文字(20点)を削除する本題では、プログラムを作成し、所与の文字列を重複文字を削除した後、文字ASCIIコード順に小さい順から大きい順に並べ替えて出力する.
7-17削除文字(30分)文字列strを入力し、削除する文字cを入力し、大文字と小文字を区別せず、文字列strに表示されるすべての文字cを削除します.
7-18は10個の重複しない英字(50点)を出力してランダムに文字列を入力し、一番左の10個の重複しない英字(大文字と小文字を区別しない)を選択します.10文字の英字がない場合は、「not found」というメッセージが表示されます.
7-19最も長い文字列(15分)を探す本題はプログラムを書くことを要求して、入力したN個の文字列に対して、その中の最も長い文字列を出力します.
7-20逆順の3桁(10点)プログラムは、毎回正の3桁を読み込み、ビット逆順の数字を出力します.注意:入力した数字に末尾の0が含まれている場合、出力に先頭の0を付けるべきではありません.例えば入力700、出力は7であるべきである.
7-21返信文字列(15分)を判断する文字列を入力し、その文字列が返信であるか否かを判断する.回文は文字列の中心が対称で、左から右へ読むのと右から左へ読むのと同じ内容です.
7-22大文字英字(15分)を出力する本題はプログラムを書くことを要求し、所定の文字列に現れた大文字英字を順次出力し、各文字は1回しか出力しない.大文字の英字がない場合は「Not Found」を出力します.
7-23は2つの文字列が変位語(40点)であるかどうかを判断するこの問題の最後の点が過ぎていないかどうかを判断し、QQQQが1つの文字列が別の文字列の再配列の組み合わせである場合、この2つの文字列は互いに変位語であることを指摘する.例えば、「heart」と「earth」は互いに変位語であり、「Mary」と「arMy」も互いに変位語である.
a=input()
b=a.split(' ')
num=[]
for i in b:
num.append(int(i))
b=num
sum=0
for i in b:
sum+=i
ave=sum/len(b)
for i in b:
if(i>ave):
print(i,end=' ')
-2身分証明書の検査(15分)合法的な身分証明書番号は、17ビットの地域、日付番号、順序番号に1ビットの検査コードを加えて構成されています.検証コードの計算規則は次のとおりです.
まず、上位17ビットの数字の重み付けを合計し、重み付けは{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}に割り当てられる.そして、計算した和対11を型抜きして値Zを得る.最後に、Z値と検査コードMの値を以下の関係で対応する.
weight=(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2)
trans=('1','0','X','9','8','7','6','5','4','3','2')
n=int(input())
count=0 #
for i in range(n):
s=input()
lst=list(s)
check=[lst[i] for i in range(0,17) if ord(lst[i]) in range(ord('0'),ord('9')+1)]
if len(check)<17:
print(s)
count+=1
else:
total=sum([int(lst[i])*weight[i] for i in range(17)])
res=total%11
if trans[res]!=lst[17]:
print(s)
count+=1
if count==0:
print("All passed")
7-3文字列内のアルファベットの位置インデックスを出力(20分)
sen=input()
a,b=input().split()
lst=[(i,sen[i]) for i in range(len(sen)) if sen[i]==a or sen[i]==b]
lstnew=lst[::-1]
for i in range(len(lstnew)):
print(lstnew[i][0],lstnew[i][1])
7-4指定された文字を検索する(15分)本題では、指定された文字列から指定された文字を検索するプログラムが必要です.
a=input().strip()
b=input()
#find index index
if b.find(a)==-1:
print("Not Found")
else:
print("index = {}".format(b.rindex(a)))
7-5文字変換(15分)この問題では、1つの文字列のすべての数値文字(‘0’......‘9’)を抽出し、整数出力に変換する必要があります.
a=input()
b=''
for i in range (len(a)):
if '0'<=a[i]<='9':
b=b+a[i]
print(int(b))
# a=input()
# b=0
# for i in range (len(a)):
# if '0'<=a[i]<='9':
# b=b*10+int(a[i])
# print(b)
7-6整数シーケンスの中で出現回数が最も多い数(15点)を求める本題は1つの整数シーケンスの中で出現回数が最も多い整数とその出現回数を統計することを要求する.
b=list(map(int,input().split()))
#list ,
c=b[1:].copy()
countmax=c.count(c[0])
maxi=c[0]
for i in range(len(c)):
if countmax<c.count(c[i]):
countmax=c.count(c[i])
maxi=c[i]
print(maxi,countmax)
7-7最大値とその下付き(20点)を求める本題はプログラムを書くことを要求して、与えられたn個の数の中の最大値とその対応する最小下付き(下付きは0から始まる)を探し出します.
a=int(input())
b=input()
c=[]
d=b.split()
for i in range (a):
c.append(int(d[i]))
# print(c)
print(max(c),c.index(max(c)))
7-8文字列逆シーケンス(15分)文字列を入力し、その文字列を逆シーケンスし、逆シーケンス後の文字列を出力します.
# a=input()
# print(a[::-1])
a=input()
print(''.join(reversed(a)))
7-9文字列を10進数整数(15分)に変換#で終わる文字列を入力します.本題では、すべての非16進数文字(大文字と小文字を区別せず)をフィルタリングし、新しい16進数を表す文字列を構成し、それを10進数に変換して出力します.最初の16進数文字の前に「-」という文字がある場合は、その数が負数であることを示します.
a=input().strip().upper()
b=''
for i in range(len(a)):
if '0'<=a[i]<='9' or 'A'<=a[i]<='F':
b+=a[i]
if b=='':
print(0)
else:
if a.find('-')<a.find(b[0]) and a.find('-')!=-1:
c='-'+b
print(int(c,16))
else:
print(int(b,16))
7-10統計大文字子音アルファベット(15分)英語子音アルファベットはA、E、I、O、U以外のアルファベットである.この問題では、所定の文字列の大文字と補助音のアルファベットの個数を統計するプログラムを作成する必要があります.
a=input()
b=['A','E','I','O','U']
count=0
for i in range(len(a)):
if a[i] not in b and 'A'<=a[i]<='Z':
count=count+1
print(count)
7-11文字列ソート(20点)本題ではプログラムを作成し,5文字列を読み込み,小さい順に出力する.
# list=['red','yellow','blue','green','white']
a,b,c,d,e=input().split()
list=sorted([a,b,c,d,e])
print("After sorted:")
for i in range(len(list)):
print(list[i])
7-12整数の桁数と各位の数字の和(15分)与えられた正の整数Nに対して、その桁数とその各位の数字の和を求める.
n=int(input())
lst=[c for c in str(n)]
length=len(lst)
s=sum([int(c) for c in lst])
print(length,s)
7-13文字列置換(15分)本題では、所定の文字列の大文字と小文字を以下の対応規則で置換するプログラムを作成する必要があります.
アルファベット対応アルファベットA Z B Y C X D W…X C Y B Z A
a=input()
b=''
for i in range(len(a)):
if 'A'<=a[i]<='Z':
b+=chr(ord('A')+ord('Z')-ord(a[i]))
else:
b+=a[i]
print(b)
7-14文字列のアルファベットの大文字と小文字の変換(15分)本題はプログラムを書くことを要求して、1つの"#"で終わる文字列に対して、その小文字をすべて大文字に変換して、大文字をすべて小文字に変換して、その他の文字は出力しません.
a=input()
b=''
for i in range (len(a)-1):
if 'a'<=a[i]<='z':
b=b+a[i].upper()
elif 'A'<=a[i]<='Z':
b=b+a[i].lower()
elif a[i]==' ':
b=b+' '
else:
b=b+a[i]
print(b)
7-15は1行のテキストの単語の個数を統計します(15分)このテーマはプログラムを編纂して1行の文字の中の単語の個数を統計することを要求します.「単語」とは、連続してスペースを含まない文字列を指し、各単語間はスペースで区切られ、スペース数は複数であってもよい.
a=input().split()
print(len(a))
7-16重複文字(20点)を削除する本題では、プログラムを作成し、所与の文字列を重複文字を削除した後、文字ASCIIコード順に小さい順から大きい順に並べ替えて出力する.
a=list(set(input()))
a.sort()
for i in a:
print(i,end="")
7-17削除文字(30分)文字列strを入力し、削除する文字cを入力し、大文字と小文字を区別せず、文字列strに表示されるすべての文字cを削除します.
a=input().strip()
b=input().strip()
print("result:",a.replace(b.upper(),'').replace(b.lower(),''))
7-18は10個の重複しない英字(50点)を出力してランダムに文字列を入力し、一番左の10個の重複しない英字(大文字と小文字を区別しない)を選択します.10文字の英字がない場合は、「not found」というメッセージが表示されます.
letter='abcdefghijklmnopgrstuvwxyz'
s1=input().strip()
s=s1.lower()
l=list(s)
l1=[k for k in range(len(l)) if l[k] in letter and l.index(l[k])==k]
s2=''.join([s1[k] for k in l1])
if len(s2)>=10:
print(s2[:10])
else:
print("not found")
7-19最も長い文字列(15分)を探す本題はプログラムを書くことを要求して、入力したN個の文字列に対して、その中の最も長い文字列を出力します.
a=int(input())
max=0
tmp=''
for i in range(a):
tmp=input()
if len(tmp)>max:
max=len(tmp)
long=tmp
print("The longest is:",long)
7-20逆順の3桁(10点)プログラムは、毎回正の3桁を読み込み、ビット逆順の数字を出力します.注意:入力した数字に末尾の0が含まれている場合、出力に先頭の0を付けるべきではありません.例えば入力700、出力は7であるべきである.
num=int(input())
string=str(num)
restring=string[::-1]
print(int(restring))
7-21返信文字列(15分)を判断する文字列を入力し、その文字列が返信であるか否かを判断する.回文は文字列の中心が対称で、左から右へ読むのと右から左へ読むのと同じ内容です.
a=input()
print(a)
if a==a[::-1]:
print("Yes")
else:
print("No")
7-22大文字英字(15分)を出力する本題はプログラムを書くことを要求し、所定の文字列に現れた大文字英字を順次出力し、各文字は1回しか出力しない.大文字の英字がない場合は「Not Found」を出力します.
a=input()
list=[]
for i in range(len(a)):
if 'A'<=a[i]<='Z' and a[i] not in list:
list.append(a[i])
if len(list)==0:
print("Not Found")
else:
print(''.join(list))
7-23は2つの文字列が変位語(40点)であるかどうかを判断するこの問題の最後の点が過ぎていないかどうかを判断し、QQQQが1つの文字列が別の文字列の再配列の組み合わせである場合、この2つの文字列は互いに変位語であることを指摘する.例えば、「heart」と「earth」は互いに変位語であり、「Mary」と「arMy」も互いに変位語である.
a=input()
b=input()
c=list(a)
d=list(b)
flag=True
for i in range(len(a)):
if a[i] not in d:
flag=False
for i in range(len(b)):
if b[i] not in c:
flag=False
if flag==True:
print('yes')
else:
print('no')