0

私は Mac で作業していますが、python for look について質問があります。私はrectangle.txtという.txtファイルを使用しており、ファイル内は次のようになっています。

abcde
fghij
klmno

stdin を使用してこれらを読み取る必要があります。しかし、これが私のプログラムに必要なものです:

afk
bgl
chm
din
ejo

これまでのところ、すべての行を読み取り、分割して出力するプログラムがあります。 コード編集

So when I changed my code to this:

for line in sys.stdin.readline():
    ls1 = line
    print ls1

リストを受け取りました:

a
b
c
d
e

だから今、私はそれらの他のものをループする必要がありますが、それを理解することはできません

コマンドラインからこの関数を実行しています:

python rectangle.py < rectangle.txt

私はこれらすべてを学ぼうとしているので、答えを教えてくれる代わりに、誰かが私にこれを説明してくれるのを手伝ってほしいです。できれば私が理解できる方法で。

また、この .txt ファイルの入力に加えて。私のプログラムは、次の入力でもテストされます。

123
456
789

A
B
C

すべて上記と同じことをしています。私を助けてくれてありがとう。私はこれに何時間も取り組んできましたが、理解できないようです。

4

2 に答える 2

0

各行の入力は同じ長さでなければならないと思います。

この場合、入力文字列のリストと、これらの文字列ループの1つの長さがあります。

["abcde"、 "fghij"、 "kilmn"]ここから、各文字列の最初の文字のパターンについて何に気づきましたか?"a" + "f"+"k"。

于 2013-02-08T05:31:04.790 に答える
0

信頼できるzip機能が役立ちます。

>>> lines = ["abc", "def", "ghi"]
>>> result = [''.join(x) for x in zip(*lines)]
>>> result
['adg', 'beh', 'cfi']

説明: zipは、指定された各 iterable の要素を新しいリストに集約するという、まさに期待どおりのことを行います。iterable を個別に zip に渡す必要があり、リストとしてではあり*linesません。最後に、文字配列の配列ではなく、文字列の配列が必要なため、単一の文字配列を結合するだけです。

于 2013-02-08T05:15:51.020 に答える