两个相同的字符变成大写而不是一个python

时间:2012-11-15 07:47:29

标签: python-2.7

我试图通过对数组中的每个字符进行大写操作来操作一个单词,但是当涉及到具有两个相同字符的单词时,它会使它们都大写而不是只有一个。不是程序员只是想学习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

3 个答案:

答案 0 :(得分:0)

answerWord.replace('X', 'Y')会在您的字符串中将X的所有实例替换为Y。因此,程序的第6行将使用整个单词answerWord,并将其当前正在考虑的字母的所有实例替换为其大写的等效项。

从您的变量名称看来,您希望变量letter是单个字母,而不是整个单词。也许你的意思是第6行读取类似的内容:

letter = answer[x].upper()

玩得开心!

答案 1 :(得分:0)

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

答案 2 :(得分: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

那应该做的事情,它将每个字母逐个更改为大写,然后打印它们。此外,在您的示例中,如果您使用一个已经包含大写字母的单词(例如'Peanuts'),则会引发错误,因为“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:]