0

テキスト ファイルから 1 人以上の人の名前とさまざまなゲームでのスコアを取得するテーブルを作成し、各人のスコアの平均、最小、最大を見つけて表示する必要があります。

編集-ここに私の現在のコードがあります:

    while name!='':
    floor=text_file.readline().rstrip()
    rings=text_file.readline().rstrip()
    p_bars=text_file.readline().rstrip()
    p_horse=text_file.readline().rstrip()
    h_bar=text_file.readline().rstrip()


    floor_int=int(floor)
    rings_int=int(rings)
    p_bars_int=int(p_bars)
    p_horse_int=int(p_horse)
    h_bar_int=int(h_bar)

    score_sum=floor_int+rings_int+p_bars_int+p_horse_int+h_bar_int
    avg=score_sum/5    

番号のある行を計算し、名前のある行を除外するにはどうすればよいですか?

編集: そのコードを実行すると、次のようになります: TypeError: 'float' オブジェクトを str に暗黙的に変換できません

何か案は?

4

2 に答える 2

1

あなたの数字が10進数の場合、これを行うことができます:

if line.isdigit():
    my_number = int(line)
于 2012-11-16T01:26:23.917 に答える
0

「リング」が数字を持つ行であると仮定すると、int または float オブジェクトを作成することでそれらすべてを追加できます。次に例を示します。

rings=rings.rstrip('\n')
rings_int = int(rings)
sum_of_rings += rings_int

行内に数字とその他のテキストが混在している場合は、正規表現を使用して最初に数字の部分を取り出します。

import re

m = re.search('\d+', rings)
if m:
    rings_int_str = m.group()
    rings_int = int( rings_int_str )
    sum_of_rings += rings_int

これを明確にするために多くの個別の変数を使用しますが、次のように手順を組み合わせることができます。

sum_of_rings += int( text_file.readline() )

PS そのエラーが発生している場合は、何らかの方法で avg を文字列に変換せずに出力しようとしている print ステートメントにある可能性があります。これらの作品のいずれか:

avg=score_sum/5.0
print "%f" % (avg)
print str(avg)
于 2012-11-16T01:31:50.613 に答える