1

配列内の各文字を大文字にして単語を操作しようとしていますが、同じ文字が 2 つ含まれる単語になると、1 つだけではなく両方が大文字になります。Pythonを学ぼうとしているだけのプログラマーではありません。少し早いですがお礼を!

answer = raw_input("What is your word? ")
x = 0
answerWord = ''.join(answer)
while (x < len(answer)):
    if (answerWord[x] != answerWord[x].upper()):
        letter = answerWord.replace(answer[x], answer[x].upper())
    print letter
    x = x + 1

What is your word? boot
Boot
bOOt
bOOt
booT

What is your word? crazy
Crazy
cRazy
crAzy
craZy
crazY
4

3 に答える 3

0

answerWord.replace('X', 'Y')文字列内のすべてのインスタンスをXwithに置き換えYます。したがって、プログラムの 6 行目は単語全体answerWordを取得し、現在検討している文字のすべてのインスタンスを大文字に置き換えます。

変数名から、変数letterを単語全体ではなく 1 文字にするつもりだったようです。おそらく、6行目は次のようなものを意味していました。

letter = answer[x].upper()

楽しむ!

于 2012-11-15T07:53:39.970 に答える
0
for i in range(len(answer)):
    print answer[0:i]+answer[i].upper()+answer[i+1:]
于 2012-11-18T10:12:42.910 に答える
0
answer = raw_input("What is your word? ")

for char in range(len(answer)):
    letter = answer[0:char] + answer[char].upper() + answer[char+1:]
    print letter

すべての文字を 1 つずつ大文字に変更してから、それらを印刷します。また、あなたの例では、すでに大文字を含む単語 (「ピーナッツ」など) を使用すると、「if」文が True ではないためletter未定義になるため、エラーが発生します。

大文字を小文字に、小文字を大文字にしたい場合などは、次のようにします。

answer = raw_input("What is your word? ")

for char in range(len(answer)):
    if answer[char] == answer[char].lower():
        letter = answer[0:char] + answer[char].upper() + answer[char+1:]
    else:
        letter = answer[0:char] + answer[char].lower() + answer[char+1:]
    print letter

また、letter印刷以外に使用しない場合は、両方の文字定義を単に印刷に置き換えて、print letter完全に削除することもできます。

if answer[char] == answer[char].lower():
    print answer[0:char] + answer[char].upper() + answer[char+1:]
else:
    print answer[0:char] + answer[char].lower() + answer[char+1:]
于 2012-11-18T10:34:27.907 に答える