Python 練習問題

1.2倍チェック

整数nに対して、nを十進数で表した時の各桁の和をS(n)で表すことにします。例えば、S(123)=1+2+3=6です。2つの3桁の整数A,Bが与えられます。S(A)とS(B)のうち大きい方の値を求めてください。

a,b = input().split()

sa = sum(map(int,a))
sb = sum(map(int,b))

ans = max(sa,sb)
print(ans)

2.増減管理

ある商品のN日間の売上が整数列A1,A2,…,ANとして与えられる。Ai(1≦i≦N)がi日目の売上を表す。
あなたは、2日目以降の各日について、その日の売上が前日の売上よりどれだけ高かったか (あるいは低かったか) を出力するプログラムを作成することにした。
より具体的には、プログラムはN−1行を出力し、i行(1≦i≦N−1)の内容は次の通りである。
・Ai+1がAiと等しい場合: stay
・Ai+1がAiより小さい場合: down [減少量]、ここで [減少量] は整数値Ai−Ai+1
・Ai+1がAiより大きい場合: up [増加量]、ここで [増加量] は整数値Ai+1−Ai
このプログラムを作成せよ。
制約
・2≦N≦100,000
・0≦Ai≦1,000,000,000
・入力中の値はすべて整数である。
#入力例:a b c
A= input().split()
 
#このまま要素ごとに出力する場合
for i in range(len(A)-1):
    if int(A[i+1]) == int(A[i]):
      print('stay')
    elif int(A[i+1]) < int(A[i]):
      print('down[減少量]' ,int(A[i])-int(A[i+1]))
    else:
      print('up[増加量]' ,int(A[i+1])-int(A[i]))

3.3番目

6つの相異なる整数A,B,C,D,E,Fが与えられる。
このうち3番目に大きい数を調べるプログラムを作成せよ。
制約 ・1≦A,B,C,D,E,F≦100
・A,B,C,D,E,Fはすべて異なる。
・入力中の値はすべて整数である。
#入力
org_list= input().split()

整数_list = [int(s) for s in org_list]
new_list = sorted(整数_list,reverse=True)
print(org_list)
print(new_list)
print(new_list[2])

4.時速を秒速に変換

時速をkm/hの単位で入力すると、秒速がm/sの単位で表示されるプログラムを作成せよ。
hspeed = float(input('時速(km/h)> '))
sspeed = hspeed*1000.0/60**2
print('秒速 = ',sspeed,'m/s',sep=' ')

5.金種計算

 金額を入力するとその金額を出来るだけ少ない枚数の貨幣を使って支払えるように貨幣の枚数を数えるプログラムを書きなさい。貨幣は、{1万円札、五千円札、千円札、五百円玉、百円玉、五十円玉、十円玉、五円玉、一円玉}とする(余り使わないので2千円札は除く)。
money = int(input('金額(円)> '))
print('金額:',money,'円',sep=' ')
kinsyu1 = ["一万円札","五千円札","千円札","五百円玉","百円玉","五十円玉","十円玉","五円玉","一円玉"]
kinsyu2 = [10000,5000,1000,500,100,50,10,5,1]
for i in range(len(kinsyu1)):
  maisuu = money // kinsyu2[i]
  money = money % kinsyu2[i]
  if len(kinsyu1[i])==3:
    print(kinsyu1[i],' =',maisuu,'枚',sep=' ')
  else:
    print(kinsyu1[i],'=',maisuu,'枚',sep=' ')
タイトルとURLをコピーしました