我有以下代码:

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)(并在开头添加导入字符串),也会发生同样的情况。有人能告诉我我做错了什么吗?

最佳答案

字符串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

关于python - string.upper(<str>)和<str> .upper()无法执行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9461071/

10-11 15:25