Python 2.7.12-如何为新字符串和字母设置相同的长度?

时间:2016-11-05 17:07:06

标签: python string

我刚刚开始学习Python 2.7.12并且在我的第一个作业中我得到了一个名为str2的字符串,我应该创建另一个字符串,其长度与前一个字符串相同。另外,我需要检查第三个字母(如果它是一个Upper我需要转换为更低和相反,以及如果它不是一个字母,我需要用'%'来改变它)。 第一个字符串的其他字符应该复制到第二个字符串。

我们只获得了基本的赞扬而没有别的,所以我无法真正解决它。请帮我! :)

1 个答案:

答案 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)