我刚刚开始学习Python 2.7.12并且在我的第一个作业中我得到了一个名为str2的字符串,我应该创建另一个字符串,其长度与前一个字符串相同。另外,我需要检查第三个字母(如果它是一个Upper我需要转换为更低和相反,以及如果它不是一个字母,我需要用'%'来改变它)。 第一个字符串的其他字符应该复制到第二个字符串。
我们只获得了基本的赞扬而没有别的,所以我无法真正解决它。请帮我! :)
答案 0 :(得分:0)
听起来你想要一个单词的副本,但你需要改变第三个字符。这是一个问题,因为字符串在python中是不可变的,所以你不能只改变那个字符。诀窍是将字符串复制到您可以更改的内容。
tmp = list(str2)
然后,您需要弄清楚如何获取有关该角色的信息以进行检查。事实证明,字符串对象有几种有用的方法:
>>> dir('some string')
['__add__', '__class__', '__contains__', '__delattr__', '__dir__',
'__doc__', '__eq__', '__format__', '__ge__', '__getattribute__',
'__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__',
'__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__',
'__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__',
'__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize',
'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find',
'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal',
'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace',
'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans',
'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit',
'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title',
'translate', 'upper', 'zfill']
所以用它们来更新值
>>> if tmp[2].isupper():
... tmp[2] = tmp[2].lower()
... elif tmp[2].islower():
... tmp[2] = tmp[2].upper()
... elif tmp[2].isdigit():
... tmp[2] = '%'
...
你可以用
使其更加紧凑>>> tmp[2] = (tmp[2].lower() if tmp[2].isupper()
else tmp[2].upper() if tmp[2].islower()
else '%' if tmp[2].isdigit else tmp[2])
最后,把它们全部重新组合起来
>>> str3 = ''.join(tmp)