string.upper(<str>)和<str> .upper()不会执行</str> </str>

时间:2012-02-27 06:47:37

标签: python string operation

我有以下代码:

def test():
    fragment = ''
    fragment = raw_input('Enter input')
    while fragment not in string.ascii_letters:
        fragment = raw_input('Invalid character entered, try again: ')
    fragment.upper()
    print fragment*3

然而,当我运行它时,假设输入值为pfragment打印为'ppp' - 全部小写,即fragment.upper()行不运行。如果我用string.upper(fragment)替换该行(并在开头添加导入字符串),也会发生同样的情况。有人能告诉我我做错了吗?

3 个答案:

答案 0 :(得分:14)

字符串为immutable。因此str.upper()等函数不会修改str但会返回一个新字符串。

>>> name = "xyz"
>>> name.upper()
'XYZ'
>>> print name
xyz  # Notice that it's still in lower case.
>>> name_upper = name.upper()
>>> print name_upper
XYZ

因此,代码中不是fragment.upper(),而是new_variable = fragment.upper(),然后使用new_variable

答案 1 :(得分:7)

你没有意识到Python中的字符串是不可变的,字符串方法和操作会返回新的字符串。

>>> print 'ppp'.upper()
PPP

答案 2 :(得分:3)

String是一个不可变对象,所以当你调用

string.upper()

python会复制字符串,当你回来时调用

print string

,它将是原始字符串,它是小写字母。因此,当您需要大写版本时,您必须说:

print string.upper()