0

私はPython(2日目)が初めてで、ASCIIファイルを読み取り(入力としてファイル名を要求する)、2つ以上の単語があるかどうかを確認し、最初の2つの単語を出力するプログラムを作成するように求める問題に取り組んでいます画面上のファイル。

少しあいまいですが、ファイルはすべてスペースで区切られた str であると仮定します。

元。

text1 text2 text text text

これまでのところ、私は持っています:

name = (raw_input("Please enter the name of the file: "))
f=open(name)
with codecs.open(name, encoding='utf-8') as f:
    for line in f:
        line = line.lstrip(BOM)
words=line.split()
print words
if len(words) > 2:
    print 'There are more than two words'
    firsttow = words[:2]
    print firstrow

私はelseステートメントを書くのに問題があります。

if len(words) > 2:
    print 'There are more than two words'
    firsttow = words[:2]
print firstrow
else: 
if len(words) <2:
        print 'There are under 2 words, no words will be shown'

これをどのように追加する必要がありますか?この質問のコードを改善する他の方法はありますか? 本当に助かります

前もって感謝します

*編集: 助けてくれてありがとう、私が最後に抱えていた問題は、.py ファイルを実行したときでした。cmd ウィンドウが閉じる前に結果を確認できるようにしたいのです。

追加:raw_input("Press return to close this window...")機能せず、すぐに閉じます。何か案は?

Edit2* これは私の現在のコードで、後で cmd ウィンドウを開こうとしています。

import codecs
BOM = codecs.BOM_UTF8.decode('utf8')
name = (raw_input("Please enter the name of the file: "))

with codecs.open(name, encoding='utf-8') as f:
    words=[]            #define words here
    for line in f:
        line = line.lstrip(BOM)
        words.extend(line.split())        #append words from each line to words  

if len(words) > 2:
    print 'There are more than two words'
    firstrow = words[:2]
    print firstrow                #indentation problem here
elif len(words) <2:                    #use if
    print 'There are under 2 words, no words will be shown'

raw_input("Press return to close this window...")
4

2 に答える 2

1

そのコードは次のように記述する必要があります。

if len(words) > 2:
    print 'There are more than two words'
    firsttow = words[:2]
    print firstrow
elif len(words) <2:
    print 'There are under 2 words, no words will be shown'

インデントとelif(「else if」を意味する) の使用に注意してください。

于 2012-09-24T16:02:01.810 に答える
0
with codecs.open(name, encoding='utf-8') as f:
    words=[]            #define words here
    for line in f:
        line = line.lstrip(BOM)
        words.extend(line.split())        #append words from each line to words      

if len(words) > 2:
    print 'There are more than two words'
    firsttow = words[:2]
    print firstrow                #indentation problem here
if len(words) <2:                    #use if
    print 'There are under 2 words, no words will be shown'
于 2012-09-24T16:06:22.450 に答える