-5

だから私はこの小さなコードを持っていますが、それはうまくいきません:

 while c<b:
     str2 += str1[c]
     c+=1

print str2

b は str2 にコピーしたい str1 の長さで、c は str1 から転送を開始したいポイントです。その場合、while ループはすべての文字を str1 から str2 に転送することになっています。

何らかの理由で、str2 を出力できず、次のエラー メッセージが表示されないようです。

「NameError: 名前 'str2' が定義されていません」

私の推測では、単純な間違いをしているだけで、Python の実験を始めたばかりで、実際には C# しかやったことがありません。

4

4 に答える 4

4

より良いアプローチは、文字列をスライスすることです:

str2 = str1[c:b]

str1これにより、文字数から文字数cまでが にコピーbされstr2ます。

例えば:

>>> 'Hello World'[3:7]
'lo W'

ここでは、Python のスライス表記について少し説明します: Python のスライス表記について説明します。

于 2012-08-05T23:08:32.607 に答える
2

初期化する必要がありますstr2

str2 = ''
while c<b:
    str2 += str1[c]
    c+=1

print str2

またはstr2、パラメーターとして受け取る関数を実行します。

def myfunc(str2=''):
    while c<b:
        str2 += str1[c]
        c+=1

    return str2

ここで、str2パラメータはデフォルトで''、つまり空の文字列として初期化されます。

于 2012-08-05T23:07:15.990 に答える
0

次の行で何かを使用しない理由:

str2 = str1[c:]
于 2012-08-05T23:09:45.837 に答える
0

str2 += str1[c]

あなたは、「str1 [c]を追加してください」と言っていstr2ます..問題は、str2何も初期化していないことです(少なくとも、表示されているコードでは)。

最も簡単な修正はstr2、ループで使用する前に初期値を与えることです。たとえば、str2=''

于 2012-08-05T23:08:39.307 に答える