2017-05-22 11 views
0

私はPython trough Coursera(Dr. Chuck!)を学習していて、宿題の外で初めての「便利な」個人的なスクリプトを完成させました。単語リストから製品を作るPythonic方法

基本的に2つの単語/数字のリストを使用し、これらのアイテムからすべての可能な組み合わせを作成します。私はこれを使用して、古いパスワードで保護されたファイルを強制的に使用します。

このスクリプトは、何時間もの手間をかけて、最終的に機能しています。 私の質問は、これがPythonのコードを書く方法である場合です。それは最初から正しい方法で学ぶことが重要かもしれません。唯一の見直しが必要なコードを作業する

import itertools 

beginfile = open('/Users/Mat/Python/combinations/begin.txt') 
beginlist = [] 
for line in beginfile: 
    line = line.rstrip() 
    beginlist.append(line) 
    if line.islower(): 
     capital = line.title() 
     beginlist.append(capital) 

endfile = open('/Users/Mat/Python/combinations/end.txt') 
endlist = [] 
for line in endfile: 
    line = line.rstrip() 
    endlist.append(line) 

x = itertools.product(beginlist, endlist) 
counter = 0 
for i in x: 
    print("".join(i)) 
    counter += 1 

print ('TOTAL:', counter, 'items') 
+0

はStackOverflowのためにオフトピックですが、あなたは[SEのコードレビュー]の方が適しているコードとの良好な質問(HTTP持っている://codereview.stackexchangeを.com) – davedwards

+0

あなたはそのコースであなたのソリューションを開示しないように頼まれていませんか? – Mast

+0

私はそれを知らなかった、ダウンシフト。ヒントをありがとう! – mat

答えて

1
import itertools 

with open('/Users/Mat/Python/combinations/begin.txt') as beginfile: 
    beginlist = [line.rstrip().title() for line in beginfile if line.rstrip().islower()] 

with open('/Users/Mat/Python/combinations/end.txt') as endfile: 
    endlist = [line.rstrip() for line in endfile] 

x = itertools.product(beginlist, endlist) 
data = ["".join(i) for i in x] 

print ('TOTAL:', len(data), 'items') 
+0

これを試してもらえますか?これは私が考えることができるもっとも無邪気な方法です:P – pramod

+0

ファイルを閉じるか、より良い方法で 'with'コンテキストマネージャーを使用してください – Dalvenjia

+0

ありがとう!それはちょっと違っていますが、あなたがどこに行くのかが間違いなく分かりました。 違いは、私の元のスクリプトは、可能なパスワードのために必要だったリストの単語の小文字とタイトルケースバージョンの両方を入れていることです。さらに、それはまたリストを印刷しただけでなく長さも印刷しました。 しかし、まだ、素晴らしい仕事!本当にきちんとした解決策: – mat

関連する問題