浙大版《Pythonプログラム設計》テーマ集プログラミング問題第三章


第3章-1身長より大きい平均値
l=list(map(int,input().split()))
average=sum(l)/len(l)
for i in l:
    if i>average:
        print(i,end=' ')

第3章-2身分証明書の検査
l=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]	#   
zm=['1','0','X','9','8','7','6','5','4','3','2']	#      
n=int(input())
cnt=0
for i in range(n):
    id=input()
    sum=0
    for i in range(17):
        if id[i].isdigit():
            sum+=l[i]*int(id[i])
        else:
            print(id)
            break
    if i==16:	#       17     
        z=sum%11
        if zm[z]!=id[-1]:
            print(id)
        else:
            cnt+=1
if cnt==n:
    print('All passed')

第3章-3出力文字列における位置インデックス
s=input()
char1,char2=input().split()
for i in range(len(s)-1,-1,-1):
    if s[i]==char1 or s[i]==char2:
        print(i,s[i])

第3章-4指定文字の検索
char=input()
s=input()
for i in range(len(s)-1,-1,-1):
    if s[i]==char:
        print('index =',i)
        break
else:
    print('Not Found')

第3章-5文字変換
s=input()
print(int(''.join([i for i in s if i.isdigit()])))

第3章-6整数の序列の中で出現する回数の最も多い数を求めます
l=list(map(int,input().split()))
n=l.pop(0)
cnt={}
for i in l:
    cnt[i]=cnt.get(i,0)+1
for key,value in cnt.items():
    if value==max(cnt.values()):
        print(key,value)

第3章-7最大値とその下標を求める
n=int(input())
l=list(map(int,input().split()))
print(max(l),l.index(max(l)))

第3章-8文字列逆順
s=input()
print(s[::-1])

第3章-9文字列を10進数整数に変換
s=input()
sum=0
for i in s:
    if i.isdigit():
        sum=sum*16+ord(i)-48
    if 'a'<=i<='f':
        sum=sum*16+ord(i)-87
    if 'A'<=i<='F':
        sum=sum*16+ord(i)-55
for j in range(len(s)):
    if s[j].isdigit() or 'a'<=s[j]<='f' or 'A'<=s[j]<='F':
        break
if '-' in s and j>s.find('-'):
    sum=-sum
print(sum)

第3章-10統計大文字子音アルファベット
l=['A','E','I','O','U']
s=input()
cnt=0
for i in s:
    if i not in l and i.isupper():
        cnt+=1
print(cnt)

第3章-11文字列並べ替え
print('After sorted:')
print(*sorted(list(input().split())),sep='
'
)

第3章-12整数の桁数と各位の数字の和を求めます
num=input()
s=[int(i) for i in num]
print(len(num),sum(s))

第3章-13文字列置換
s=input()
l=''
for i in s:
    if i.isupper():
        i=chr(90-(ord(i)-65))   #'Z'     'A'   
    l+=i
print(l)

第3章-14文字列アルファベットの大文字と小文字の変換
s=input()
s=s[:-1]
for i in s:
    if i.isupper():
        print(i.lower(),sep='',end='')
    elif i.islower():
        print(i.upper(),sep='',end='')    
    else:
        print(i,sep='',end='')

第3章-15 1行テキストの単語数を統計する
s=list(input().split())
print(len(s))

第3章-16重複文字の削除
l=input()
for i in sorted(list(set([i for i in l]))):
    print(i,sep='',end='')

第3章-17削除文字
s=input().strip()
c=input().strip()
result=[i for i in s if i!=c.lower() and i!=c.upper()]
print('result:',''.join(result))

第3章-18重複しない英字を10個出力
s=input()
l=''
for i in s:
    if i.isalpha() and i.lower() not in l and i.upper() not in l:
        l+=i
    if len(l)==10:
        break
if len(l)<10:
    print('not found')
else:
    print(l)

第3章-19最長の文字列を探す
n=int(input())
l=[]
max=0
maxi=0
for i in range(n):
    s=input()
    if len(s)>max:
        max=len(s)
        maxi=i
    l.append(s)
print('The longest is:',l[maxi])

第3章-20逆順の3桁
x=int(input())
while x%10==0:
    x=x//10
print(str(x)[::-1])

第3章-21判断回文文字列
s=input()
t=s[::-1]
print(s)
if s==t:
    print('Yes')
else:
    print('No')

第3章-22大文字英字出力
s=input()
l=''
for i in s:
    if i.isupper() and i not in l:
        l+=i
if len(l)==0:
    print('Not Found')
else:
    print(l)