我有以下代码:
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
然而,当我运行它时,比如对于输入值
p
,fragment
将被打印为“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/