2017-07-03 13 views
-2

私はプログラミング(Python)を新しく学び、このスクリプトを最もうまく実装する方法をアドバイスしています。私はいくつかのゴスを与えているが、私はそれが最初から間違っているかもしれないと思う。Pythonのデザイン - 数字がシーケンス内に現れる回数を追跡し、複数のシーケンスを反復する

私はテキストファイルを持っています。それはラインで複数の宝くじ抽選番号が含まれています

1, 2, 3, 4, 5 
6, 4, 2, 3, 5 
... 

私は各行にそれぞれの値を読むのが好き、そして各ラインのために特定の数の出現のカウントを続けるだろう。

その後、各行をチェックして出現回数を数えた後、最小限に引っ張られたボールをチェックできるようにしたいと思います。これは、私がライン1をチェックした後、6から50のボールが引っ張られなかったことを知る必要があることを意味します。

私のアプローチは、オブジェクトボールで

Ball: 
def __init__ (self, name): 
    Ball.name = name 

def count_Occurance() 
    Count() 

をスクリプトを作成することであった

それから私は、テキストファイルを読み取る行に分割し、個々の値にそれぞれの行を分割:

Read("lottoresults.txt", "r") 
line = readline.split("/n") 

それから作成して配列する

line_array = [line] 

次に、存在するすべてのボールの配列を作成しますその後

ball_array = range(1,50) 

私はline_array間の交差を実行して、ボールがmy_arrayで内数と一致しました引っ張った場合

をball_array、私はそれが名前だとして値(V)とボールオブジェクトのインスタンスを作成します。

for each v in line_array: 
PulledBall = Ball(v) 

その後、私は

PulledBall.countOccurance() 

それをカウントする方法をT呼び出します彼の最善の方法は何ですか?私は現在、それぞれのステップを正しく行う方法を学んでいますが、全体的なアプローチが間違っていると、やり直してよりうまくやります。

+1

コードに構文エラーがあります。あなたはこれを実行しようとしましたか? –

+0

申し訳ありませんが、私はそれを言うことを意味しました - 私はかなりプログラミングに新しいです、そして私自身のPCではありませんでした。私はこれをメモリから書きました。接近法を伝えるために書かれています –

答えて

-1
from collections import Counter 

with open("lottoresults.txt") as inf: 
    nums = [int(i) for i in inf.read().replace(",", "").split()] 

counts = Counter(nums) 
+0

おかげでヒュー - 本当にうまくいくが、正確な行の数がわかる。 "inf.read()。replace("、 "、" \ n ")。split()"というセクションに "\ n"を追加して、行の後の個々の値の行数を返します。 –

+0

これは奇妙です - この正確なコードをIDLE(Python 3.5)にカットアンドペーストしてテストファイルに対して実行すると、個々の数値(行ではない)がカウントされるためです。 –

関連する問題