TIL(#06) - 3.06



標準問題の概念範囲
  • 1次元アレイ
  • 関数
  • 文字列
  • 質問:大学生の新入生の90%が自分のクラスでの平均数が超えたと考えている.あなたは彼らに悲しい真実を伝えるべきだ.
    入力:最初の行はテスト例の個数Cを与える.2行目から、各テストケースには、学生数N(1≦N≦1000、Nは整数)の最初の数字が与えられ、次いでN名の点数が与えられる.分数が0以上、100以下の整数.
    出力:各場合、平均値の1行を超える学生の比率を四捨五入し、小数点を3位に出力します.
    cases_ = int(input())
    for i in range(cases_):
        k = list(map(int, input().split()))
        _average = (sum(k) - k[0]) / k[0]
        _count = 0
        for j in range(1, k[0]+1):
            if k[j] > _average:
                _count += 1
        print("{0:.3f}".format(_count/k[0]*100))
    学習:
  • 入力値はリスト形式で記入できます.list(map(int, input().split()))
  • 小数点の3桁目を反映する場合は「{0:.nf}」です.formatを用いて,表現する変数や数字をformat後括弧に記入すればよい.
  • rangeによって範囲が常に(より大きいかより小さいか)であることを決定し、
  • を解放する.
    質問:
    セルフサービス番号は1949年にインドの数学者D.R.Kaprekarによって命名された.正の整数nについて、d(n)がnおよびnの各ビット数の関数を定義する.例えば、d(75)=75+7+5=87である.
    正の整数nが与えられると、その数からn、d(n)、d(d(n)、d(d(d(n))、...無限数列を生成できます.
    たとえば、33で始まると、次の数字は33+3+3=39、次の数字は39+3+9=51、次の数字は51+5+1=57となります.このようにして、次の数の列を生成できます.
    33, 39, 51, 57, 69, 84, 96, 111, 114, 120, 123, 129, 141, ...
    nをd(n)の生成者と呼ぶ.上の数列において、33は39の生成者、39は51の生成者、51は57の生成者である.生成者が1つより多い場合もあります.例えば、101には2つの構造関数(91および100)がある.
    生成されていない数字を自動番号と呼びます.100未満のセルフサービス番号は全部で13個です.1, 3, 5, 7, 9, 20, 31, 42, 53, 64, 75, 86, 97
    10000以下のセルフ・サービス番号を出力するプログラムを作成します.
    入力
    入力していません.
    しゅつりょく
    10000以下の自己符号を行ごとに1つ追加する順序で出力します.
    list1 = list()
    def d(N):
        for i in str(N):
            N+= int(i)
        return list1.append(N)
    
    for i in range(1, 10001):
        d(i)
        if i not in list1:
            print(i)
    学習:
  • listをグローバル変数として指定することで、値を積み重ね、要素にiが存在するかどうかを順番に検索する論理プロセス
  • を学習します.
  • 関数(構文の関数)
  • を使用
    質問する
    アルファベットの大文字と小文字の単語を指定した場合は、この単語で最も使用されるアルファベットが何であるかを決定するプログラムを作成します.ただし、大文字と小文字は区別されません.
    入力
    最初の行には、アルファベットの大文字と小文字からなる単語が表示されます.与えられた単語の長さは10万を超えない.
    しゅつりょく
    最初の行は、この語で最も多く使われているアルファベットを大文字で出力します.しかし、最も使用頻度の高いアルファベットが複数存在する場合?出力します.
        
    from collections import Counter
    word = list(input().upper())
    frequency = Counter(word)
    list1 = []
    for name, value in frequency.items():
        if value == max(frequency.values()):
            list1.append(name)
    
            if len(list1) > 1:
                break
        if len(list1) == 1:
            print(name)
        else:
            print('?')
    学習:

  • counter()関数:リスト内の変数の周波数をバイナリ形式で出力します.

  • items():キー値をペアにしてリスト形式で返す構造.dickshernerは順序性がないため、for文を直接使用することはできません.items()関数を使用する必要があります.
  • 質問する
    以前はオペレーティングシステムでクロアチア文字を入力できませんでした.したがって、クロアチア文字の入力は次のように変更します.
    クロアチア文字の変更
    č c=
    ć c-
    dž dz=
    đ d-
    lj lj
    nj nj
    š s=
    ž z=
    例えばljes=njakには6つのクロアチア文字(lj,e,š, nj,a,kからなる.単語が与えられると、出力はいくつかのクロアチア文字で構成されます.
    džアルファベット、dとž分離とは思えない.ljもnjも同じです.上のカタログにないアルファベットは、一字一字数えています.
    入力
    最初の行には最大100文字の単語があります.小文字「-」、「=」で構成されています.
    単語はクロアチア文字で構成されています.質問説明表のアルファベットを変更形式で入力します.
    しゅつりょく
    入出力所与の単語はいくつかのクロアチア文字からなる.
    croatia_list = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=']
    word = input()
    for croatia_word in croatia_list:
        if croatia_word in word:
            word.replace(croatia_list, 'a')
    print(len(word)) 
  • ラーニング:replace関数を使用して文字を繰り返さないように変更した後、
  • を計算します.
  • len(リスト、文字列)の2つを使用してください.非常に役に立つ